diff --git a/Agda.cabal b/Agda.cabal
--- a/Agda.cabal
+++ b/Agda.cabal
@@ -1,6 +1,6 @@
 name:            Agda
-version:         2.5.1.2
-cabal-version:   >= 1.8
+version:         2.5.2
+cabal-version:   >= 1.10
 build-type:      Custom
 license:         OtherLicense
 license-file:    LICENSE
@@ -36,18 +36,22 @@
                     GHC == 7.8.4
                     GHC == 7.10.3
                     GHC == 8.0.1
-extra-source-files: src/full/undefined.h
+
+extra-source-files: CHANGELOG.md
                     README.md
-                    CHANGELOG
+                    src/full/undefined.h
+                    stack-7.8.4.yaml
+                    stack-8.0.1.yaml
+
 data-dir:           src/data
 data-files:         Agda.css
+                    agda.sty
                     emacs-mode/*.el
                     -- EpicInclude/AgdaPrelude.e
                     -- EpicInclude/stdagda.c
                     -- EpicInclude/stdagda.h
-                    agda.sty
-                    postprocess-latex.pl
-                    lib/prim/Agda/Primitive.agda
+                    JS/agda-rts.js
+                    JS/biginteger.js
                     lib/prim/Agda/Builtin/Bool.agda
                     lib/prim/Agda/Builtin/Char.agda
                     lib/prim/Agda/Builtin/Coinduction.agda
@@ -66,10 +70,14 @@
                     lib/prim/Agda/Builtin/String.agda
                     lib/prim/Agda/Builtin/TrustMe.agda
                     lib/prim/Agda/Builtin/Unit.agda
+                    lib/prim/Agda/Primitive.agda
+                    MAlonzo/src/MAlonzo/*.hs
+                    postprocess-latex.pl
                     uhc-agda-base/LICENSE
-                    uhc-agda-base/uhc-agda-base.cabal
                     uhc-agda-base/src/UHC/Agda/*.hs
-                    MAlonzo/src/MAlonzo/*.hs
+                    uhc-agda-base/src/UHC/Agda/double.c
+                    uhc-agda-base/src/UHC/Agda/double.h
+                    uhc-agda-base/uhc-agda-base.cabal
 
 source-repository head
   type:     git
@@ -77,8 +85,8 @@
 
 source-repository this
   type:     git
-  location: https://github.com/agda/agda/tree/v2.5.1.2
-  tag:      v2.5.1.2
+  location: https://github.com/agda/agda/tree/v2.5.2.
+  tag:      v2.5.2
 
 flag cpphs
   default:     True
@@ -91,12 +99,23 @@
   description:
     Enable the UHC backend. For details, consult the Agda User Manual.
 
+flag debug
+  default: False
+  manual: True
+  description:
+    Enable debugging features that may slow Agda down.
+
 library
   hs-source-dirs:   src/full
   include-dirs:     src/full
 
   if flag(cpphs)
-    build-tools: cpphs >= 1.19
+    -- We don't write an upper bound for cpphs because the
+    -- `build-tools` field can not be modified in Hackage.
+
+    -- If your change the lower bound of cpphs also change it in the
+    -- `.travis.yml` file [Issue #2315].
+    build-tools: cpphs >= 1.20.2
     ghc-options: -pgmP cpphs -optP --cpp
 
   if flag(uhc)
@@ -109,59 +128,60 @@
     -- definitions, see module Agda.Compiler.UHC.Bridge.
     cpp-options:    -DUHC_BACKEND
 
+  if flag(debug)
+    cpp-options:    -DDEBUG
+
   if os(windows)
     build-depends:  Win32 >= 2.2 && < 2.4
 
-  build-depends:
-    array >= 0.4.0.1 && < 0.6
-    , base >= 4.6.0.1 && < 4.10
-    , binary >= 0.7.2.1 && < 0.9
-    , boxes >= 0.1.3 && < 0.2
-    , bytestring >= 0.10.0.2 && < 0.11
-    , containers >= 0.5.0.0 && < 0.6
-    , data-hash >= 0.2.0.0 && < 0.3
-    , deepseq >= 1.3.0.1 && < 1.5
-    , directory >= 1.2.0.1 && < 1.3
-    -- Edison versioning scheme: http://rwd.rdockins.name/edison/home/.
-    -- EdisonAPI isn't used by Agda, but EdisonCore 1.3.1 doesn't
-    -- declare what version of EdisonAPI it depends on.
-    , EdisonAPI == 1.3
-    , EdisonCore >= 1.3.1.1 && < 1.3.2
-    , edit-distance >= 0.2.1.2 && < 0.3
-    , equivalence >= 0.2.5 && < 0.4
-    , filepath >= 1.3.0.1 && < 1.5
-    , geniplate-mirror >= 0.6.0.6 && < 0.8
-    -- 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.2.1.0 && < 1.3
-    -- 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.8 && < 1.2 || >= 1.2.0.2 && < 1.3
-    , haskeline >= 0.7.1.3 && < 0.8
-    , haskell-src-exts >= 1.16.0.1 && < 1.18
-    , monadplus >= 1.4 && < 1.5
-    -- 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
-    , QuickCheck >= 2.8.2 && < 2.9
-    , parallel >= 3.2.0.4 && < 3.3
-    -- 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.2 && < 1.5
-    , strict >= 0.3.2 && < 0.4
-    , template-haskell >= 2.8.0.0 && < 2.12
-    , text >= 0.11.3.1 && < 1.3
-    , time >= 1.4.0.1 && < 1.7
-    -- transformers 0.4.0.0 was deprecated.
-    , transformers >= 0.3 && < 0.4 || >= 0.4.1.0 && < 0.6
-    , transformers-compat >= 0.3.3.3 && < 0.6
-    , unordered-containers >= 0.2.5.0 && < 0.3
-    , xhtml >= 3000.2.1 && < 3000.3
+  build-depends:  array >= 0.4.0.1 && < 0.6
+                , base >= 4.6.0.1 && < 4.10
+                , binary >= 0.7.2.1 && < 0.9
+                , boxes >= 0.1.3 && < 0.2
+                , bytestring >= 0.10.0.2 && < 0.11
+                , containers >= 0.5.0.0 && < 0.6
+                , data-hash >= 0.2.0.0 && < 0.3
+                , deepseq >= 1.3.0.1 && < 1.5
+                , directory >= 1.2.0.1 && < 1.4
+                , EdisonCore >= 1.3.1.1 && < 1.3.2
+                , edit-distance >= 0.2.1.2 && < 0.3
+                , equivalence >= 0.2.5 && < 0.4
+                , filepath >= 1.3.0.1 && < 1.5
+                , geniplate-mirror >= 0.6.0.6 && < 0.8
+                , gitrev >= 1.2 && < 2.0
+                -- 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.2.1.0 && < 1.3
+                -- 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.8 && < 1.2 || >= 1.2.0.2 && < 1.3
+                , haskeline >= 0.7.1.3 && < 0.8
+                , ieee754 >= 0.7.8 && < 0.8
+                , monadplus >= 1.4 && < 1.5
+                -- 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
+                , murmur-hash >= 0.1 && < 0.2
+                , parallel >= 3.2.0.4 && < 3.3
+                -- 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.2 && < 1.5
+                , regex-tdfa >= 1.2.2 && < 1.3
+                , strict >= 0.3.2 && < 0.4
+                , template-haskell >= 2.8.0.0 && < 2.12
+                , text >= 0.11.3.1 && < 1.3
+                , time >= 1.4.0.1 && < 1.7
+                -- transformers 0.4.0.0 was deprecated.
+                , transformers >= 0.3 && < 0.4 || >= 0.4.1.0 && < 0.6
+                , transformers-compat >= 0.3.3.3 && < 0.6
+                , unordered-containers >= 0.2.5.0 && < 0.3
+                , xhtml >= 3000.2.1 && < 3000.3
 
   if impl(ghc < 7.8)
     build-depends: base-orphans >= 0.3.1 && < 0.5
@@ -175,6 +195,12 @@
   else
     build-depends: zlib >= 0.4.0.1 && < 0.7
 
+  if impl(ghc < 8.0)
+    -- provide/emulate `Control.Monad.Fail` and `Data.Semigroups` API
+    -- for pre-GHC8
+    build-depends:  fail == 4.9.*
+                  , semigroups == 0.18.*
+
   -- Agda doesn't build with Alex 3.2.0.
   build-tools:  alex >= 3.1.0 && < 3.2.0 || >= 3.2.1 && < 3.3
               , happy >= 1.19.4 && < 2
@@ -205,11 +231,9 @@
                     Agda.Compiler.Epic.Smashing
                     Agda.Compiler.Epic.Static
                     Agda.Compiler.HaskellTypes
-                    Agda.Compiler.JS.Case
                     Agda.Compiler.JS.Compiler
                     Agda.Compiler.JS.Syntax
                     Agda.Compiler.JS.Substitution
-                    Agda.Compiler.JS.Parser
                     Agda.Compiler.JS.Pretty
                     Agda.Compiler.MAlonzo.Compiler
                     Agda.Compiler.MAlonzo.Encode
@@ -217,10 +241,14 @@
                     Agda.Compiler.MAlonzo.Pretty
                     Agda.Compiler.MAlonzo.Primitives
                     Agda.Compiler.ToTreeless
+                    Agda.Compiler.Treeless.AsPatterns
                     Agda.Compiler.Treeless.Builtin
                     Agda.Compiler.Treeless.Compare
+                    Agda.Compiler.Treeless.DelayCoinduction
+                    Agda.Compiler.Treeless.EliminateLiteralPatterns
                     Agda.Compiler.Treeless.Erase
                     Agda.Compiler.Treeless.GuardsToPrims
+                    Agda.Compiler.Treeless.Identity
                     Agda.Compiler.Treeless.NormalizeNames
                     Agda.Compiler.Treeless.Pretty
                     Agda.Compiler.Treeless.Simplify
@@ -235,14 +263,12 @@
                     Agda.Compiler.UHC.Pragmas.Base
                     Agda.Compiler.UHC.Pragmas.Parse
                     Agda.Compiler.UHC.Primitives
-                    Agda.Compiler.UHC.Smashing
                     Agda.ImpossibleTest
                     Agda.Interaction.BasicOps
                     Agda.Interaction.SearchAbout
                     Agda.Interaction.CommandLine
                     Agda.Interaction.EmacsCommand
                     Agda.Interaction.EmacsTop
-                    Agda.Interaction.Exceptions
                     Agda.Interaction.FindFile
                     Agda.Interaction.Highlighting.Dot
                     Agda.Interaction.Highlighting.Emacs
@@ -273,16 +299,19 @@
                     Agda.Syntax.Concrete.Generic
                     Agda.Syntax.Concrete.Name
                     Agda.Syntax.Concrete.Operators.Parser
+                    Agda.Syntax.Concrete.Operators.Parser.Monad
                     Agda.Syntax.Concrete.Operators
                     Agda.Syntax.Concrete.Pretty
                     Agda.Syntax.Concrete
                     Agda.Syntax.Fixity
+                    Agda.Syntax.IdiomBrackets
                     Agda.Syntax.Info
                     Agda.Syntax.Internal
                     Agda.Syntax.Internal.Defs
                     Agda.Syntax.Internal.Generic
                     Agda.Syntax.Internal.Names
                     Agda.Syntax.Internal.Pattern
+                    Agda.Syntax.Internal.SanityCheck
                     Agda.Syntax.Literal
                     Agda.Syntax.Notation
                     Agda.Syntax.Parser.Alex
@@ -290,6 +319,7 @@
                     Agda.Syntax.Parser.Layout
                     Agda.Syntax.Parser.LexActions
                     Agda.Syntax.Parser.Lexer
+                    Agda.Syntax.Parser.Literate
                     Agda.Syntax.Parser.LookAhead
                     Agda.Syntax.Parser.Monad
                     Agda.Syntax.Parser.Parser
@@ -316,7 +346,6 @@
                     Agda.Termination.Semiring
                     Agda.Termination.TermCheck
                     Agda.Termination.Termination
-                    Agda.Tests
                     Agda.TheTypeChecker
                     Agda.TypeChecking.Abstract
                     Agda.TypeChecking.CheckInternal
@@ -338,7 +367,6 @@
                     Agda.TypeChecking.Free
                     Agda.TypeChecking.Free.Lazy
                     Agda.TypeChecking.Free.Old
-                    Agda.TypeChecking.Free.Tests
                     Agda.TypeChecking.Forcing
                     Agda.TypeChecking.Implicit
                     Agda.TypeChecking.Injectivity
@@ -359,6 +387,7 @@
                     Agda.TypeChecking.Monad.Env
                     Agda.TypeChecking.Monad.Exception
                     Agda.TypeChecking.Monad.Imports
+                    Agda.TypeChecking.Monad.Local
                     Agda.TypeChecking.Monad.MetaVars
                     Agda.TypeChecking.Monad.Mutual
                     Agda.TypeChecking.Monad.Open
@@ -375,7 +404,6 @@
                     Agda.TypeChecking.Polarity
                     Agda.TypeChecking.Positivity
                     Agda.TypeChecking.Positivity.Occurrence
-                    Agda.TypeChecking.Positivity.Tests
                     Agda.TypeChecking.Pretty
                     Agda.TypeChecking.Primitive
                     Agda.TypeChecking.ProjectionLike
@@ -384,6 +412,7 @@
                     Agda.TypeChecking.RecordPatterns
                     Agda.TypeChecking.Records
                     Agda.TypeChecking.Reduce
+                    Agda.TypeChecking.Reduce.Fast
                     Agda.TypeChecking.Reduce.Monad
                     Agda.TypeChecking.Rewriting
                     Agda.TypeChecking.Rewriting.NonLinMatch
@@ -394,6 +423,7 @@
                     Agda.TypeChecking.Rules.Def
                     Agda.TypeChecking.Rules.Display
                     Agda.TypeChecking.Rules.LHS
+                    Agda.TypeChecking.Rules.LHS.AsPatterns
                     Agda.TypeChecking.Rules.LHS.Implicit
                     Agda.TypeChecking.Rules.LHS.Instantiate
                     Agda.TypeChecking.Rules.LHS.Problem
@@ -413,15 +443,13 @@
                     Agda.TypeChecking.SizedTypes
                     Agda.TypeChecking.SizedTypes.Solve
                     Agda.TypeChecking.SizedTypes.Syntax
-                    Agda.TypeChecking.SizedTypes.Tests
                     Agda.TypeChecking.SizedTypes.Utils
                     Agda.TypeChecking.SizedTypes.WarshallSolver
                     Agda.TypeChecking.Substitute
-                    Agda.TypeChecking.Substitute.Pattern
+                    Agda.TypeChecking.Substitute.Class
+                    Agda.TypeChecking.Substitute.DeBruijn
                     Agda.TypeChecking.SyntacticEquality
                     Agda.TypeChecking.Telescope
-                    Agda.TypeChecking.Test.Generators
-                    Agda.TypeChecking.Tests
                     Agda.TypeChecking.Unquote
                     Agda.TypeChecking.With
                     Agda.Utils.AssocList
@@ -440,9 +468,9 @@
                     Agda.Utils.Function
                     Agda.Utils.Geniplate
                     Agda.Utils.Graph.AdjacencyMap.Unidirectional
-                    Agda.Utils.Graph.AdjacencyMap.Unidirectional.Tests
                     Agda.Utils.Hash
                     Agda.Utils.HashMap
+                    Agda.Utils.Haskell.Syntax
                     Agda.Utils.Impossible
                     Agda.Utils.IO.Binary
                     Agda.Utils.IO.Directory
@@ -452,7 +480,6 @@
                     Agda.Utils.Lens.Examples
                     Agda.Utils.List
                     Agda.Utils.ListT
-                    Agda.Utils.ListT.Tests
                     Agda.Utils.Map
                     Agda.Utils.Maybe
                     Agda.Utils.Maybe.Strict
@@ -463,16 +490,13 @@
                     Agda.Utils.Parser.ReadP
                     Agda.Utils.PartialOrd
                     Agda.Utils.Permutation
-                    Agda.Utils.Permutation.Tests
                     Agda.Utils.Pointer
                     Agda.Utils.Pretty
-                    Agda.Utils.QuickCheck
                     Agda.Utils.SemiRing
                     Agda.Utils.Singleton
                     Agda.Utils.Size
                     Agda.Utils.String
                     Agda.Utils.Suffix
-                    Agda.Utils.TestHelpers
                     Agda.Utils.Time
                     Agda.Utils.Trie
                     Agda.Utils.Tuple
@@ -480,12 +504,20 @@
                     Agda.Utils.VarSet
                     Agda.Utils.Warshall
                     Agda.Version
+                    Agda.VersionCommit
 
   other-modules:    Paths_Agda
 
+  -- Initially, we disable all the warnings.
+  ghc-options: -w
+
+  -- This option must be the first one after disabling the warnings. See
+  -- Issue #2094.
+  if impl(ghc >= 8.0)
+    ghc-options: -Wunrecognised-warning-flags
+
   if impl(ghc >= 7.6.3)
-    ghc-options: -w
-                 -fwarn-deprecated-flags
+    ghc-options: -fwarn-deprecated-flags
                  -fwarn-dodgy-exports
                  -fwarn-dodgy-foreign-imports
                  -fwarn-dodgy-imports
@@ -496,7 +528,6 @@
                  -fwarn-missing-fields
                  -fwarn-missing-methods
                  -fwarn-missing-signatures
-                 -fwarn-orphans
                  -fwarn-tabs
                  -fwarn-overlapping-patterns
                  -fwarn-unrecognised-pragmas
@@ -512,6 +543,8 @@
 
   if impl(ghc >= 7.10)
      ghc-options: -fwarn-unticked-promoted-constructors
+                  -- Enable after removing the support for GHC 7.8.
+                  -- -fwarn-deriving-typeable
 
   -- This option is deprected in GHC 7.10.1.
   if impl(ghc >= 7.8) && impl(ghc < 7.10)
@@ -530,16 +563,40 @@
     ghc-options: -fwarn-context-quantification
 
   if impl(ghc >= 8.0)
-    ghc-options: -Wnoncanonical-monad-instances
+    ghc-options: -Wmissing-pattern-synonym-signatures
+                 -Wnoncanonical-monad-instances
+                 -Wnoncanonical-monoid-instances
+                 -Wsemigroup
+                 -Wunused-foralls
 
+  default-language: Haskell2010
+  default-extensions: ConstraintKinds
+                    , DataKinds
+                    , DefaultSignatures
+                    , DeriveFunctor
+                    , DeriveFoldable
+                    , DeriveTraversable
+                    , ExistentialQuantification
+                    , FlexibleContexts
+                    , FlexibleInstances
+                    , FunctionalDependencies
+                    , LambdaCase
+                    , MultiParamTypeClasses
+                    , NamedFieldPuns
+                    , RankNTypes
+                    , RecordWildCards
+                    , StandaloneDeriving
+                    , TupleSections
+                    , TypeSynonymInstances
+
 executable agda
   hs-source-dirs: src/main
   main-is:        Main.hs
-  build-depends:
-    Agda == 2.5.1.2
-    -- Nothing is used from the following package, except for the
-    -- prelude.
-    , base >= 4.6.0.1 && < 6
+  build-depends:  Agda == 2.5.2
+                  -- Nothing is used from the following package,
+                  -- except for the prelude.
+                , base >= 4.6.0.1 && < 6
+  default-language: Haskell2010
   if impl(ghc >= 7)
     -- If someone installs Agda with the setuid bit set, then the
     -- presence of +RTS may be a security problem (see GHC bug #3910).
@@ -552,26 +609,8 @@
   hs-source-dirs:   src/agda-mode
   main-is:          Main.hs
   other-modules:    Paths_Agda
-  build-depends:
-    base >= 4.6.0.1 && < 4.10
-    , directory >= 1.2.0.1 && < 1.3
-    , filepath >= 1.3.0.1 && < 1.5
-    , process >= 1.1.0.2 && < 1.5
-
-executable agda-ghc-names
-  hs-source-dirs:   src/agda-ghc-names
-  main-is:          agda-ghc-names.hs
-  other-modules:    ExtractNames
-                    , Find
-                    , FixProf
-                    , ResolveHsNames
-  build-depends:
-    base >= 4.6.0.1 && < 4.10
-    , binary >= 0.7.2.1 && < 0.9
-    , containers >= 0.5.0.0 && < 0.6
-    , filemanip >= 0.3.6.3 && < 0.4
-    , haskell-src-exts >= 1.16.0.1 && < 1.18
-    , mtl >= 2.1.1 && <= 2.1.3.1 || >= 2.2.1 && < 2.3
-    , filepath >= 1.3.0.1 && < 1.5
-  ghc-options:  -rtsopts
-
+  build-depends:    base >= 4.6.0.1 && < 4.10
+                  , directory >= 1.2.0.1 && < 1.4
+                  , filepath >= 1.3.0.1 && < 1.5
+                  , process >= 1.1.0.2 && < 1.5
+  default-language: Haskell2010
diff --git a/CHANGELOG b/CHANGELOG
deleted file mode 100644
--- a/CHANGELOG
+++ /dev/null
@@ -1,6677 +0,0 @@
-------------------------------------------------------------------------
--- Release notes for Agda version 2.5.1.2
-------------------------------------------------------------------------
-
-* Fixed broken type signatures that were incorrectly accepted due to
-  GHC #12784 (https://ghc.haskell.org/trac/ghc/ticket/12784).
-
-------------------------------------------------------------------------
--- Release notes for Agda version 2.5.1.1
-------------------------------------------------------------------------
-
-Important changes since 2.5.1:
-
-Installation and infrastructure
-===============================
-
-* Added support for GHC 8.0.1.
-
-Bug fixes
-=========
-
-* Fixed a serious performance problem with instance search
-
-  Issues #1952 and #1998. Also related: #1955 and #2025
-
-* Interactively splitting variable with C-c C-c no longer introduces
-  new trailing patterns.  This fixes issue #1950.
-
-    data Ty : Set where
-      _⇒_ : Ty → Ty → Ty
-
-    ⟦_⟧ : Ty → Set
-    ⟦ A ⇒ B ⟧ = ⟦ A ⟧ → ⟦ B ⟧
-
-    data Term : Ty → Set where
-      K : (A B : Ty) → Term (A ⇒ (B ⇒ A))
-
-    test : (A : Ty) (a : Term A) → ⟦ A ⟧
-    test A a = {!a!}
-
-  Before change, case splitting on `a` would give
-
-    test .(A ⇒ (B ⇒ A)) (K A B) x x₁ = ?
-
-  Now, it yields
-
-    test .(A ⇒ (B ⇒ A)) (K A B) = ?
-
-* Other issues fixed ( see https://github.com/agda/agda/issues ):
-  - #1322 (Missing error for attempted higher order instance)
-  - #1951 (mixfix binders not working in 'syntax')
-  - #1967 (too eager insteance search error)
-  - #1974 (lost constraint dependencies)
-  - #1982 (internal error in unifier)
-  - #2034 (function type instance goals)
-
-Compiler backends
-=================
-
-* UHC compiler backend
-
-  Added support for UHC 1.1.9.4.
-
-------------------------------------------------------------------------
--- Release notes for Agda version 2.5.1
-------------------------------------------------------------------------
-
-Important changes since 2.4.2.5:
-
-Documentation
-=============
-
-* There is now an official Agda User Manual:
-  http://agda.readthedocs.org/en/stable/
-
-Installation and infrastructure
-===============================
-
-* Builtins and primitives are now defined in a new set of modules available to
-  all users, independent of any particular library. The modules are
-
-    Agda.Builtin.Bool
-    Agda.Builtin.Char
-    Agda.Builtin.Coinduction
-    Agda.Builtin.Equality
-    Agda.Builtin.Float
-    Agda.Builtin.FromNat
-    Agda.Builtin.FromNeg
-    Agda.Builtin.FromString
-    Agda.Builtin.IO
-    Agda.Builtin.Int
-    Agda.Builtin.List
-    Agda.Builtin.Nat
-    Agda.Builtin.Reflection
-    Agda.Builtin.Size
-    Agda.Builtin.Strict
-    Agda.Builtin.String
-    Agda.Builtin.TrustMe
-    Agda.Builtin.Unit
-
-  The standard library reexports the primitives from the new modules.
-
-  The Agda.Builtin modules are installed in the same way as Agda.Primitive,
-  but unlike Agda.Primitive they are not loaded automatically.
-
-Pragmas and options
-===================
-
-* Library management
-
-  There is a new 'library' concept for managing include paths. A library
-  consists of
-    - a name,
-    - a set of libraries it depends on, and
-    - a set of include paths.
-
-  A library is defined in a .agda-lib file using the following format:
-
-    name: LIBRARY-NAME  -- Comment
-    depend: LIB1 LIB2
-      LIB3
-      LIB4
-    include: PATH1
-      PATH2
-      PATH3
-
-  Dependencies are library names, not paths to .agda-lib files, and
-  include paths are relative to the location of the library-file.
-
-  To be useable, a library file has to be listed (with its full path) in
-  AGDA_DIR/libraries (or AGDA_DIR/libraries-VERSION, for a given Agda
-  version). AGDA_DIR defaults to ~/.agda on unix-like systems
-  and C:/Users/USERNAME/AppData/Roaming/agda or similar on Windows, and can be
-  overridden by setting the AGDA_DIR environment variable.
-
-  Environment variables in the paths (of the form $VAR or ${VAR}) are
-  expanded. The location of the libraries file used can be overridden using the
-  --library-file=FILE flag, although this is not expected to be very useful.
-
-  You can find out the precise location of the 'libraries' file by
-  calling 'agda -l fjdsk Dummy.agda' and looking at the error message (assuming
-  you don't have a library called fjdsk installed).
-
-  There are three ways a library gets used:
-
-    - You supply the --library=LIB (or -l LIB) option to Agda. This is
-      equivalent to adding a -iPATH for each of the include paths of LIB
-      and its (transitive) dependencies.
-
-    - No explicit --library flag is given, and the current project root
-      (of the Agda file that is being loaded) or one of its parent directories
-      contains a .agda-lib file defining a library LIB. This library is used as
-      if a --librarary=LIB option had been given, except that it is not
-      necessary for the library to be listed in the AGDA_DIR/libraries file.
-
-    - No explicit --library flag, and no .agda-lib file in the project
-      root. In this case the file AGDA_DIR/defaults is read and all
-      libraries listed are added to the path. The defaults file should
-      contain a list of library names, each on a separate line. In this
-      case the current directory is also added to the path.
-
-      To disable default libraries, you can give the flag
-      --no-default-libraries.
-
-  Library names can end with a version number (for instance,
-  mylib-1.2.3). When resolving a library name (given in a --library
-  flag, or listed as a default library or library dependency) the
-  following rules are followed:
-
-    - If you don't give a version number, any version will do.
-    - If you give a version number an exact match is required.
-    - When there are multiple matches an exact match is preferred, and
-      otherwise the latest matching version is chosen.
-
-  For example, suppose you have the following libraries installed:
-  mylib, mylib-1.0, otherlib-2.1, and otherlib-2.3. In this case, aside
-  from the exact matches you can also say --library=otherlib to get
-  otherlib-2.3.
-
-* New Pragma COMPILED_DECLARE_DATA for binding recursively defined
-  Haskell data types to recursively defined Agda data types.
-
-  If you have a Haskell type like
-
-    {-# LANGUAGE GADTs #-}
-
-    module Issue223 where
-
-    data A where
-      BA :: B -> A
-
-    data B where
-      AB :: A -> B
-      BB :: B
-
-  You can now bind it to corresponding mutual Agda inductive data
-  types as follows:
-
-    {-# IMPORT Issue223 #-}
-
-    data A : Set
-    {-# COMPILED_DECLARE_DATA A Issue223.A #-}
-    data B : Set
-    {-# COMPILED_DECLARE_DATA B Issue223.B #-}
-
-    data A where
-      BA : B → A
-
-    {-# COMPILED_DATA A Issue223.A Issue223.BA #-}
-    data B where
-      AB : A → B
-      BB : B
-
-    {-# COMPILED_DATA B Issue223.B Issue223.AB Issue223.BB #-}
-
-  This fixes issue 223.
-
-* New pragma HASKELL for adding inline Haskell code (GHC backend only)
-
-  Arbitrary Haskell code can be added to a module using the HASKELL pragma.
-  For instance,
-
-    {-# HASKELL
-      echo :: IO ()
-      echo = getLine >>= putStrLn
-    #-}
-
-    postulate echo : IO ⊤
-    {-# COMPILED echo echo #-}
-
-* New option --exact-split.
-
-  The --exact-split flag causes Agda to raise an error whenever a clause in a
-  definition by pattern matching cannot be made to hold definitionally (i.e. as
-  a reduction rule). Specific clauses can be excluded from this check by means
-  of the {-# CATCHALL #-} pragma.
-
-  For instance, the following definition will be rejected as the second clause
-  cannot be made to hold definitionally:
-
-    min : Nat → Nat → Nat
-    min zero    y       = zero
-    min x       zero    = zero
-    min (suc x) (suc y) = suc (min x y)
-
-  Catchall clauses have to be marked as such, for instance:
-
-    eq : Nat → Nat → Bool
-    eq zero    zero    = true
-    eq (suc m) (suc n) = eq m n
-    {-# CATCHALL #-}
-    eq _       _       = false
-
-* New option: --no-exact-split.
-
-  This option can be used to override a global --exact-split in a
-  file, by adding a pragma {-# OPTIONS --no-exact-split #-}.
-
-* New options: --sharing and --no-sharing.
-
-  These options are used to enable/disable sharing and call-by-need evaluation.
-  The default is --no-sharing.
-
-  Note that they cannot appear in an OPTIONS pragma, but have to be given as
-  command line arguments or added to the Agda Program Args from Emacs with M-x
-  customize-group agda2.
-
-* New pragma DISPLAY.
-
-  {-# DISPLAY f e1 .. en = e #-}
-
-  This causes f e1 .. en to be printed in the same way as e, where ei can bind
-  variables used in e. The expressions ei and e are scope checked, but not
-  type checked.
-
-  For example this can be used to print overloaded (instance) functions with
-  the overloaded name:
-
-    instance
-      NumNat : Num Nat
-      NumNat = record { ..; _+_ = natPlus }
-
-    {-# DISPLAY natPlus a b = a + b #-}
-
-  Limitations
-
-    Left-hand sides are restricted to variables, constructors, defined
-    functions or types, and literals. In particular, lambdas are not allowed in
-    left-hand sides.
-
-    Since DISPLAY pragmas are not type checked implicit argument insertion may
-    not work properly if the type of f computes to an implicit function space
-    after pattern matching.
-
-* Removed pragma {-# ETA R #-}
-
-  The pragma {-# ETA R #-} is replaced by the eta-equality directive
-  inside record declarations.
-
-* New option --no-eta-equality.
-
-  The --no-eta-equality flag disables eta rules for declared record types.
-  It has the same effect as no-eta-equality inside each declaration of
-  a record type R.
-
-  If used with the OPTIONS pragma it will not affect records defined
-  in other modules.
-
-* The semantics of {-# REWRITE r #-} pragmas in parametrized modules has
-  changed (see Issue 1652).
-
-  Rewrite rules are no longer lifted to the top context. Instead, they now only
-  apply to terms in (extensions of) the module context. If you want the old
-  behaviour, you should put the {-# REWRITE r #-} pragma outside of the module
-  (i.e. unindent it).
-
-* New pragma {-# INLINE f #-} causes f to be inlined during compilation.
-
-* The STATIC pragma is now taken into account during compilation.
-
-  Calls to a function marked STATIC are normalised before compilation. The
-  typical use case for this is to mark the interpreter of an embedded language
-  as STATIC.
-
-* Option --type-in-type no longer implies --no-universe-polymorphism,
-  thus, it can be used with explicit universe levels. [Issue 1764]
-  It simply turns off error reporting for any level mismatch now.
-  Examples:
-
-    {-# OPTIONS --type-in-type #-}
-
-    Type : Set
-    Type = Set
-
-    data D {α} (A : Set α) : Set where
-      d : A → D A
-
-    data E α β : Set β where
-      e : Set α → E α β
-
-* New NO_POSITIVITY_CHECK pragma to switch off the positivity checker
-  for data/record definitions and mutual blocks.
-
-  The pragma must precede a data/record definition or a mutual block.
-
-  The pragma cannot be used in --safe mode.
-
-  Examples (see Issue1614*.agda and Issue1760*.agda in test/Succeed/):
-
-  1. Skipping a single data definition.
-
-       {-# NO_POSITIVITY_CHECK #-}
-       data D : Set where
-         lam : (D → D) → D
-
-  2. Skipping a single record definition.
-
-       {-# NO_POSITIVITY_CHECK #-}
-       record U : Set where
-         field ap : U → U
-
-  3. Skipping an old-style mutual block: Somewhere within a `mutual`
-     block before a data/record definition.
-
-       mutual
-         data D : Set where
-           lam : (D → D) → D
-
-         {-# NO_POSITIVITY_CHECK #-}
-         record U : Set where
-           field ap : U → U
-
-  4. Skipping an old-style mutual block: Before the `mutual` keyword.
-
-       {-# NO_POSITIVITY_CHECK #-}
-       mutual
-         data D : Set where
-           lam : (D → D) → D
-
-         record U : Set where
-             field ap : U → U
-
-  5. Skipping a new-style mutual block: Anywhere before the
-     declaration or the definition of data/record in the block.
-
-     record U : Set
-     data D   : Set
-
-     record U where
-       field ap : U → U
-
-     {-# NO_POSITIVITY_CHECK #-}
-     data D where
-       lam : (D → D) → D
-
-* Removed --no-coverage-check option. [Issue 1918]
-
-Language
-========
-
-Operator syntax
----------------
-
-* The default fixity for syntax declarations has changed from -666 to 20.
-
-* Sections.
-
-  Operators can be sectioned by replacing arguments with underscores.
-  There must not be any whitespace between these underscores and the
-  adjacent nameparts. Examples:
-
-    pred : ℕ → ℕ
-    pred = _∸ 1
-
-    T : Bool → Set
-    T = if_then ⊤ else ⊥
-
-    if : {A : Set} (b : Bool) → A → A → A
-    if b = if b then_else_
-
-  Sections are translated into lambda expressions. Examples:
-
-    _∸ 1              ↦  λ section → section ∸ 1
-
-    if_then ⊤ else ⊥  ↦  λ section → if section then ⊤ else ⊥
-
-    if b then_else_   ↦  λ section section₁ →
-                             if b then section else section₁
-
-  Operator sections have the same fixity as the underlying operator
-  (except in cases like "if b then_else_", in which the section is
-  "closed", but the operator is not).
-
-  Operator sections are not supported in patterns (with the exception
-  of dot patterns), and notations coming from syntax declarations
-  cannot be sectioned.
-
-* A long-standing operator fixity bug has been fixed. As a consequence
-  some programs that used to parse no longer do.
-
-  Previously each precedence level was (incorrectly) split up into
-  five separate ones, ordered as follows, with the earlier ones
-  binding less tightly than the later ones:
-
-    - Non-associative operators.
-
-    - Left associative operators.
-
-    - Right associative operators.
-
-    - Prefix operators.
-
-    - Postfix operators.
-
-  Now this problem has been addressed. It is no longer possible to mix
-  operators of a given precedence level but different associativity.
-  However, prefix and right associative operators are seen as having
-  the same associativity, and similarly for postfix and left
-  associative operators.
-
-  Examples
-  --------
-
-  The following code is no longer accepted:
-
-    infixl 6 _+_
-    infix  6 _∸_
-
-    rejected : ℕ
-    rejected = 1 + 0 ∸ 1
-
-  However, the following previously rejected code is accepted:
-
-    infixr 4 _,_
-    infix  4 ,_
-
-    ,_ : {A : Set} {B : A → Set} {x : A} → B x → Σ A B
-    , y = _ , y
-
-    accepted : Σ ℕ λ i → Σ ℕ λ j → Σ (i ≡ j) λ _ → Σ ℕ λ k → j ≡ k
-    accepted = 5 , , refl , , refl
-
-* The classification of notations with binders into the categories
-  infix, prefix, postfix or closed has changed. [Issue 1450]
-
-  The difference is that, when classifying the notation, only
-  /regular/ holes are taken into account, not /binding/ ones.
-
-  Example: The notation
-
-    syntax m >>= (λ x → f) = x <- m , f
-
-  was previously treated as infix, but is now treated as prefix.
-
-* Notation can now include wildcard binders.
-
-  Example: syntax Σ A (λ _ → B) = A × B
-
-* If an overloaded operator is in scope with several distinct
-  precedence levels, then several instances of this operator will be
-  included in the operator grammar, possibly leading to ambiguity.
-  Previously the operator was given the default fixity [Issue 1436].
-
-  There is an exception to this rule: If there are multiple precedences,
-  but at most one is explicitly declared, then only one instance will be
-  included in the grammar. If there are no explicitly declared
-  precedences, then this instance will get the default precedence, and
-  otherwise it will get the declared precedence.
-
-  If multiple occurrences of an operator are "merged" in the grammar,
-  and they have distinct associativities, then they are treated as
-  being non-associative.
-
-  The three paragraphs above also apply to identical notations (coming
-  from syntax declarations) for a given overloaded name.
-
-  Examples:
-
-    module A where
-
-      infixr 5 _∷_
-      infixr 5 _∙_
-      infixl 3 _+_
-      infix  1 bind
-
-      syntax bind c (λ x → d) = x ← c , d
-
-    module B where
-
-      infix  5 _∷_
-      infixr 4 _∙_
-      -- No fixity declaration for _+_.
-      infixl 2 bind
-
-      syntax bind c d = c ∙ d
-
-    module C where
-
-      infixr 2 bind
-
-      syntax bind c d = c ∙ d
-
-    open A
-    open B
-    open C
-
-    -- _∷_ is infix 5.
-    -- _∙_ has two fixities: infixr 4 and infixr 5.
-    -- _+_ is infixl 3.
-    -- A.bind's notation is infix 1.
-    -- B.bind and C.bind's notations are infix 2.
-
-    -- There is one instance of "_ ∷ _" in the grammar, and one
-    -- instance of "_ + _".
-
-    -- There are three instances of "_ ∙ _" in the grammar, one
-    -- corresponding to A._∙_, one corresponding to B._∙_, and one
-    -- corresponding to both B.bind and C.bind.
-
-Reflection
-----------
-
-* The reflection framework has received a massive overhaul.
-
-  A new type of reflected type checking computations supplants most of the old
-  reflection primitives. The quoteGoal, quoteContext and tactic primitives are
-  deprecated and will be removed in the future, and the unquoteDecl and unquote
-  primitives have changed behaviour. Furthermore the following primitive
-  functions have been replaced by builtin type checking computations:
-
-    - primQNameType              --> AGDATCMGETTYPE
-    - primQNameDefinition        --> AGDATCMGETDEFINITION
-    - primDataConstructors       --> subsumed by AGDATCMGETDEFINITION
-    - primDataNumberOfParameters --> subsumed by AGDATCMGETDEFINITION
-
-  See below for details.
-
-* Types are no longer packaged with a sort.
-
-  The AGDATYPE and AGDATYPEEL built-ins have been removed. Reflected types are
-  now simply terms.
-
-* Reflected definitions have more information.
-
-  The type for reflected definitions has changed to
-
-    data Definition : Set where
-      fun-def     : List Clause  → Definition
-      data-type   : Nat → List Name → Definition -- parameters and constructors
-      record-type : Name → Definition            -- name of the data/record type
-      data-con    : Name → Definition            -- name of the constructor
-      axiom       : Definition
-      prim-fun    : Definition
-
-  Correspondingly the built-ins for function, data and record definitions
-  (AGDAFUNDEF, AGDAFUNDEFCON, AGDADATADEF, AGDARECORDDEF) have been removed.
-
-* Reflected type checking computations.
-
-  There is a primitive TC monad representing type checking computations. The
-  unquote, unquoteDecl, and the new unquoteDef all expect computations in this
-  monad (see below). The interface to the monad is the following
-
-    -- Error messages can contain embedded names and terms.
-    data ErrorPart : Set where
-      strErr  : String → ErrorPart
-      termErr : Term → ErrorPart
-      nameErr : Name → ErrorPart
-
-    {-# BUILTIN AGDAERRORPART       ErrorPart #-}
-    {-# BUILTIN AGDAERRORPARTSTRING strErr    #-}
-    {-# BUILTIN AGDAERRORPARTTERM   termErr   #-}
-    {-# BUILTIN AGDAERRORPARTNAME   nameErr   #-}
-
-    postulate
-      TC         : ∀ {a} → Set a → Set a
-      returnTC   : ∀ {a} {A : Set a} → A → TC A
-      bindTC     : ∀ {a b} {A : Set a} {B : Set b} → TC A → (A → TC B) → TC B
-
-      -- Unify two terms, potentially solving metavariables in the process.
-      unify      : Term → Term → TC ⊤
-
-      -- Throw a type error. Can be caught by catchTC.
-      typeError  : ∀ {a} {A : Set a} → List ErrorPart → TC A
-
-      -- Block a type checking computation on a metavariable. This will abort
-      -- the computation and restart it (from the beginning) when the
-      -- metavariable is solved.
-      blockOnMeta : ∀ {a} {A : Set a} → Meta → TC A
-
-      -- Backtrack and try the second argument if the first argument throws a
-      -- type error.
-      catchTC    : ∀ {a} {A : Set a} → TC A → TC A → TC A
-
-      -- Infer the type of a given term
-      inferType  : Term → TC Type
-
-      -- Check a term against a given type. This may resolve implicit arguments
-      -- in the term, so a new refined term is returned. Can be used to create
-      -- new metavariables: newMeta t = checkType unknown t
-      checkType  : Term → Type → TC Term
-
-      -- Compute the normal form of a term.
-      normalise  : Term → TC Term
-
-      -- Get the current context.
-      getContext : TC (List (Arg Type))
-
-      -- Extend the current context with a variable of the given type.
-      extendContext : ∀ {a} {A : Set a} → Arg Type → TC A → TC A
-
-      -- Set the current context.
-      inContext     : ∀ {a} {A : Set a} → List (Arg Type) → TC A → TC A
-
-      -- Quote a value, returning the corresponding Term.
-      quoteTC : ∀ {a} {A : Set a} → A → TC Term
-
-      -- Unquote a Term, returning the corresponding value.
-      unquoteTC : ∀ {a} {A : Set a} → Term → TC A
-
-      -- Create a fresh name.
-      freshName  : String → TC QName
-
-      -- Declare a new function of the given type. The function must be defined
-      -- later using 'defineFun'. Takes an Arg Name to allow declaring instances
-      -- and irrelevant functions. The Visibility of the Arg must not be hidden.
-      declareDef : Arg QName → Type → TC ⊤
-
-      -- Define a declared function. The function may have been declared using
-      -- 'declareDef' or with an explicit type signature in the program.
-      defineFun  : QName → List Clause → TC ⊤
-
-      -- Get the type of a defined name. Replaces 'primQNameType'.
-      getType    : QName → TC Type
-
-      -- Get the definition of a defined name. Replaces 'primQNameDefinition'.
-      getDefinition : QName → TC Definition
-
-    {-# BUILTIN AGDATCM                   TC                 #-}
-    {-# BUILTIN AGDATCMRETURN             returnTC           #-}
-    {-# BUILTIN AGDATCMBIND               bindTC             #-}
-    {-# BUILTIN AGDATCMUNIFY              unify              #-}
-    {-# BUILTIN AGDATCMNEWMETA            newMeta            #-}
-    {-# BUILTIN AGDATCMTYPEERROR          typeError          #-}
-    {-# BUILTIN AGDATCMBLOCKONMETA        blockOnMeta        #-}
-    {-# BUILTIN AGDATCMCATCHERROR         catchTC            #-}
-    {-# BUILTIN AGDATCMINFERTYPE          inferType          #-}
-    {-# BUILTIN AGDATCMCHECKTYPE          checkType          #-}
-    {-# BUILTIN AGDATCMNORMALISE          normalise          #-}
-    {-# BUILTIN AGDATCMGETCONTEXT         getContext         #-}
-    {-# BUILTIN AGDATCMEXTENDCONTEXT      extendContext      #-}
-    {-# BUILTIN AGDATCMINCONTEXT          inContext          #-}
-    {-# BUILTIN AGDATCMQUOTETERM          quoteTC            #-}
-    {-# BUILTIN AGDATCMUNQUOTETERM        unquoteTC          #-}
-    {-# BUILTIN AGDATCMFRESHNAME          freshName          #-}
-    {-# BUILTIN AGDATCMDECLAREDEF         declareDef         #-}
-    {-# BUILTIN AGDATCMDEFINEFUN          defineFun          #-}
-    {-# BUILTIN AGDATCMGETTYPE            getType            #-}
-    {-# BUILTIN AGDATCMGETDEFINITION      getDefinition      #-}
-
-* Builtin type for metavariables
-
-  There is a new builtin type for metavariables used by the new reflection
-  framework. It is declared as follows and comes with primitive equality,
-  ordering and show.
-
-    postulate Meta : Set
-    {-# BUILTIN AGDAMETA Meta #-}
-    primitive primMetaEquality : Meta → Meta → Bool
-    primitive primMetaLess : Meta → Meta → Bool
-    primitive primShowMeta : Meta → String
-
-  There are corresponding new constructors in the Term and Literal data types:
-
-    data Term : Set where
-      ...
-      meta : Meta → List (Arg Term) → Term
-
-    {-# BUILTIN AGDATERMMETA meta #-}
-
-    data Literal : Set where
-      ...
-      meta : Meta → Literal
-
-    {-# BUILTIN AGDALITMETA meta #-}
-
-* Builtin unit type
-
-    The type checker needs to know about the unit type, which you can allow by
-
-      record ⊤ : Set where
-      {-# BUILTIN UNIT ⊤ #-}
-
-* Changed behaviour of unquote
-
-  The unquote primitive now expects a type checking computation instead of a
-  pure term. In particular 'unquote e' requires
-
-    e : Term → TC ⊤
-
-  where the argument is the representation of the hole in which the result
-  should go. The old unquote behaviour (where unquote expected a Term argument)
-  can be recovered by
-
-    OLD: unquote v
-    NEW: unquote λ hole → unify hole v
-
-* Changed behaviour of unquoteDecl
-
-  The unquoteDecl primitive now expects a type checking computation instead of
-  a pure function definition. It is possible to define multiple (mutually
-  recursive) functions at the same time. More specifically
-
-    unquoteDecl x₁ .. xₙ = m
-
-  requires m : TC ⊤ and that x₁ .. xₙ are defined (using declareDef and
-  defineFun) after executing m. As before x₁ .. xₙ : QName in m, but have their
-  declared types outside the unquoteDecl.
-
-* New primitive unquoteDef.
-
-  There is a new declaration
-
-    unquoteDef x₁ .. xₙ = m
-
-  This works exactly as unquoteDecl (see above) with the exception that x₁ ..
-  xₙ are required to already be declared.
-
-  The main advantage of unquoteDef over unquoteDecl is that unquoteDef is
-  allowed in mutual blocks, allowing mutually recursion between generated
-  definitions and hand-written definitions.
-
-* The reflection interface now exposes the name hint (as a string)
-  for variables. As before, the actual binding structure is with
-  de Bruijn indices. The String value is just a hint used as a prefix
-  to help display the variable. The type Abs is a new bultin type used
-  for the constructors `Term.lam`, `Term.pi`, `Pattern.var`
-  (bultins `AGDATERMLAM`, `AGDATERMPI` and `AGDAPATVAR`).
-
-    data Abs (A : Set) : Set where
-      abs : (s : String) (x : A) → Abs A
-    {-# BUILTIN ABS    Abs #-}
-    {-# BUILTIN ABSABS abs #-}
-
-  Updated constructor types:
-
-    Term.lam    : Hiding   → Abs Term → Term
-    Term.pi     : Arg Type → Abs Type → Term
-    Pattern.var : String   → Pattern
-
-* Reflection-based macros
-
-  Macros are functions of type t1 → t2 → .. → Term → TC ⊤ that are defined in a
-  'macro' block. Macro application is guided by the type of the macro, where
-  Term arguments desugar into the 'quoteTerm' syntax and Name arguments into
-  the 'quote' syntax. Arguments of any other type are preserved as-is. The last
-  Term argument is the hole term given to 'unquote' computation (see above).
-
-  For example, the macro application 'f u v w' where the macro
-  f has the type 'Term → Name → Bool → Term → TC ⊤' desugars into
-    'unquote (f (quoteTerm u) (quote v) w)'
-
-  Limitations:
-
-    - Macros cannot be recursive. This can be worked around by defining the
-      recursive function outside the macro block and have the macro call the
-      recursive function.
-
-  Silly example:
-
-    macro
-      plus-to-times : Term → Term → TC ⊤
-      plus-to-times (def (quote _+_) (a ∷ b ∷ [])) hole = unify hole (def (quote _*_) (a ∷ b ∷ []))
-      plus-to-times v hole = unify hole v
-
-    thm : (a b : Nat) → plus-to-times (a + b) ≡ a * b
-    thm a b = refl
-
-  Macros are most useful when writing tactics, since they let you hide the
-  reflection machinery. For instance, suppose you have a solver
-
-    magic : Type → Term
-
-  that takes a reflected goal and outputs a proof (when successful). You can
-  then define the following macro
-
-    macro
-      by-magic : Term → TC ⊤
-      by-magic hole =
-        bindTC (inferType hole) λ goal →
-        unify hole (magic goal)
-
-  This lets you apply the magic tactic without any syntactic noise at all:
-
-    thm : ¬ P ≡ NP
-    thm = by-magic
-
-Literals and built-ins
-----------------------
-
-* Overloaded number literals.
-
-  You can now overload natural number literals using the new builtin FROMNAT:
-
-    {-# BUILTIN FROMNAT fromNat #-}
-
-  The target of the builtin should be a defined name. Typically you would do
-  something like
-
-    record Number (A : Set) : Set where
-      field fromNat : Nat → A
-
-    open Number {{...}} public
-
-    {-# BUILTIN FROMNAT fromNat #-}
-
-  This will cause number literals 'n' to be desugared to 'fromNat n' before
-  type checking.
-
-* Negative number literals.
-
-  Number literals can now be negative. For floating point literals it works as
-  expected. For integer literals there is a new builtin FROMNEG that enables
-  negative integer literals:
-
-    {-# BUILTIN FROMNEG fromNeg #-}
-
-  This causes negative literals '-n' to be desugared to 'fromNeg n'.
-
-* Overloaded string literals.
-
-  String literals can be overladed using the FROMSTRING builtin:
-
-    {-# BUILTIN FROMSTRING fromString #-}
-
-  The will cause string literals 's' to be desugared to 'fromString s' before
-  type checking.
-
-* Change to builtin integers.
-
-  The INTEGER builtin now needs to be bound to a datatype with two constructors
-  that should be bound to the new builtins INTEGERPOS and INTEGERNEGSUC as follows:
-
-    data Int : Set where
-      pos    : Nat -> Int
-      negsuc : Nat -> Int
-    {-# BUILTIN INTEGER       Int    #-}
-    {-# BUILTIN INTEGERPOS    pos    #-}
-    {-# BUILTIN INTEGERNEGSUC negsuc #-}
-
-  where 'negsuc n' represents the integer '-n - 1'. For instance, '-5' is
-  represented as 'negsuc 4'. All primitive functions on integers except
-  primShowInteger have been removed, since these can be defined without too
-  much trouble on the above representation using the corresponding functions on
-  natural numbers.
-
-  The primitives that have been removed are
-
-    primIntegerPlus
-    primIntegerMinus
-    primIntegerTimes
-    primIntegerDiv
-    primIntegerMod
-    primIntegerEquality
-    primIntegerLess
-    primIntegerAbs
-    primNatToInteger
-
-* New primitives for strict evaluation
-
-    primitive
-      primForce      : ∀ {a b} {A : Set a} {B : A → Set b} (x : A) → (∀ x → B x) → B x
-      primForceLemma : ∀ {a b} {A : Set a} {B : A → Set b} (x : A) (f : ∀ x → B x) → primForce x f ≡ f x
-
-  'primForce x f' evaluates to 'f x' if x is in weak head normal form, and
-  'primForceLemma x f' evaluates to 'refl' in the same situation. The following
-  values are considered to be in weak head normal form:
-
-    - constructor applications
-    - literals
-    - lambda abstractions
-    - type constructor (data/record types) applications
-    - function types
-    - Set a
-
-Modules
--------
-
-* Modules in import directives
-
-  When you use using/hiding/renaming on a name it now automatically applies to
-  any module of the same name, unless you explicitly mention the module. For
-  instance,
-
-    open M using (D)
-
-  is equivalent to
-
-    open M using (D; module D)
-
-  if M defines a module D. This is most useful for record and data types where
-  you always get a module of the same name as the type.
-
-  With this feature there is no longer useful to be able to qualify a
-  constructor (or field) by the name of the data type even when it differs from
-  the name of the corresponding module. The follow (weird) code used to work,
-  but doesn't work anymore:
-
-    module M where
-      data D where
-        c : D
-    open M using (D) renaming (module D to MD)
-    foo : D
-    foo = D.c
-
-  If you want to import only the type name and not the module you have to hide
-  it explicitly:
-
-    open M using (D) hiding (module D)
-
-  See discussion on Issue 836 (https://github.com/agda/agda/issues/836).
-
-* Private definitions of a module are no longer in scope at the Emacs
-  mode top-level.
-
-  The reason for this change is that .agdai-files are stripped of unused
-  private definitions (which can yield significant performance
-  improvements for module-heavy code).
-
-  To test private definitions you can create a hole at the bottom of the
-  module, in which private definitions will be visible.
-
-Records
--------
-
-* New record directives eta-equality/no-eta-equality
-
-  The keywords eta-equality/no-eta-equality enable/disable eta rules
-  for the (inductive) record type being declared.
-
-  record Σ (A : Set) (B : A -> Set) : Set where
-    no-eta-equality
-    constructor _,_
-    field
-      fst : A
-      snd : B fst
-  open Σ
-
-  -- fail : ∀ {A : Set}{B : A -> Set} → (x : Σ A B) → x ≡ (fst x , snd x)
-  -- fail x = refl
-  --
-  -- x != fst x , snd x of type Σ .A .B
-  -- when checking that the expression refl has type x ≡ (fst x , snd x)
-
-* Building records from modules.
-
-  The "record { <fields> }" syntax is now extended to accept module names as
-  well. Fields are thus defined using the corresponding definitions from the
-  given module.
-
-  For instance assuming this record type R and module M:
-
-  record R : Set where
-    field
-      x : X
-      y : Y
-      z : Z
-
-  module M where
-    x = {! ... !}
-    y = {! ... !}
-
-  r : R
-  r = record { M; z = {! ... !} }
-
-  Previously one had to write `record { x = M.x; y = M.y; z = {! ... !} }`.
-
-  More precisely this construction now supports any combination of explicit
-  field definitions and applied modules.
-
-  If a field is both given explicitly and available in one of the modules,
-  then the explicit one takes precedence.
-
-  If a field is available in more than one module then this is ambiguous
-  and therefore rejected. As a consequence the order of assignments does
-  not matter.
-
-  The modules can be both applied to arguments and have import directives
-  such as `hiding`, `using`, and `renaming`. In particular this construct
-  subsumes the record update construction.
-
-  Here is an example of record update:
-
-  -- Record update. Same as: record r { y = {! ... !} }
-  r2 : R
-  r2 = record { R r; y = {! ... !} }
-
-  A contrived example showing the use of hiding/renaming:
-
-  module M2 (a : A) where
-    w = {! ... !}
-    z = {! ... !}
-
-  r3 : A → R
-  r3 a = record { M hiding (y); M2 a renaming (w to y) }
-
-* Record patterns are now accepted.  Examples:
-
-    swap : {A B : Set} (p : A × B) → B × A
-    swap record{ proj₁ = a; proj₂ = b } = record{ proj₁ = b; proj₂ = a }
-
-    thd3 : ...
-    thd3 record{ proj₂ = record { proj₂ = c }} = c
-
-* Record modules now properly hide all their parameters [Issue 1759]
-
-  Previously parameters to parent modules were not hidden in the record
-  module, resulting in different behaviour between
-
-    module M (A : Set) where
-      record R (B : Set) : Set where
-
-  and
-
-    module M where
-      record R (A B : Set) : Set where
-
-  where in the former case, `A` would be an explicit argument to the module
-  `M.R`, but implicit in the latter case. Now `A` is implicit in both cases.
-
-Instance search
----------------
-
-* Performance has been improved, recursive instance search which was previously
-  exponential in the depth is now only quadratic.
-
-* Constructors of records and datatypes are not anymore automatically considered
-  as instances, you have to do so explicitely, for instance:
-
-    -- only [b] is an instance of D
-    data D : Set where
-      a : D
-      instance
-        b : D
-      c : D
-
-    -- the constructor is now an instance
-    record tt : Set where
-      instance constructor tt
-
-* Lambda-bound variables are no longer automatically considered instances.
-
-  Lambda-bound variables need to be bound as instance arguments to be
-  considered for instance search. For example,
-
-    _==_ : {A : Set} {{_ : Eq A}} → A → A → Bool
-
-    fails : {A : Set} → Eq A → A → Bool
-    fails eqA x = x == x
-
-    works : {A : Set} {{_ : Eq A}} → A → Bool
-    works x = x == x
-
-* Let-bound variables are no longer automatically considered instances.
-
-  To make a let-bound variable available as an instance it needs to be declared
-  with the 'instance' keyword, just like top-level instances. For example,
-
-    mkEq : {A : Set} → (A → A → Bool) → Eq A
-
-    fails : {A : Set} → (A → A → Bool) → A → Bool
-    fails eq x = let eqA = mkEq eq in x == x
-
-    works : {A : Set} → (A → A → Bool) → A → Bool
-    works eq x = let instance eqA = mkEq eq in x == x
-
-* Record fields can be declared instances.
-
-  For example,
-
-    record EqSet : Set₁ where
-      field
-        set : Set
-        instance eq : Eq set
-
-  This causes the projection function 'eq : (E : EqSet) → Eq (set E)' to be
-  considered for instance search.
-
-* Instance search can now find arguments in variable types (but such candidates can
-  only be lambda-bound variables, they can’t be declared as instances)
-
-    module _ {A : Set} (P : A → Set) where
-
-      postulate
-        bla : {x : A} {{_ : P x}} → Set → Set
-
-      -- Works, the instance argument is found in the context
-      test :  {x : A} {{_ : P x}} → Set → Set
-      test B = bla B
-
-      -- Still forbidden, because [P] could be instantiated later to anything
-      instance
-       postulate
-        forbidden : {x : A} → P x
-
-* Instance search now refuses to solve constraints with unconstrained
-  metavariables, since this can lead to non-termination.
-
-  See [Issue #1532] for an example.
-
-* Top-level instances are now only considered if they are in scope. [Issue #1913]
-
-  Note that lambda-bound instances need not be in scope.
-
-Other changes
--------------
-
-* Unicode ellipsis character is allowed for the ellipsis token ... in
-  `with` expressions.
-
-* Prop is no longer a reserved word.
-
-Type checking
-=============
-
-* Large indices.
-
-  Force constructor arguments no longer count towards the size of a datatype.
-  For instance, the definition of equality below is accepted.
-
-    data _≡_ {a} {A : Set a} : A → A → Set where
-      refl : ∀ x → x ≡ x
-
-  This gets rid of the asymmetry that the version of equality which indexes
-  only on the second argument could be small, but not the version above which
-  indexes on both arguments.
-
-* Detection of datatypes that satisfy K (i.e. sets)
-
-  Agda will now try to detect datatypes that satisfy K when --without-K is
-  enabled. A datatype satisfies K when it follows these three rules:
-
-  - The types of all non-recursive constructor arguments should satisfy K.
-
-  - All recursive constructor arguments should be first-order.
-
-  - The types of all indices should satisfy K.
-
-  For example, the types [Nat], [List Nat], and [x ≡ x] (where x : Nat) are
-  all recognized by Agda as satisfying K.
-
-* New unifier for case splitting
-
-  The unifier used by Agda for case splitting has been completely rewritten.
-  The new unifier takes a much more type-directed approach in order to avoid
-  the problems in issues #1406, #1408, #1427, and #1435.
-
-  The new unifier also has eta-equality for record types built-in. This should
-  avoid unnecessary case splitting on record constructors and improve the
-  performance of Agda on code that contains deeply nested record patterns (see
-  issues #473, #635, #1575, #1603, #1613, and #1645).
-
-  In some cases, the locations of the dot patterns computed by the unifier did
-  not correspond to the locations given by the user (see issue #1608). This has
-  now been fixed by adding an extra step after case splitting that checks
-  whether the user-written patterns are compatible with the computed ones.
-
-  In some rare cases, the new unifier is still too restrictive when --without-K
-  is enabled because it cannot generalize over the datatype indices (yet). For
-  example, the following code is rejected:
-
-    data Bar : Set₁ where
-      bar : Bar
-      baz : (A : Set) → Bar
-
-    data Foo : Bar → Set where
-      foo : Foo bar
-
-    test : foo ≡ foo → Set₁
-    test refl = Set
-
-* The aggressive behaviour of `with` introduced in 2.4.2.5 has been
-  rolled back [Issue 1692]. With no longer abstracts in the types of
-  variables appearing in the with-expressions. [Issue 745]
-
-  This means that the following example no longer works:
-
-  ```agda
-    fails : (f : (x : A) → a ≡ x) (b : A) → b ≡ a
-    fails f b with a | f b
-    fails f b | .b | refl = f b
-  ```
-
-  The `with` no longer abstracts the type of `f` over `a`, since `f` appears
-  in the second with-expression `f b`. You can use a nested `with` to make
-  this example work.
-
-  This example does work again:
-
-  ```agda
-    test : ∀{A : Set}{a : A}{f : A → A} (p : f a ≡ a) → f (f a) ≡ a
-    test p rewrite p = p
-  ```
-
-  After `rewrite p` the goal has changed to `f a ≡ a`, but the type
-  of `p` has not been rewritten, thus, the final `p` solves the goal.
-
-  The following, which worked in 2.4.2.5, no longer works:
-
-  ```agda
-    fails : (f : (x : A) → a ≡ x) (b : A) → b ≡ a
-    fails f b rewrite f b = f b
-  ```
-
-  The rewrite with `f b : a ≡ b` is not applied to `f` as
-  the latter is part of the rewrite expression `f b`.  Thus,
-  the type of `f` remains untouched, and the changed goal
-  `b ≡ b` is not solved by `f b`.
-
-* When using `rewrite` on a term `eq` of type `lhs ≡ rhs`, the `lhs`
-  is no longer abstracted in `rhs` [Issue 520].  This means that
-
-    f pats rewrite eq = body
-
-  is more than syntactic sugar for
-
-    f pats with lhs | eq
-    f pats | _ | refl = body
-
-  In particular, the following application of `rewrite` is now
-  possible
-
-    id : Bool → Bool
-    id true  = true
-    id false = false
-
-    is-id : ∀ x → x ≡ id x
-    is-id true  = refl
-    is-id false = refl
-
-    postulate
-      P : Bool → Set
-      b : Bool
-      p : P (id b)
-
-    proof : P b
-    proof rewrite is-id b = p
-
-  Previously, this was desugared to
-
-    proof with b | is-id b
-    proof | _ | refl = p
-
-  which did not type check as `refl` does not have type `b ≡ id b`.
-  Now, Agda gets the task of checking `refl : _ ≡ id b` leading to
-  instantiation of `_` to `id b`.
-
-Compiler backends
-=================
-
-* Major Bug Fixes:
-
-  - Function clauses with different arities are now always compiled correctly
-    by the GHC/UHC backends. (Issue #727)
-
-* Co-patterns
-
-  - The GHC/UHC backends now support co-patterns. (Issues #1567, #1632)
-
-* Optimizations
-
-  - Builtin naturals are now represented as arbitrary-precision
-    Integers. See the user manual, section
-    "Agda Compilers -> Optimizations" for details.
-
-* GHC Haskell backend (MAlonzo)
-
-  - Pragmas
-
-    Since builtin naturals are compiled to Integer you can no longer
-    give a {-# COMPILED_DATA #-} pragma for Nat. The same goes for
-    builtin booleans, integers, floats, characters and strings which are now
-    hard-wired to appropriate Haskell types.
-
-
-* UHC compiler backend
-
-  A new backend targeting the Utrecht Haskell Compiler (UHC) is available.
-  It targets the UHC Core language, and it's design is inspired by
-  the Epic backend. See the user manual, section
-  "Agda Compilers -> UHC Backend" for installation instructions.
-
-
-  FFI
-
-  The UHC backend has a FFI to Haskell similar to MAlonzo's.
-  The target Haskell code also needs to be compilable using UHC,
-  which does not support the Haskell base library version 4.*.
-
-  FFI pragmas for the UHC backend are not checked in any way. If the pragmas
-  are wrong, bad things will happen.
-
-  Imports
-  Additional Haskell modules can be brought into scope
-  with the IMPORT_UHC pragma:
-  {-# IMPORT_UHC Data.Char #-}
-  The Haskell modules UHC.Base and UHC.Agda.Builtins are always
-  in scope and don't need to be imported explicitly.
-
-  Datatypes
-  Agda datatypes can be bound to Haskell datatypes as follows:
-    Haskell:
-        data HsData a = HsCon1 | HsCon2 (HsData a)
-    Agda:
-        data AgdaData (A : Set) : Set where
-          AgdaCon1 : AgdaData A
-          AgdaCon2 : AgdaData A -> AgdaData A
-        {-# COMPILED_DATA_UHC AgdaData HsData HsCon1 HsCon2 #-}
-    The mapping has to cover all constructors of the used Haskell datatype,
-    else runtime behavior is undefined!
-
-  There are special reserved names to bind Agda datatypes to certain Haskell
-  datatypes. For example, this binds an Agda datatype
-  to Haskell's list datatype:
-    Agda:
-        data AgdaList (A : Set) : Set where
-          Nil : AgdaList A
-          Cons : A -> AgdaList A -> AgdaList A
-        {-# COMPILED_DATA_UHC AgdaList __LIST__ __NIL__ __CONS__ #-}
-
-  The following "magic" datatypes are available:
-    HS Datatype | Datatype Pragma | HS Constructor | Constructor Pragma
-    ()            __UNIT__          ()               __UNIT__
-    List          __LIST__          (:)              __CONS__
-                                    []               __NIL__
-    Bool          __BOOL__          True             __TRUE__
-                                    False            __FALSE__
-
-  Functions
-  Agda postulates can be bound to Haskell functions. Similar as in MAlonzo,
-  all arguments of type Set need to be dropped before calling Haskell
-  functions. An example calling the return function:
-    Agda:
-        postulate hs-return : {A : Set} -> A -> IO A
-        {-# COMPILED_UHC hs-return (\_ -> UHC.Agda.Builtins.primReturn) #-}
-
-Emacs mode and interaction
-==========================
-
-* Module contents (C-c C-o) now also works for records. [See issue #1926.]
-  If you have an inferable expression of record type in an interaction point,
-  you can invoke C-c C-o to see its fields and types.  Example
-
-    record R : Set where
-      field f : A
-
-    test : R → R
-    test r = {!r!}  -- C-c C-o here
-
-* Less aggressive error notification.
-
-  Previously Emacs could jump to the position of an error even if the
-  type-checking process was not initiated in the current buffer. Now
-  this no longer happens: If the type-checking process was initiated
-  in another buffer, then the cursor is moved to the position of the
-  error in the buffer visiting the file (if any) and in every window
-  displaying the file, but focus should not change from one file to
-  another.
-
-  In the cases where focus does change from one file to another, one
-  can now use the go-back functionality to return to the previous
-  position.
-
-* Removed the agda-include-dirs customization parameter.
-
-  Use agda-program-args with -iDIR or -lLIB instead, or add libraries to
-  ~/.agda/defaults (C:/Users/USERNAME/AppData/Roaming/agda/defaults or
-  similar on Windows). See Library management, above, for more
-  information.
-
-Tools
-=====
-
-LaTeX-backend
--------------
-
-* The default font has been changed to XITS (which is part of TeX Live):
-
-    http://www.ctan.org/tex-archive/fonts/xits/
-
-  This font is more complete with respect to Unicode.
-
-agda-ghc-names
---------------
-
-* New tool: The command
-
-    agda-ghc-names fixprof <compile-dir> <ProgName>.prof
-
-  converts *.prof files obtained from profiling runs of MAlonzo-compiled
-  code to *.agdaIdents.prof, with the original Agda identifiers replacing
-  the MAlonzo-generated Haskell identifiers.
-
-  For usage and more details, see src/agda-ghc-names/README.txt.
-
-Highlighting and textual backends
-=================================
-
-* Names in import directives are now highlighted and are clickable.
-  [Issue 1714]
-  This leads also to nicer printing in the LaTeX and html backends.
-
-Fixed issues
-============
-
-See https://github.com/agda/agda/issues?q=milestone%3A2.5.1+is%3Aclosed
-
-------------------------------------------------------------------------
--- Release notes for Agda version 2.4.2.5
-------------------------------------------------------------------------
-
-Important changes since 2.4.2.4:
-
-Installation and infrastructure
-===============================
-
-* Added support for GHC 7.10.3.
-
-* Added `cpphs` Cabal flag
-
-  Turn on/off this flag to choose cpphs/cpp as the C preprocessor.
-
-  This flag is turn on by default.
-
-  (This flag was added in Agda 2.4.2.1 but it was not documented)
-
-Pragmas and options
-===================
-
-* Termination pragmas are no longer allowed inside `where` clauses
-  [Issue 1137].
-
-Type checking
-=============
-
-* `with`-abstraction is more aggressive, abstracts also in types of
-  variables that are used in the `with`-expressions, unless they are
-  also used in the types of the `with`-expressions. [Issue 1692]
-
-  Example:
-
-  ```agda
-    test : (f : (x : A) → a ≡ x) (b : A) → b ≡ a
-    test f b with a | f b
-    test f b | .b | refl = f b
-  ```
-
-  Previously, `with` would not abstract in types of variables that
-  appear in the `with`-expressions, in this case, both `f` and `b`,
-  leaving their types unchanged.
-  Now, it tries to abstract in `f`, as only `b` appears in the types of
-  the `with`-expressions which are `A` (of `a`) and `a ≡ b` (of `f b`).
-  As a result, the type of `f` changes to `(x : A) → b ≡ x` and the
-  type of the goal to `b ≡ b` (as previously).
-
-  This also affects `rewrite`, which is implemented in terms of
-  `with`.
-
-  ```agda
-    test : (f : (x : A) → a ≡ x) (b : A) → b ≡ a
-    test f b rewrite f b = f b
-  ```
-
-  As the new `with` is not fully backwards-compatible, some parts of
-  your Agda developments using `with` or `rewrite` might need
-  maintenance.
-
-Fixed issues
-============
-
-See https://github.com/agda/agda/issues
-* 1407
-* 1518
-* 1670
-* 1677
-* 1698
-* 1701
-* 1710
-* 1718
-
-------------------------------------------------------------------------
--- Release notes for Agda version 2.4.2.4
-------------------------------------------------------------------------
-
-Important changes since 2.4.2.3:
-
-Installation and infrastructure
-===============================
-
-* Removed support for GHC 7.4.2.
-
-Pragmas and options
-===================
-
-* Option --copatterns is now on by default.  To switch off
-  parsing of copatterns, use:
-
-    {-# OPTIONS --no-copatterns #-}
-
-* Option --rewriting is now needed to use REWRITE pragmas
-  and rewriting during reduction.  Rewriting is not --safe.
-
-  To use rewriting, first specify a relation symbol `R` that will
-  later be used to add rewrite rules.  A canonical candidate would be
-  propositional equality
-
-    {-# BUILTIN REWRITE _≡_ #-}
-
-  but any symbol `R` of type `Δ → A → A → Set i` for some `A` and
-  `i` is accepted.  Then symbols `q` can be added to rewriting
-  provided their type is of the form `Γ → R ds l r`.  This will add
-  a rewrite rule
-
-    Γ ⊢ l ↦ r : A[ds/Δ]
-
-  to the signature, which fires whenever a term is an instance of `l`.
-  For example, if
-
-    plus0 : ∀ x → x + 0 ≡ x
-
-  (ideally, there is a proof for `plus0`, but it could be a
-  postulate), then
-
-    {-# REWRITE plus0 #-}
-
-  will prompt Agda to rewrite any well-typed term of the form `t + 0`
-  to `t`.
-
-  Some caveats:  Agda accepts and applies rewrite rules naively, it is
-  very easy to break consistency and termination of type checking.
-  Some examples of rewrite rules that should /not/ be added:
-
-    refl     : ∀ x → x ≡ x             -- Agda loops
-    plus-sym : ∀ x y → x + y ≡ y + x   -- Agda loops
-    absurd   : true ≡ false            -- Breaks consistency
-
-  Adding only proven equations should at least preserve consistency,
-  but this is only a conjecture, so know what you are doing!
-  Using rewriting, you are entering into the wilderness, where you are
-  on your own!
-
-Language
-========
-
-* forall / ∀ now parses like λ, i.e., the following parses now [Issue 1583]:
-
-    ⊤ × ∀ (B : Set) → B → B
-
-* The underscore pattern _ can now also stand for an inaccessible
-  pattern (dot pattern). This alleviates the need for writing `._'.
-  [Issue 1605]  Instead of
-
-    transVOld : ∀{A : Set} (a b c : A) → a ≡ b → b ≡ c → a ≡ c
-    transVOld _ ._ ._ refl refl = refl
-
-  one can now write
-
-    transVNew : ∀{A : Set} (a b c : A) → a ≡ b → b ≡ c → a ≡ c
-    transVNew _ _ _ refl refl = refl
-
-  and let Agda decide where to put the dots.  This was always possible
-  by using hidden arguments
-
-    transH : ∀{A : Set}{a b c : A} → a ≡ b → b ≡ c → a ≡ c
-    transH refl refl = refl
-
-  which is now equivalent to
-
-    transHNew : ∀{A : Set}{a b c : A} → a ≡ b → b ≡ c → a ≡ c
-    transHNew {a = _}{b = _}{c = _} refl refl = refl
-
-  Before, underscore _ stood for an unnamed variable that could not be
-  instantiated by an inaccessible pattern.  If one no wants to prevent
-  Agda from instantiating, one needs to use a variable name other than
-  underscore (however, in practice this situation seems unlikely).
-
-Type checking
-=============
-
-* Polarity of phantom arguments to data and record types has changed. [Issue 1596]
-  Polarity of size arguments is Nonvariant (both monotone and antitone).
-  Polarity of other arguments is Covariant (monotone).
-  Both were Invariant before (neither monotone nor antitone).
-
-  The following example type-checks now:
-
-    open import Common.Size
-
-    -- List should be monotone in both arguments
-    -- (even when `cons' is missing).
-
-    data List (i : Size) (A : Set) : Set where
-      [] : List i A
-
-    castLL : ∀{i A} → List i (List i A) → List ∞ (List ∞ A)
-    castLL x = x
-
-    -- Stream should be antitone in the first and monotone in the second argument
-    -- (even with field `tail' missing).
-
-    record Stream (i : Size) (A : Set) : Set where
-      coinductive
-      field
-        head : A
-
-    castSS : ∀{i A} → Stream ∞ (Stream ∞ A) → Stream i (Stream i A)
-    castSS x = x
-
-* SIZELT lambdas must be consistent [Issue 1523, see Abel and Pientka, ICFP 2013].
-  When lambda-abstracting over type (Size< size) then size must be
-  non-zero, for any valid instantiation of size variables.
-
-  The good:
-
-      data Nat (i : Size) : Set where
-        zero : ∀ (j : Size< i) → Nat i
-        suc  : ∀ (j : Size< i) → Nat j → Nat i
-
-      {-# TERMINATING #-}
-      -- This definition is fine, the termination checker is too strict at the moment.
-      fix : ∀ {C : Size → Set}
-         → (∀ i → (∀ (j : Size< i) → Nat j -> C j) → Nat i → C i)
-         → ∀ i → Nat i → C i
-      fix t i (zero j)  = t i (λ (k : Size< i) → fix t k) (zero j)
-      fix t i (suc j n) = t i (λ (k : Size< i) → fix t k) (suc j n)
-
-    The λ (k : Size< i) is fine in both cases, as context
-
-      i : Size, j : Size< i
-
-    guarantees that i is non-zero.
-
-  The bad:
-
-      record Stream {i : Size} (A : Set) : Set where
-        coinductive
-        constructor _∷ˢ_
-        field
-          head  : A
-          tail  : ∀ {j : Size< i} → Stream {j} A
-      open Stream public
-
-      _++ˢ_ : ∀ {i A} → List A → Stream {i} A → Stream {i} A
-      []        ++ˢ s = s
-      (a ∷ as)  ++ˢ s = a ∷ˢ (as ++ˢ s)
-
-    This fails, maybe unjustified, at
-
-      i : Size, s : Stream {i} A
-        ⊢
-          a ∷ˢ (λ {j : Size< i} → as ++ˢ s)
-
-    Fixed by defining the constructor by copattern matching:
-
-      record Stream {i : Size} (A : Set) : Set where
-        coinductive
-        field
-          head  : A
-          tail  : ∀ {j : Size< i} → Stream {j} A
-      open Stream public
-
-      _∷ˢ_ : ∀ {i A} → A → Stream {i} A → Stream {↑ i} A
-      head  (a ∷ˢ as) = a
-      tail  (a ∷ˢ as) = as
-
-      _++ˢ_ : ∀ {i A} → List A → Stream {i} A → Stream {i} A
-      []        ++ˢ s = s
-      (a ∷ as)  ++ˢ s = a ∷ˢ (as ++ˢ s)
-
-  The ugly:
-
-      fix : ∀ {C : Size → Set}
-         → (∀ i → (∀ (j : Size< i) → C j) → C i)
-         → ∀ i → C i
-      fix t i = t i λ (j : Size< i) → fix t j
-
-   For i=0, there is no such j at runtime, leading to looping
-   behavior.
-
-Interaction
-===========
-
-* Issue 635 has been fixed.  Case splitting does not spit out implicit
-  record patterns any more.
-
-    record Cont : Set₁ where
-      constructor _◃_
-      field
-        Sh  : Set
-        Pos : Sh → Set
-
-    open Cont
-
-    data W (C : Cont) : Set where
-      sup : (s : Sh C) (k : Pos C s → W C) → W C
-
-    bogus : {C : Cont} → W C → Set
-    bogus w = {!w!}
-
-  Case splitting on w yielded, since the fix of issue 473,
-
-    bogus {Sh ◃ Pos} (sup s k) = ?
-
-  Now it gives, as expected,
-
-    bogus (sup s k) = ?
-
-Performance
-===========
-
-* As one result of the 21st Agda Implementor's Meeting (AIM XXI),
-  serialization of the standard library is 50% faster (time reduced by
-  a third), without using additional disk space for the interface
-  files.
-
-
-Bug fixes
-=========
-
-* Issues fixed ( see https://github.com/agda/agda/issues ):
-  1546 (copattern matching and with-clauses)
-  1560 (positivity checker inefficiency)
-  1584 (let pattern with trailing implicit)
-
-------------------------------------------------------------------------
--- 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 removed [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
-------------------------------------------------------------------------
-
-Important changes since 2.4.2.1:
-
-Bug fixes
-=========
-
-* Compilation on Windows fixed.
-
-* Other issues fixed ( see https://code.google.com/p/agda/issues )
-  1332
-  1353
-  1360
-  1366
-  1369
-
-------------------------------------------------------------------------
--- Release notes for Agda version 2.4.2.1
-------------------------------------------------------------------------
-
-Important changes since 2.4.2:
-
-Pragmas and options
-===================
-
-* New pragma {-# TERMINATING #-} replacing {-# NO_TERMINATION_CHECK #-}
-
-  Complements the existing pragma {-# NON_TERMINATING #-}.
-  Skips termination check for the associated definitions and marks
-  them as terminating.  Thus, it is a replacement for
-  {-# NO_TERMINATION_CHECK #-} with the same semantics.
-
-  You can no longer use pragma {-# NO_TERMINATION_CHECK #-} to skip
-  the termination check, but must label your definitions as either
-  {-# TERMINATING #-} or {-# NON_TERMINATING #-} instead.
-
-  Note: {-# OPTION --no-termination-check #-} labels all your
-  definitions as {-# TERMINATING #-}, putting you in the danger zone
-  of a loop in the type checker.
-
-Language
-========
-
-* Referring to a local variable shadowed by module opening is now
-  an error.  Previous behavior was preferring the local over the
-  imported definitions. [Issue 1266]
-
-  Note that module parameters are locals as well as variables bound by
-  λ, dependent function type, patterns, and let.
-
-  Example:
-
-    module M where
-      A = Set1
-
-    test : (A : Set) → let open M in A
-
-  The last A produces an error, since it could refer to the local
-  variable A or to the definition imported from module M.
-
-* `with` on a variable bound by a module telescope or a pattern of a
-  parent function is now forbidden.  [Issue 1342]
-
-    data Unit : Set where
-      unit : Unit
-
-    id : (A : Set) → A → A
-    id A a = a
-
-    module M (x : Unit) where
-
-      dx : Unit → Unit
-      dx unit = x
-
-      g : ∀ u → x ≡ dx u
-      g with x
-      g | unit  = id (∀ u → unit ≡ dx u) ?
-
-  Even though this code looks right, Agda complains about the type
-  expression `∀ u → unit ≡ dx u`.  If you ask Agda what should go
-  there instead, it happily tells you that it wants
-  `∀ u → unit ≡ dx u`. In fact what you do not see and Agda
-  will never show you is that the two expressions actually differ in
-  the invisible first argument to `dx`, which is visible only outside
-  module `M`.  What Agda wants is an invisible `unit` after `dx`, but all
-  you can write is an invisible `x` (which is inserted behind the
-  scenes).
-
-  To avoid those kinds of paradoxes, `with` is now outlawed on module
-  parameters.  This should ensure that the invisible arguments are
-  always exactly the module parameters.
-
-  Since a `where` block is desugared as module with pattern variables
-  of the parent clause as module parameters, the same strikes you for
-  uses of `with` on pattern variables of the parent function.
-
-    f : Unit → Unit
-    f x = unit
-      where
-        dx : Unit → Unit
-        dx unit = x
-
-        g : ∀ u → x ≡ dx u
-        g with x
-        g | unit  = id ((u : Unit) → unit ≡ dx u) ?
-
-  The `with` on pattern variable `x` of the parent clause `f x = unit`
-  is outlawed now.
-
-Type checking
-=============
-
-* Termination check failure is now a proper error.
-
-  We no longer continue type checking after termination check failures.
-  Use pragmas {-# NON_TERMINATING #-} and {-# NO_TERMINATION_CHECK #-}
-  near the offending definitions if you want to do so.
-  Or switch off the termination checker altogether with
-  {-# OPTIONS --no-termination-check #-} (at your own risk!).
-
-* (Since Agda 2.4.2:) Termination checking --without-K restricts
-  structural descent to arguments ending in data types or `Size`.
-  Likewise, guardedness is only tracked when result type is data or
-  record type.
-
-    mutual
-      data WOne : Set where wrap : FOne → WOne
-      FOne = ⊥ → WOne
-
-    noo : (X : Set) → (WOne ≡ X) → X → ⊥
-    noo .WOne refl (wrap f) = noo FOne iso f
-
-  `noo` is rejected since at type `X` the structural descent
-  `f < wrap f` is discounted --without-K.
-
-    data Pandora : Set where
-      C : ∞ ⊥ → Pandora
-
-    loop : (A : Set) → A ≡ Pandora → A
-    loop .Pandora refl = C (♯ (loop ⊥ foo))
-
-  `loop` is rejected since guardedness is not tracked at type `A`
-  --without-K.
-
-  See issues 1023, 1264, 1292.
-
-Termination checking
-====================
-
-* The termination checker can now recognize simple subterms in dot
-  patterns.
-
-    data Subst : (d : Nat) → Set where
-      c₁ : ∀ {d} → Subst d → Subst d
-      c₂ : ∀ {d₁ d₂} → Subst d₁ → Subst d₂ → Subst (suc d₁ + d₂)
-
-    postulate
-      comp : ∀ {d₁ d₂} → Subst d₁ → Subst d₂ → Subst (d₁ + d₂)
-
-    lookup : ∀ d → Nat → Subst d → Set₁
-    lookup d             zero    (c₁ ρ)             = Set
-    lookup d             (suc v) (c₁ ρ)             = lookup d v ρ
-    lookup .(suc d₁ + d₂) v      (c₂ {d₁} {d₂} ρ σ) = lookup (d₁ + d₂) v (comp ρ σ)
-
-  The dot pattern here is actually normalized, so it is
-
-    suc (d₁ + d₂)
-
-  and the corresponding recursive call argument is (d₁ + d₂).
-  In such simple cases, Agda can now recognize that the pattern is
-  constructor applied to call argument, which is valid descent.
-
-  Note however, that Agda only looks for syntactic equality when
-  identifying subterms, since it is not allowed to normalize terms on
-  the rhs during termination checking.
-
-  Actually writing the dot pattern has no effect, this works as well,
-  and looks pretty magical... ;-)
-
-    hidden : ∀{d} → Nat → Subst d → Set₁
-    hidden zero    (c₁ ρ)   = Set
-    hidden (suc v) (c₁ ρ)   = hidden v ρ
-    hidden v       (c₂ ρ σ) = hidden v (comp ρ σ)
-
-Tools
-=====
-
-LaTeX-backend
--------------
-
-* Fixed the issue of identifiers containing operators being typeset with
-  excessive math spacing.
-
-Bug fixes
-=========
-
-* Issue 1194
-
-* Issue 836:  Fields and constructors can be qualified by the
-  record/data *type* as well as by their record/data module.
-  This now works also for record/data type imported from
-  parametrized modules:
-
-    module M (_ : Set₁) where
-
-      record R : Set₁ where
-        field
-          X : Set
-
-    open M Set using (R)  -- rather than using (module R)
-
-    X : R → Set
-    X = R.X
-
-------------------------------------------------------------------------
--- Release notes for Agda version 2.4.2
-------------------------------------------------------------------------
-
-Important changes since 2.4.0.2:
-
-Pragmas and options
-===================
-
-* New option: --with-K.
-
-  This can be used to override a global --without-K in a file, by
-  adding a pragma {-# OPTIONS --with-K #-}.
-
-* New pragma {-# NON_TERMINATING #-}
-
-  This is a safer version of NO_TERMINATION_CHECK which doesn't treat the
-  affected functions as terminating. This means that NON_TERMINATING functions
-  do not reduce during type checking. They do reduce at run-time and when
-  invoking C-c C-n at top-level (but not in a hole).
-
-Language
-========
-
-* Instance search is now more efficient and recursive (see issue 938)
-  (but without termination check yet).
-
-  A new keyword `instance' has been introduced (in the style of
-  `abstract' and  `private') which must now be used for every
-  definition/postulate that has to be taken into account during instance
-  resolution. For example:
-
-    record RawMonoid (A : Set) : Set where
-      field
-        nil  : A
-        _++_ : A -> A -> A
-
-    open RawMonoid {{...}}
-
-    instance
-      rawMonoidList : {A : Set} -> RawMonoid (List A)
-      rawMonoidList = record { nil = []; _++_ = List._++_ }
-
-      rawMonoidMaybe : {A : Set} {{m : RawMonoid A}} -> RawMonoid (Maybe A)
-      rawMonoidMaybe {A} = record { nil = nothing ; _++_ = catMaybe }
-        where
-          catMaybe : Maybe A -> Maybe A -> Maybe A
-          catMaybe nothing mb = mb
-          catMaybe ma nothing = ma
-          catMaybe (just a) (just b) = just (a ++ b)
-
-  Moreover, each type of an instance must end in (something that reduces
-  to) a named type (e.g. a record, a datatype or a postulate). This
-  allows us to build a simple index structure
-
-    data/record name  -->  possible instances
-
-  that speeds up instance search.
-
-  Instance search takes into account all local bindings and all global
-  'instance' bindings and the search is recursive. For instance,
-  searching for
-
-    ? : RawMonoid (Maybe (List A))
-
-  will consider the candidates {rawMonoidList, rawMonoidMaybe}, fail to
-  unify the first one, succeeding with the second one
-
-    ? = rawMonoidMaybe {A = List A} {{m = ?m}} : RawMonoid (Maybe (List A))
-
-  and continue with goal
-
-    ?m : RawMonoid (List A)
-
-  This will then find
-
-    ?m = rawMonoidList {A = A}
-
-  and putting together we have the solution.
-
-  Be careful that there is no termination check for now, you can easily
-  make Agda loop by declaring the identity function as an instance. But
-  it shouldn’t be possible to make Agda loop by only declaring
-  structurally recursive instances (whatever that means).
-
-  Additionally:
-
-  * Uniqueness of instances is up to definitional equality (see issue 899).
-
-  * Instances of the following form are allowed:
-
-        EqSigma : {A : Set} {B : A → Set} {{EqA : Eq A}}
-                  {{EqB : {a : A} → Eq (B a)}}
-                  → Eq (Σ A B)
-
-    When searching recursively for an instance of type
-    `{a : A} → Eq (B a)', a lambda will automatically be introduced and
-    instance search will search for something of type `Eq (B a)' in
-    the context extended by `a : A'. When searching for an instance, the
-    `a' argument does not have to be implicit, but in the definition of
-    EqSigma, instance search will only be able to use EqB if `a' is implicit.
-
-  * There is no longer any attempt to solve irrelevant metas by instance
-    search.
-
-  * Constructors of records and datatypes are automatically added to the
-    instance table.
-
-* You can now use 'quote' in patterns.
-
-  For instance, here is a function that unquotes a (closed) natural number
-  term.
-
-    unquoteNat : Term → Maybe Nat
-    unquoteNat (con (quote Nat.zero) [])            = just zero
-    unquoteNat (con (quote Nat.suc) (arg _ n ∷ [])) = fmap suc (unquoteNat n)
-    unquoteNat _                                    = nothing
-
-* The builtin constructors AGDATERMUNSUPPORTED and AGDASORTUNSUPPORTED are now
-  translated to meta variables when unquoting.
-
-* New syntactic sugar 'tactic e' and 'tactic e | e1 | .. | en'.
-
-  It desugars as follows and makes it less unwieldy to call reflection-based
-  tactics.
-
-    tactic e                --> quoteGoal g in unquote (e g)
-    tactic e | e1 | .. | en --> quoteGoal g in unquote (e g) e1 .. en
-
-  Note that in the second form the tactic function should generate a function
-  from a number of new subgoals to the original goal. The type of e should be
-  Term -> Term in both cases.
-
-* New reflection builtins for literals.
-
-  The Term data type AGDATERM now needs an additional constructor AGDATERMLIT
-  taking a reflected literal defined as follows (with appropriate builtin
-  bindings for the types Nat, Float, etc).
-
-    data Literal : Set where
-      nat    : Nat    → Literal
-      float  : Float  → Literal
-      char   : Char   → Literal
-      string : String → Literal
-      qname  : QName  → Literal
-
-    {-# BUILTIN AGDALITERAL   Literal #-}
-    {-# BUILTIN AGDALITNAT    nat     #-}
-    {-# BUILTIN AGDALITFLOAT  float   #-}
-    {-# BUILTIN AGDALITCHAR   char    #-}
-    {-# BUILTIN AGDALITSTRING string  #-}
-    {-# BUILTIN AGDALITQNAME  qname   #-}
-
-  When quoting (quoteGoal or quoteTerm) literals will be mapped to the
-  AGDATERMLIT constructor. Previously natural number literals were quoted
-  to suc/zero application and other literals were quoted to
-  AGDATERMUNSUPPORTED.
-
-* New reflection builtins for function definitions.
-
-  AGDAFUNDEF should now map to a data type defined as follows
-  (with {-# BUILTIN QNAME       QName   #-}
-        {-# BUILTIN ARG         Arg     #-}
-        {-# BUILTIN AGDATERM    Term    #-}
-        {-# BUILTIN AGDATYPE    Type    #-}
-        {-# BUILTIN AGDALITERAL Literal #-}).
-
-    data Pattern : Set where
-      con    : QName → List (Arg Pattern) → Pattern
-      dot    : Pattern
-      var    : Pattern
-      lit    : Literal → Pattern
-      proj   : QName → Pattern
-      absurd : Pattern
-
-    {-# BUILTIN AGDAPATTERN   Pattern #-}
-    {-# BUILTIN AGDAPATCON    con     #-}
-    {-# BUILTIN AGDAPATDOT    dot     #-}
-    {-# BUILTIN AGDAPATVAR    var     #-}
-    {-# BUILTIN AGDAPATLIT    lit     #-}
-    {-# BUILTIN AGDAPATPROJ   proj    #-}
-    {-# BUILTIN AGDAPATABSURD absurd  #-}
-
-    data Clause : Set where
-      clause        : List (Arg Pattern) → Term → Clause
-      absurd-clause : List (Arg Pattern) → Clause
-
-    {-# BUILTIN AGDACLAUSE       Clause        #-}
-    {-# BUILTIN AGDACLAUSECLAUSE clause        #-}
-    {-# BUILTIN AGDACLAUSEABSURD absurd-clause #-}
-
-    data FunDef : Set where
-      fun-def : Type → List Clause → FunDef
-
-    {-# BUILTIN AGDAFUNDEF    FunDef  #-}
-    {-# BUILTIN AGDAFUNDEFCON fun-def #-}
-
-* New reflection builtins for extended (pattern-matching) lambda.
-
-  The AGDATERM data type has been augmented with a constructor
-
-    AGDATERMEXTLAM : List AGDACLAUSE → List (ARG AGDATERM) → AGDATERM
-
-  Absurd lambdas (λ ()) are quoted to extended lambdas with an absurd clause.
-
-* Unquoting declarations.
-
-  You can now define (recursive) functions by reflection using the new
-  unquoteDecl declaration
-
-    unquoteDecl x = e
-
-  Here e should have type AGDAFUNDEF and evaluate to a closed value. This value
-  is then spliced in as the definition of x. In the body e, x has type QNAME
-  which lets you splice in recursive definitions.
-
-  Standard modifiers, such as fixity declarations, can be applied to x as
-  expected.
-
-* Quoted levels
-
-  Universe levels are now quoted properly instead of being quoted to
-  AGDASORTUNSUPPORTED. Setω  still gets an unsupported sort, however.
-
-* Module applicants can now be operator applications. Example:
-
-    postulate
-      [_] : A -> B
-
-    module M (b : B) where
-
-    module N (a : A) = M [ a ]
-
-  [See Issue 1245.]
-
-* Minor change in module application semantics. [Issue 892]
-
-  Previously re-exported functions were not redefined when instantiating a
-  module. For instance
-
-    module A where f = ...
-    module B (X : Set) where
-      open A public
-    module C = B Nat
-
-  In this example C.f would be an alias for A.f, so if both A and C were opened
-  f would not be ambiguous. However, this behaviour is not correct when A and B
-  share some module parameters (issue 892). To fix this C now defines its own
-  copy of f (which evaluates to A.f), which means that opening A and C results
-  in an ambiguous f.
-
-Type checking
-=============
-
-* Recursive records need to be declared as either inductive or coinductive.
-  'inductive' is no longer default for recursive records.
-  Examples:
-
-    record _×_ (A B : Set) : Set where
-      constructor _,_
-      field
-        fst : A
-        snd : B
-
-    record Tree (A : Set) : Set where
-      inductive
-      constructor tree
-      field
-        elem     : A
-        subtrees : List (Tree A)
-
-    record Stream (A : Set) : Set where
-      coinductive
-      constructor _::_
-      field
-        head : A
-        tail : Stream A
-
-  If you are using old-style (musical) coinduction, a record may have
-  to be declared as inductive, paradoxically.
-
-    record Stream (A : Set) : Set where
-      inductive -- YES, THIS IS INTENDED !
-      constructor _∷_
-      field
-        head : A
-        tail : ∞ (Stream A)
-
-  This is because the ``coinduction'' happens in the use of `∞' and not
-  in the use of `record'.
-
-Tools
-=====
-
-Emacs mode
-----------
-
-* A new menu option "Display" can be used to display the version of
-  the running Agda process.
-
-LaTeX-backend
--------------
-
-* New experimental option ``references'' has been added. When specified,
-  i.e.:
-
-      \usepackage[references]{agda}
-
-  a new command called \AgdaRef is provided, which lets you reference
-  previously typeset commands, e.g.:
-
-      Let us postulate \AgdaRef{apa}.
-
-      \begin{code}
-      postulate
-        apa : Set
-      \end{code}
-
-  Above ``apa'' will be typeset (highlighted) the same in the text as in
-  the code, provided that the LaTeX output is post-processed using
-  src/data/postprocess-latex.pl, e.g.:
-
-    cp $(dirname $(dirname $(agda-mode locate)))/postprocess-latex.pl .
-    agda -i. --latex Example.lagda
-    cd latex/
-    perl ../postprocess-latex.pl Example.tex > Example.processed
-    mv Example.processed Example.tex
-    xelatex Example.tex
-
-  Mix-fix and unicode should work as expected (unicode requires
-  XeLaTeX/LuaLaTeX), but there are limitations:
-
-    + Overloading identifiers should be avoided, if multiples exist
-      \AgdaRef will typeset according to the first it finds.
-
-    + Only the current module is used, should you need to reference
-      identifiers in other modules then you need to specify which other
-      module manually, i.e. \AgdaRef[module]{identifier}.
-
-------------------------------------------------------------------------
--- Release notes for Agda 2 version 2.4.0.2
-------------------------------------------------------------------------
-
-Important changes since 2.4.0.1:
-
-* The Agda input mode now supports alphabetical super and subscripts,
-  in addition to the numerical ones that were already present.
-  [Issue 1240]
-
-* New feature: Interactively split result.
-
-  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) = ?
-
-  If hole is of function type ending in a record type, the necessary
-  pattern variables will be introduced before the split.  Thus, the
-  same result can be obtained by starting from:
-
-    test : {A B : Set} (a : A) (b : B) → A × B
-    test = ?
-
-* The so far undocumented ETA pragma now throws an error if applied to
-  definitions that are not records.
-
-  ETA can be used to force eta-equality at recursive record types,
-  for which eta is not enabled automatically by Agda.
-  Here is such an example:
-
-    mutual
-      data Colist (A : Set) : Set where
-        [] : Colist A
-        _∷_ : A → ∞Colist A → Colist A
-
-      record ∞Colist (A : Set) : Set where
-        coinductive
-        constructor delay
-        field       force : Colist A
-
-    open ∞Colist
-
-    {-# ETA ∞Colist #-}
-
-    test : {A : Set} (x : ∞Colist A) → x ≡ delay (force x)
-    test x = refl
-
-  Note:  Unsafe use of ETA can make Agda loop, e.g. by triggering
-  infinite eta expansion!
-
-* Bugs fixed (see https://code.google.com/p/agda/issues):
-  1203
-  1205
-  1209
-  1213
-  1214
-  1216
-  1225
-  1226
-  1231
-  1233
-  1239
-  1241
-  1243
-
-------------------------------------------------------------------------
--- Release notes for Agda 2 version 2.4.0.1
-------------------------------------------------------------------------
-
-Important changes since 2.4.0:
-
-* The option --compile-no-main has been renamed to --no-main.
-
-* COMPILED_DATA pragmas can now be given for records.
-
-* Various bug fixes.
-
-------------------------------------------------------------------------
--- Release notes for Agda 2 version 2.4.0
-------------------------------------------------------------------------
-
-Important changes since 2.3.2.2:
-
-Installation and infrastructure
-===============================
-
-* A new module called Agda.Primitive has been introduced. This module
-  is available to all users, even if the standard library is not used.
-  Currently the module contains level primitives and their
-  representation in Haskell when compiling with MAlonzo:
-
-    infixl 6 _⊔_
-
-    postulate
-      Level : Set
-      lzero : Level
-      lsuc  : (ℓ : Level) → Level
-      _⊔_   : (ℓ₁ ℓ₂ : Level) → Level
-
-    {-# COMPILED_TYPE Level ()      #-}
-    {-# COMPILED lzero ()           #-}
-    {-# COMPILED lsuc  (\_ -> ())   #-}
-    {-# COMPILED _⊔_   (\_ _ -> ()) #-}
-
-    {-# BUILTIN LEVEL     Level  #-}
-    {-# BUILTIN LEVELZERO lzero  #-}
-    {-# BUILTIN LEVELSUC  lsuc   #-}
-    {-# BUILTIN LEVELMAX  _⊔_    #-}
-
-  To bring these declarations into scope you can use a declaration
-  like the following one:
-
-    open import Agda.Primitive using (Level; lzero; lsuc; _⊔_)
-
-  The standard library reexports these primitives (using the names
-  zero and suc instead of lzero and lsuc) from the Level module.
-
-  Existing developments using universe polymorphism might now trigger
-  the following error message:
-
-    Duplicate binding for built-in thing LEVEL, previous binding to
-    .Agda.Primitive.Level
-
-  To fix this problem, please remove the duplicate bindings.
-
-  Technical details (perhaps relevant to those who build Agda
-  packages):
-
-  The include path now always contains a directory <DATADIR>/lib/prim,
-  and this directory is supposed to contain a subdirectory Agda
-  containing a file Primitive.agda.
-
-  The standard location of <DATADIR> is system- and
-  installation-specific.  E.g., in a cabal --user installation of
-  Agda-2.3.4 on a standard single-ghc Linux system it would be
-  $HOME/.cabal/share/Agda-2.3.4 or something similar.
-
-  The location of the <DATADIR> directory can be configured at
-  compile-time using Cabal flags (--datadir and --datasubdir).
-  The location can also be set at run-time, using the Agda_datadir
-  environment variable.
-
-Pragmas and options
-===================
-
-* Pragma NO_TERMINATION_CHECK placed within a mutual block is now
-  applied to the whole mutual block (rather than being discarded
-  silently).  Adding to the uses 1.-4. outlined in the release notes
-  for 2.3.2 we allow:
-
-  3a. Skipping an old-style mutual block: Somewhere within 'mutual'
-      block before a type signature or first function clause.
-
-       mutual
-         {-# NO_TERMINATION_CHECK #-}
-         c : A
-         c = d
-
-         d : A
-         d = c
-
-* New option --no-pattern-matching
-
-  Disables all forms of pattern matching (for the current file).
-  You can still import files that use pattern matching.
-
-* New option -v profile:7
-
-  Prints some stats on which phases Agda spends how much time.
-  (Number might not be very reliable, due to garbage collection
-  interruptions, and maybe due to laziness of Haskell.)
-
-* New option --no-sized-types
-
-  Option --sized-types is now default.
-  --no-sized-types will turn off an extra (inexpensive) analysis on
-  data types used for subtyping of sized types.
-
-Language
-========
-
-* Experimental feature: quoteContext
-
-  There is a new keyword 'quoteContext' that gives users access to the
-  list of names in the current local context. For instance:
-
-    open import Data.Nat
-    open import Data.List
-    open import Reflection
-
-    foo : ℕ → ℕ → ℕ
-    foo 0 m = 0
-    foo (suc n) m = quoteContext xs in ?
-
-  In the remaining goal, the list xs will consist of two names, n and
-  m, corresponding to the two local variables. At the moment it is not
-  possible to access let bound variables -- this feature may be added
-  in the future.
-
-* Experimental feature: Varying arity.
-  Function clauses may now have different arity, e.g.,
-
-    Sum : ℕ → Set
-    Sum 0       = ℕ
-    Sum (suc n) = ℕ → Sum n
-
-    sum : (n : ℕ) → ℕ → Sum n
-    sum 0       acc   = acc
-    sum (suc n) acc m = sum n (m + acc)
-
-  or,
-
-    T : Bool → Set
-    T true  = Bool
-    T false = Bool → Bool
-
-    f : (b : Bool) → T b
-    f false true  = false
-    f false false = true
-    f true = true
-
-  This feature is experimental.  Yet unsupported:
-  * Varying arity and 'with'.
-  * Compilation of functions with varying arity to Haskell, JS, or Epic.
-
-* Experimental feature: copatterns.  (Activated with option --copatterns)
-
-  We can now define a record by explaining what happens if you project
-  the record.  For instance:
-
-    {-# OPTIONS --copatterns #-}
-
-    record _×_ (A B : Set) : Set where
-      constructor _,_
-      field
-        fst : A
-        snd : B
-    open _×_
-
-    pair : {A B : Set} → A → B → A × B
-    fst (pair a b) = a
-    snd (pair a b) = b
-
-    swap : {A B : Set} → A × B → B × A
-    fst (swap p) = snd p
-    snd (swap p) = fst p
-
-    swap3 : {A B C : Set} → A × (B × C) → C × (B × A)
-    fst (swap3 t)       = snd (snd t)
-    fst (snd (swap3 t)) = fst (snd t)
-    snd (snd (swap3 t)) = fst t
-
-  Taking a projection on the left hand side (lhs) is called a
-  projection pattern, applying to a pattern is called an application
-  pattern.  (Alternative terms: projection/application copattern.)
-
-  In the first example, the symbol 'pair', if applied to variable
-  patterns a and b and then projected via fst, reduces to a.
-  'pair' by itself does not reduce.
-
-  A typical application are coinductive records such as streams:
-
-    record Stream (A : Set) : Set where
-      coinductive
-      field
-        head : A
-        tail : Stream A
-    open Stream
-
-    repeat : {A : Set} (a : A) -> Stream A
-    head (repeat a) = a
-    tail (repeat a) = repeat a
-
-  Again, 'repeat a' by itself will not reduce, but you can take
-  a projection (head or tail) and then it will reduce to the
-  respective rhs.  This way, we get the lazy reduction behavior
-  necessary to avoid looping corecursive programs.
-
-  Application patterns do not need to be trivial (i.e., variable
-  patterns), if we mix with projection patterns.  E.g., we can have
-
-    nats : Nat -> Stream Nat
-    head (nats zero) = zero
-    tail (nats zero) = nats zero
-    head (nats (suc x)) = x
-    tail (nats (suc x)) = nats x
-
-  Here is an example (not involving coinduction) which demostrates
-  records with fields of function type:
-
-    -- The State monad
-
-    record State (S A : Set) : Set where
-      constructor state
-      field
-        runState : S → A × S
-    open State
-
-    -- The Monad type class
-
-    record Monad (M : Set → Set) : Set1 where
-      constructor monad
-      field
-        return : {A : Set}   → A → M A
-        _>>=_  : {A B : Set} → M A → (A → M B) → M B
-
-
-    -- State is an instance of Monad
-    -- Demonstrates the interleaving of projection and application patterns
-
-    stateMonad : {S : Set} → Monad (State S)
-    runState (Monad.return stateMonad a  ) s  = a , s
-    runState (Monad._>>=_  stateMonad m k) s₀ =
-      let a , s₁ = runState m s₀
-      in  runState (k a) s₁
-
-    module MonadLawsForState {S : Set} where
-
-      open Monad (stateMonad {S})
-
-      leftId : {A B : Set}(a : A)(k : A → State S B) →
-        (return a >>= k) ≡ k a
-      leftId a k = refl
-
-      rightId : {A B : Set}(m : State S A) →
-        (m >>= return) ≡ m
-      rightId m = refl
-
-      assoc : {A B C : 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
-
-  Copatterns are yet experimental and the following does not work:
-
-  * Copatterns and 'with' clauses.
-
-  * Compilation of copatterns to Haskell, JS, or Epic.
-
-  * Projections generated by
-      open R {{...}}
-    are not handled properly on lhss yet.
-
-  * Conversion checking is slower in the presence of copatterns,
-    since stuck definitions of record type do no longer count
-    as neutral, since they can become unstuck by applying a projection.
-    Thus, comparing two neutrals currently requires comparing all
-    they projections, which repeats a lot of work.
-
-* Top-level module no longer required.
-
-  The top-level module can be omitted from an Agda file. The module name is
-  then inferred from the file name by dropping the path and the .agda
-  extension. So, a module defined in /A/B/C.agda would get the name C.
-
-  You can also suppress only the module name of the top-level module by writing
-
-    module _ where
-
-  This works also for parameterised modules.
-
-* Module parameters are now always hidden arguments in projections.
-  For instance:
-
-    module M (A : Set) where
-
-      record Prod (B : Set) : Set where
-        constructor _,_
-        field
-          fst : A
-          snd : B
-      open Prod public
-
-    open M
-
-  Now, the types of fst and snd are
-
-    fst : {A : Set}{B : Set} → Prod A B → A
-    snd : {A : Set}{B : Set} → Prod A B → B
-
-  Until 2.3.2, they were
-
-    fst : (A : Set){B : Set} → Prod A B → A
-    snd : (A : Set){B : Set} → Prod A B → B
-
-  This change is a step towards symmetry of constructors and projections.
-  (Constructors always took the module parameters as hidden arguments).
-
-* Telescoping lets: Local bindings are now accepted in telescopes
-  of modules, function types, and lambda-abstractions.
-
-  The syntax of telescopes as been extended to support 'let':
-
-    id : (let ★ = Set) (A : ★) → A → A
-    id A x = x
-
-  In particular one can now 'open' modules inside telescopes:
-
-   module Star where
-     ★ : Set₁
-     ★ = Set
-
-   module MEndo (let open Star) (A : ★) where
-     Endo : ★
-     Endo = A → A
-
-  Finally a shortcut is provided for opening modules:
-
-    module N (open Star) (A : ★) (open MEndo A) (f : Endo) where
-      ...
-
-  The semantics of the latter is
-
-    module _ where
-      open Star
-      module _ (A : ★) where
-        open MEndo A
-        module N (f : Endo) where
-          ...
-
-  The semantics of telescoping lets in function types and lambda
-  abstractions is just expanding them into ordinary lets.
-
-* More liberal left-hand sides in lets [Issue 1028]:
-
-    You can now write left-hand sides with arguments also for let bindings
-    without a type signature. For instance,
-
-      let f x = suc x in f zero
-
-    Let bound functions still can't do pattern matching though.
-
-* Ambiguous names in patterns are now optimistically resolved in favor
-  of constructors. [Issue 822] In particular, the following succeeds now:
-
-    module M where
-
-      data D : Set₁ where
-        [_] : Set → D
-
-    postulate [_] : Set → Set
-
-    open M
-
-    Foo : _ → Set
-    Foo [ A ] = A
-
-* Anonymous where-modules are opened public. [Issue 848]
-
-    <clauses>
-    f args = rhs
-      module _ telescope where
-        body
-    <more clauses>
-
-  means the following (not proper Agda code, since you cannot put a
-  module in-between clauses)
-
-    <clauses>
-    module _ {arg-telescope} telescope where
-      body
-
-    f args = rhs
-    <more clauses>
-
-  Example:
-
-    A : Set1
-    A = B module _ where
-      B : Set1
-      B = Set
-
-    C : Set1
-    C = B
-
-* Builtin ZERO and SUC have been merged with NATURAL.
-
-  When binding the NATURAL builtin, ZERO and SUC are bound to the appropriate
-  constructors automatically. This means that instead of writing
-
-    {-# BUILTIN NATURAL Nat #-}
-    {-# BUILTIN ZERO zero #-}
-    {-# BUILTIN SUC suc #-}
-
-  you just write
-
-    {-# BUILTIN NATURAL Nat #-}
-
-* Pattern synonym can now have implicit arguments. [Issue 860]
-
-  For example,
-
-    pattern tail=_ {x} xs = x ∷ xs
-
-    len : ∀ {A} → List A → Nat
-    len []         = 0
-    len (tail= xs) = 1 + len xs
-
-* Syntax declarations can now have implicit arguments. [Issue 400]
-
-  For example
-
-    id : ∀ {a}{A : Set a} -> A -> A
-    id x = x
-
-    syntax id {A} x = x ∈ A
-
-* Minor syntax changes
-
-  * -} is now parsed as end-comment even if no comment was begun.
-    As a consequence, the following definition gives a parse error
-
-      f : {A- : Set} -> Set
-      f {A-} = A-
-
-    because Agda now sees ID(f) LBRACE ID(A) END-COMMENT, and no
-    longer ID(f) LBRACE ID(A-) RBRACE.
-
-    The rational is that the previous lexing was to context-sensitive,
-    attempting to comment-out f using {- and -} lead to a parse error.
-
-  * Fixities (binding strengths) can now be negative numbers as
-    well. [Issue 1109]
-
-      infix -1 _myop_
-
-  * Postulates are now allowed in mutual blocks. [Issue 977]
-
-  * Empty where blocks are now allowed. [Issue 947]
-
-  * Pattern synonyms are now allowed in parameterised modules. [Issue 941]
-
-  * Empty hiding and renaming lists in module directives are now allowed.
-
-  * Module directives using, hiding, renaming and public can now appear in
-    arbitrary order. Multiple using/hiding/renaming directives are allowed, but
-    you still cannot have both using and hiding (because that doesn't make
-    sense). [Issue 493]
-
-Goal and error display
-======================
-
-* The error message "Refuse to construct infinite term" has been
-  removed, instead one gets unsolved meta variables.  Reason: the
-  error was thrown over-eagerly. [Issue 795]
-
-* If an interactive case split fails with message
-
-    Since goal is solved, further case distinction is not supported;
-    try `Solve constraints' instead
-
-  then the associated interaction meta is assigned to a solution.
-  Press C-c C-= (Show constraints) to view the solution and C-c C-s
-  (Solve constraints) to apply it. [Issue 289]
-
-Type checking
-=============
-
-* [ issue 376 ] Implemented expansion of bound record variables during meta assignment.
-  Now Agda can solve for metas X that are applied to projected variables, e.g.:
-
-    X (fst z) (snd z) = z
-
-    X (fst z)         = fst z
-
-  Technically, this is realized by substituting (x , y) for z with fresh
-  bound variables x and y.  Here the full code for the examples:
-
-    record Sigma (A : Set)(B : A -> Set) : Set where
-      constructor _,_
-      field
-        fst : A
-        snd : B fst
-    open Sigma
-
-    test : (A : Set) (B : A -> Set) ->
-      let X : (x : A) (y : B x) -> Sigma A B
-          X = _
-      in  (z : Sigma A B) -> X (fst z) (snd z) ≡ z
-    test A B z = refl
-
-    test' : (A : Set) (B : A -> Set) ->
-      let X : A -> A
-          X = _
-      in  (z : Sigma A B) -> X (fst z) ≡ fst z
-    test' A B z = refl
-
-  The fresh bound variables are named fst(z) and snd(z) and can appear
-  in error messages, e.g.:
-
-    fail : (A : Set) (B : A -> Set) ->
-      let X : A -> Sigma A B
-          X = _
-      in  (z : Sigma A B) -> X (fst z) ≡ z
-    fail A B z = refl
-
-  results in error:
-
-    Cannot instantiate the metavariable _7 to solution fst(z) , snd(z)
-    since it contains the variable snd(z) which is not in scope of the
-    metavariable or irrelevant in the metavariable but relevant in the
-    solution
-    when checking that the expression refl has type _7 A B (fst z) ≡ z
-
-* Dependent record types and definitions by copatterns require
-  reduction with previous function clauses while checking the
-  current clause. [Issue 907]
-
-  For a simple example, consider
-
-    test : ∀ {A} → Σ Nat λ n → Vec A n
-    proj₁ test = zero
-    proj₂ test = []
-
-  For the second clause, the lhs and rhs are typed as
-
-    proj₂ test : Vec A (proj₁ test)
-    []         : Vec A zero
-
-  In order for these types to match, we have to reduce the lhs type
-  with the first function clause.
-
-  Note that termination checking comes after type checking, so be
-  careful to avoid non-termination!  Otherwise, the type checker
-  might get into an infinite loop.
-
-* The implementation of the primitive primTrustMe has changed.
-  It now only reduces to REFL if the two arguments x and y have
-  the same computational normal form.  Before, it reduced when
-  x and y were definitionally equal, which included type-directed
-  equality laws such as eta-equality.  Yet because reduction is
-  untyped, calling conversion from reduction lead to Agda crashes
-  [Issue 882].
-
-  The amended description of primTrustMe is (cf. release notes for 2.2.6):
-
-    primTrustMe : {A : Set} {x y : A} → x ≡ y
-
-  Here _≡_ is the builtin equality (see BUILTIN hooks for equality,
-  above).
-
-  If x and y have the same computational normal form, then
-  primTrustMe {x = x} {y = y} reduces to refl.
-
-  A note on primTrustMe's runtime behavior:
-  The MAlonzo compiler replaces all uses of primTrustMe with the
-  REFL builtin, without any check for definitional equality. Incorrect
-  uses of primTrustMe can potentially lead to segfaults or similar
-  problems of the compiled code.
-
-* Implicit patterns of record type are now only eta-expanded if there
-  is a record constructor. [Issues 473, 635]
-
-    data D : Set where
-      d : D
-
-    data P : D → Set where
-      p : P d
-
-    record Rc : Set where
-      constructor c
-      field f : D
-
-    works : {r : Rc} → P (Rc.f r) → Set
-    works p = D
-
-  This works since the implicit pattern {r} is eta-expanded to
-  {c x} which allows the type of p to reduce to P x and x to be
-  unified with d.  The corresponding explicit version is:
-
-    works' : (r : Rc) → P (Rc.f r) → Set
-    works' (c .d) p = D
-
-  However, if the record constructor is removed, the same example will
-  fail:
-
-    record R : Set where
-      field f : D
-
-    fails : {r : R} → P (R.f r) → Set
-    fails p = D
-
-    -- d != R.f r of type D
-    -- when checking that the pattern p has type P (R.f r)
-
-  The error is justified since there is no pattern we could write down
-  for r.  It would have to look like
-
-    record { f = .d }
-
-  but anonymous record patterns are not part of the language.
-
-* Absurd lambdas at different source locations are no longer
-  different. [Issue 857]
-  In particular, the following code type-checks now:
-
-    absurd-equality : _≡_ {A = ⊥ → ⊥} (λ()) λ()
-    absurd-equality = refl
-
-  Which is a good thing!
-
-* Printing of named implicit function types.
-
-  When printing terms in a context with bound variables Agda renames new
-  bindings to avoid clashes with the previously bound names. For instance, if A
-  is in scope, the type (A : Set) → A is printed as (A₁ : Set) → A₁. However,
-  for implicit function types the name of the binding matters, since it can be
-  used when giving implicit arguments.
-
-  For this situation, the following new syntax has been introduced:
-  {x = y : A} → B is an implicit function type whose bound variable (in scope
-  in B) is y, but where the name of the argument is x for the purposes of
-  giving it explicitly. For instance, with A in scope, the type {A : Set} → A
-  is now printed as {A = A₁ : Set} → A₁.
-
-  This syntax is only used when printing and is currently not being parsed.
-
-* Changed the semantics of --without-K. [Issue 712, Issue 865, Issue 1025]
-
-  New specification of --without-K:
-
-  When --without-K is enabled, the unification of indices for pattern matching
-  is restricted in two ways:
-
-  1. Reflexive equations of the form x == x are no longer solved, instead Agda
-     gives an error when such an equation is encountered.
-
-  2. When unifying two same-headed constructor forms 'c us' and 'c vs' of type
-     'D pars ixs', the datatype indices ixs (but not the parameters) have to
-     be *self-unifiable*, i.e. unification of ixs with itself should succeed
-     positively. This is a nontrivial requirement because of point 1.
-
-  Examples:
-
-  * The J rule is accepted.
-
-      J : {A : Set} (P : {x y : A} → x ≡ y → Set) →
-          (∀ x → P (refl x)) →
-          ∀ {x y} (x≡y : x ≡ y) → P x≡y
-      J P p (refl x) = p x
-
-    This definition is accepted since unification of x with y doesn't require
-    deletion or injectivity.
-
-  * The K rule is rejected.
-
-      K : {A : Set} (P : {x : A} → x ≡ x → Set) →
-          (∀ x → P (refl {x = x})) →
-         ∀ {x} (x≡x : x ≡ x) → P x≡x
-      K P p refl = p _
-
-    Definition is rejected with the following error:
-
-      Cannot eliminate reflexive equation x = x of type A because K has
-      been disabled.
-      when checking that the pattern refl has type x ≡ x
-
-  * Symmetry of the new criterion.
-
-      test₁ : {k l m : ℕ} → k + l ≡ m → ℕ
-      test₁ refl = zero
-
-      test₂ : {k l m : ℕ} → k ≡ l + m → ℕ
-      test₂ refl = zero
-
-    Both versions are now accepted (previously only the first one was).
-
-  * Handling of parameters.
-
-      cons-injective : {A : Set} (x y : A) → (x ∷ []) ≡ (y ∷ []) → x ≡ y
-      cons-injective x .x refl = refl
-
-    Parameters are not unified, so they are ignored by the new criterion.
-
-  * A larger example: antisymmetry of ≤.
-
-      data _≤_ : ℕ → ℕ → Set where
-        lz : (n : ℕ) → zero ≤ n
-        ls : (m n : ℕ) → m ≤ n → suc m ≤ suc n
-
-      ≤-antisym : (m n : ℕ) → m ≤ n → n ≤ m → m ≡ n
-      ≤-antisym .zero    .zero    (lz .zero) (lz .zero)   = refl
-      ≤-antisym .(suc m) .(suc n) (ls m n p) (ls .n .m q) =
-                   cong suc (≤-antisym m n p q)
-
-  * [ Issue 1025 ]
-
-      postulate mySpace : Set
-      postulate myPoint : mySpace
-
-      data Foo : myPoint ≡ myPoint → Set where
-        foo : Foo refl
-
-      test : (i : foo ≡ foo) → i ≡ refl
-      test refl = {!!}
-
-    When applying injectivity to the equation "foo ≡ foo" of type "Foo refl",
-    it is checked that the index refl of type "myPoint ≡ myPoint" is
-    self-unifiable. The equation "refl ≡ refl" again requires injectivity, so
-    now the index myPoint is checked for self-unifiability, hence the error:
-
-      Cannot eliminate reflexive equation myPoint = myPoint of type
-      mySpace because K has been disabled.
-      when checking that the pattern refl has type foo ≡ foo
-
-Termination checking
-====================
-
-* A buggy facility coined "matrix-shaped orders" that supported
-  uncurried functions (which take tuples of arguments instead of one
-  argument after another) has been removed from the termination
-  checker. [Issue 787]
-
-* Definitions which fail the termination checker are not unfolded any
-  longer to avoid loops or stack overflows in Agda.  However, the
-  termination checker for a mutual block is only invoked after
-  type-checking, so there can still be loops if you define a
-  non-terminating function.  But termination checking now happens
-  before the other supplementary checks: positivity, polarity,
-  injectivity and projection-likeness.
-  Note that with the pragma {-# NO_TERMINATION_CHECK #-} you can make
-  Agda treat any function as terminating.
-
-* Termination checking of functions defined by 'with' has been improved.
-
-  Cases which previously required --termination-depth
-  to pass the termination checker (due to use of 'with') no longer
-  need the flag. For example
-
-    merge : List A → List A → List A
-    merge [] ys = ys
-    merge xs [] = xs
-    merge (x ∷ xs) (y ∷ ys) with x ≤ y
-    merge (x ∷ xs) (y ∷ ys)    | false = y ∷ merge (x ∷ xs) ys
-    merge (x ∷ xs) (y ∷ ys)    | true  = x ∷ merge xs (y ∷ ys)
-
-  This failed to termination check previously, since the 'with' expands to an
-  auxiliary function merge-aux:
-
-    merge-aux x y xs ys false = y ∷ merge (x ∷ xs) ys
-    merge-aux x y xs ys true  = x ∷ merge xs (y ∷ ys)
-
-  This function makes a call to merge in which the size of one of the arguments
-  is increasing. To make this pass the termination checker now inlines the
-  definition of merge-aux before checking, thus effectively termination
-  checking the original source program.
-
-  As a result of this transformation doing 'with' on a variable no longer
-  preserves termination. For instance, this does not termination check:
-
-    bad : Nat → Nat
-    bad n with n
-    ... | zero  = zero
-    ... | suc m = bad m
-
-* The performance of the termination checker has been improved.  For
-  higher --termination-depth the improvement is significant.
-  While the default --termination-depth is still 1, checking with
-  higher --termination-depth should now be feasible.
-
-Compiler backends
-=================
-
-* The MAlonzo compiler backend now has support for compiling modules
-  that are not full programs (i.e. don't have a main function). The
-  goal is that you can write part of a program in Agda and the rest in
-  Haskell, and invoke the Agda functions from the Haskell code. The
-  following features were added for this reason:
-
-  * A new command-line option --compile-no-main: the command
-
-      agda --compile-no-main Test.agda
-
-    will compile Test.agda and all its dependencies to Haskell and
-    compile the resulting Haskell files with --make, but (unlike
-    --compile) not tell GHC to treat Test.hs as the main module. This
-    type of compilation can be invoked from emacs by customizing the
-    agda2-backend variable to value MAlonzoNoMain and then calling
-    "C-c C-x C-c" as before.
-
-  * A new pragma COMPILED_EXPORT was added as part of the MAlonzo FFI.
-    If we have an Agda file containing the following:
-
-       module A.B where
-
-       test : SomeType
-       test = someImplementation
-
-       {-# COMPILED_EXPORT test someHaskellId #-}
-
-    then test will be compiled to a Haskell function called
-    someHaskellId in module MAlonzo.Code.A.B that can be invoked from
-    other Haskell code. Its type will be translated according to the
-    normal MAlonzo rules.
-
-Tools
-=====
-
-Emacs mode
-----------
-
-* A new goal command "Helper Function Type" (C-c C-h) has been added.
-
-  If you write an application of an undefined function in a goal, the Helper
-  Function Type command will print the type that the function needs to have in
-  order for it to fit the goal. The type is also added to the Emacs kill-ring
-  and can be pasted into the buffer using C-y.
-
-  The application must be of the form "f args" where f is the name of the
-  helper function you want to create. The arguments can use all the normal
-  features like named implicits or instance arguments.
-
-  Example:
-
-    Here's a start on a naive reverse on vectors:
-
-      reverse : ∀ {A n} → Vec A n → Vec A n
-      reverse [] = []
-      reverse (x ∷ xs) = {!snoc (reverse xs) x!}
-
-    Calling C-c C-h in the goal prints
-
-      snoc : ∀ {A} {n} → Vec A n → A → Vec A (suc n)
-
-* A new command "Explain why a particular name is in scope" (C-c C-w) has been
-  added. [Issue207]
-
-  This command can be called from a goal or from the top-level and will as the
-  name suggests explain why a particular name is in scope.
-
-  For each definition or module that the given name can refer to a trace is
-  printed of all open statements and module applications leading back to the
-  original definition of the name.
-
-  For example, given
-
-    module A (X : Set₁) where
-      data Foo : Set where
-        mkFoo : Foo
-    module B (Y : Set₁) where
-      open A Y public
-    module C = B Set
-    open C
-
-  Calling C-c C-w on mkFoo at the top-level prints
-
-    mkFoo is in scope as
-    * a constructor Issue207.C._.Foo.mkFoo brought into scope by
-      - the opening of C at Issue207.agda:13,6-7
-      - the application of B at Issue207.agda:11,12-13
-      - the application of A at Issue207.agda:9,8-9
-      - its definition at Issue207.agda:6,5-10
-
-  This command is useful if Agda complains about an ambiguous name and you need
-  to figure out how to hide the undesired interpretations.
-
-* Improvements to the "make case" command (C-c C-c)
-
-  - One can now also split on hidden variables, using the name
-    (starting with .) with which they are printed.
-    Use C-c C-, to see all variables in context.
-
-  - Concerning the printing of generated clauses:
-
-  * Uses named implicit arguments to improve readability.
-
-  * Picks explicit occurrences over implicit ones when there is a choice of
-    binding site for a variable.
-
-  * Avoids binding variables in implicit positions by replacing dot patterns
-    that uses them by wildcards (._).
-
-* Key bindings for lots of "mathematical" characters (examples: 𝐴𝑨𝒜𝓐𝔄)
-  have been added to the Agda input method.
-  Example: type \MiA\MIA\McA\MCA\MfA to get 𝐴𝑨𝒜𝓐𝔄.
-
-  Note: \McB does not exist in unicode (as well as others in that style),
-  but the \MC (bold) alphabet is complete.
-
-* Key bindings for "blackboard bold" B (𝔹) and 0-9 (𝟘-𝟡) have been added
-  to the Agda input method (\bb and \b[0-9]).
-
-* Key bindings for controlling simplification/normalisation:
-
-  [TODO: Simplification should be explained somewhere.]
-
-  Commands like "Goal type and context" (C-c C-,) could previously be
-  invoked in two ways. By default the output was normalised, but if a
-  prefix argument was used (for instance via C-u C-c C-,), then no
-  explicit normalisation was performed. Now there are three options:
-
-  * By default (C-c C-,) the output is simplified.
-
-  * If C-u is used exactly once (C-u C-c C-,), then the result is
-    neither (explicitly) normalised nor simplified.
-
-  * If C-u is used twice (C-u C-u C-c C-,), then the result is
-    normalised.
-
-  [TODO: As part of the release of Agda 2.3.4 the key binding page on
-  the wiki should be updated.]
-
-LaTeX-backend
--------------
-
-* Two new color scheme options were added to agda.sty:
-
-  \usepackage[bw]{agda}, which highlights in black and white;
-  \usepackage[conor]{agda}, which highlights using Conor's colors.
-
-  The default (no options passed) is to use the standard colors.
-
-* If agda.sty cannot be found by the latex environment, it is now
-  copied into the latex output directory ('latex' by default) instead
-  of the working directory. This means that the commands needed to
-  produce a PDF now is
-
-    agda --latex -i . <file>.lagda
-    cd latex
-    pdflatex <file>.tex
-
-* The LaTeX-backend has been made more tool agnostic, in particular
-  XeLaTeX and LuaLaTeX should now work. Here is a small example
-  (test/LaTeXAndHTML/succeed/UnicodeInput.lagda):
-
-    \documentclass{article}
-    \usepackage{agda}
-    \begin{document}
-
-    \begin{code}
-    data αβγδεζθικλμνξρστυφχψω : Set₁ where
-
-    postulate
-      →⇒⇛⇉⇄↦⇨↠⇀⇁ : Set
-    \end{code}
-
-    \[
-    ∀X [ ∅ ∉ X ⇒ ∃f:X ⟶  ⋃ X\ ∀A ∈ X (f(A) ∈ A) ]
-    \]
-    \end{document}
-
-  Compiled as follows, it should produce a nice looking PDF (tested with
-  TeX Live 2012):
-
-    agda --latex <file>.lagda
-    cd latex
-    xelatex <file>.tex (or lualatex <file>.tex)
-
-  If symbols are missing or xelatex/lualatex complains about the font
-  missing, try setting a different font using:
-
-    \setmathfont{<math-font>}
-
-  Use the fc-list tool to list available fonts.
-
-* Add experimental support for hyperlinks to identifiers
-
-  If the hyperref latex package is loaded before the agda package and
-  the links option is passed to the agda package, then the agda package
-  provides a function called \AgdaTarget. Identifiers which have been
-  declared targets, by the user, will become clickable hyperlinks in the
-  rest of the document. Here is a small example
-  (test/LaTeXAndHTML/succeed/Links.lagda):
-
-    \documentclass{article}
-    \usepackage{hyperref}
-    \usepackage[links]{agda}
-    \begin{document}
-
-    \AgdaTarget{ℕ}
-    \AgdaTarget{zero}
-    \begin{code}
-    data ℕ : Set where
-      zero  : ℕ
-      suc   : ℕ → ℕ
-    \end{code}
-
-    See next page for how to define \AgdaFunction{two} (doesn't turn into a
-    link because the target hasn't been defined yet). We could do it
-    manually though; \hyperlink{two}{\AgdaDatatype{two}}.
-
-    \newpage
-
-    \AgdaTarget{two}
-    \hypertarget{two}{}
-    \begin{code}
-    two : ℕ
-    two = suc (suc zero)
-    \end{code}
-
-    \AgdaInductiveConstructor{zero} is of type
-    \AgdaDatatype{ℕ}. \AgdaInductiveConstructor{suc} has not been defined to
-    be a target so it doesn't turn into a link.
-
-    \newpage
-
-    Now that the target for \AgdaFunction{two} has been defined the link
-    works automatically.
-
-    \begin{code}
-    data Bool : Set where
-      true false : Bool
-    \end{code}
-
-    The AgdaTarget command takes a list as input, enabling several
-    targets to be specified as follows:
-
-    \AgdaTarget{if, then, else, if\_then\_else\_}
-    \begin{code}
-    if_then_else_ : {A : Set} → Bool → A → A → A
-    if true  then t else f = t
-    if false then t else f = f
-    \end{code}
-
-    \newpage
-
-    Mixfix identifier need their underscores escaped:
-    \AgdaFunction{if\_then\_else\_}.
-
-    \end{document}
-
-  The boarders around the links can be suppressed using hyperref's
-  hidelinks option:
-
-    \usepackage[hidelinks]{hyperref}
-
-  Note that the current approach to links does not keep track of scoping
-  or types, and hence overloaded names might create links which point to
-  the wrong place. Therefore it is recommended to not overload names
-  when using the links option at the moment, this might get fixed in the
-  future.
-
-------------------------------------------------------------------------
--- Release notes for Agda 2 version 2.3.2.2
-------------------------------------------------------------------------
-
-Important changes since 2.3.2.1:
-
-* Fixed a bug that sometimes made it tricky to use the Emacs mode on
-  Windows [issue 757].
-
-* Made Agda build with newer versions of some libraries.
-
-* Fixed a bug that caused ambiguous parse error messages [issue 147].
-
-------------------------------------------------------------------------
--- Release notes for Agda 2 version 2.3.2.1
-------------------------------------------------------------------------
-
-Important changes since 2.3.2:
-
-Installation
-============
-
-* Made it possible to compile Agda with more recent versions of
-  hashable, QuickCheck and Win32.
-
-* Excluded mtl-2.1.
-
-Type checking
-=============
-
-* Fixed bug in the termination checker (issue 754).
-
-------------------------------------------------------------------------
--- Release notes for Agda 2 version 2.3.2
-------------------------------------------------------------------------
-
-Important changes since 2.3.0:
-
-Installation
-============
-
-* The Agda-executable package has been removed.
-
-  The executable is now provided as part of the Agda package.
-
-* The Emacs mode no longer depends on haskell-mode or GHCi.
-
-* Compilation of Emacs mode Lisp files.
-
-  You can now compile the Emacs mode Lisp files by running "agda-mode
-  compile". This command is run by "make install".
-
-  Compilation can, in some cases, give a noticeable speedup.
-
-  WARNING: If you reinstall the Agda mode without recompiling the
-  Emacs Lisp files, then Emacs may continue using the old, compiled
-  files.
-
-Pragmas and options
-===================
-
-* The --without-K check now reconstructs constructor parameters.
-
-  New specification of --without-K:
-
-  If the flag is activated, then Agda only accepts certain
-  case-splits. If the type of the variable to be split is D pars ixs,
-  where D is a data (or record) type, pars stands for the parameters,
-  and ixs the indices, then the following requirements must be
-  satisfied:
-
-  * The indices ixs must be applications of constructors (or literals)
-    to distinct variables. Constructors are usually not applied to
-    parameters, but for the purposes of this check constructor
-    parameters are treated as other arguments.
-
-  * These distinct variables must not be free in pars.
-
-* Irrelevant arguments are printed as _ by default now.  To turn on
-  printing of irrelevant arguments, use option
-
-    --show-irrelevant
-
-* New: Pragma NO_TERMINATION_CHECK to switch off termination checker
-  for individual function definitions and mutual blocks.
-
-  The pragma must precede a function definition or a mutual block.
-  Examples (see test/Succeed/NoTerminationCheck.agda):
-
-  1. Skipping a single definition: before type signature.
-
-       {-# NO_TERMINATION_CHECK #-}
-       a : A
-       a = a
-
-  2. Skipping a single definition: before first clause.
-
-       b : A
-       {-# NO_TERMINATION_CHECK #-}
-       b = b
-
-  3. Skipping an old-style mutual block: Before 'mutual' keyword.
-
-       {-# NO_TERMINATION_CHECK #-}
-       mutual
-         c : A
-         c = d
-
-         d : A
-         d = c
-
-  4. Skipping a new-style mutual block: Anywhere before a type
-     signature or first function clause in the block
-
-       i : A
-       j : A
-
-       i = j
-       {-# NO_TERMINATION_CHECK #-}
-       j = i
-
-  The pragma cannot be used in --safe mode.
-
-Language
-========
-
-* Let binding record patterns
-
-    record _×_ (A B : Set) : Set where
-      constructor _,_
-      field
-        fst : A
-        snd : B
-    open _×_
-
-    let (x , (y , z)) = t
-    in  u
-
-  will now be interpreted as
-
-    let x = fst t
-        y = fst (snd t)
-        z = snd (snd t)
-    in  u
-
-  Note that the type of t needs to be inferable.  If you need to provide
-  a type signature, you can write the following:
-
-    let a : ...
-        a = t
-        (x , (y , z)) = a
-    in  u
-
-* Pattern synonyms
-
-  A pattern synonym is a declaration that can be used on the left hand
-  side (when pattern matching) as well as the right hand side (in
-  expressions). For example:
-
-  pattern z    = zero
-  pattern ss x = suc (suc x)
-
-  f : ℕ -> ℕ
-  f z       = z
-  f (suc z) = ss z
-  f (ss n)  = n
-
-  Pattern synonyms are implemented by substitution on the abstract
-  syntax, so definitions are scope-checked but not type-checked. They
-  are particularly useful for universe constructions.
-
-* Qualified mixfix operators
-
-  It is now possible to use a qualified mixfix operator by qualifying the first
-  part of the name. For instance
-
-    import Data.Nat as Nat
-    import Data.Bool as Bool
-
-    two = Bool.if true then 1 Nat.+ 1 else 0
-
-* Sections [Issue 735].  Agda now parses anonymous modules as sections:
-
-    module _ {a} (A : Set a) where
-
-      data List : Set a where
-        []  : List
-        _∷_ : (x : A) (xs : List) → List
-
-    module _ {a} {A : Set a} where
-
-      _++_ : List A → List A → List A
-      []       ++ ys = ys
-      (x ∷ xs) ++ ys = x ∷ (xs ++ ys)
-
-    test : List Nat
-    test = (5 ∷ []) ++ (3 ∷ [])
-
-  In general, now the syntax
-
-    module _ parameters where
-      declarations
-
-  is accepted and has the same effect as
-
-    private
-      module M parameters where
-        declarations
-    open M public
-
-  for a fresh name M.
-
-* Instantiating a module in an open import statement [Issue 481].  Now accepted:
-
-    open import Path.Module args [using/hiding/renaming (...)]
-
-  This only brings the imported identifiers from Path.Module into scope,
-  not the module itself!  Consequently, the following is pointless, and raises
-  an error:
-
-    import Path.Module args [using/hiding/renaming (...)]
-
-  You can give a private name M to the instantiated module via
-
-    import Path.Module args as M [using/hiding/renaming (...)]
-    open import Path.Module args as M [using/hiding/renaming (...)]
-
-  Try to avoid 'as' as part of the arguments.  'as' is not a keyword;
-  the following can be legal, although slightly obfuscated Agda code:
-
-    open import as as as as as as
-
-* Implicit module parameters can be given by name. E.g.
-
-    open M {namedArg = bla}
-
-  This feature has been introduced in Agda 2.3.0 already.
-
-* Multiple type signatures sharing a same type can now be written as a single
-  type signature.
-
-    one two : ℕ
-    one = suc zero
-    two = suc one
-
-Goal and error display
-======================
-
-* Meta-variables that were introduced by hidden argument `arg' are now
-  printed as _arg_number instead of just _number.  [Issue 526]
-
-* Agda expands identifiers in anonymous modules when printing.
-  Should make some goals nicer to read. [Issue 721]
-
-* When a module identifier is ambiguous, Agda tells you if one
-  of them is a data type module.  [Issues 318, 705]
-
-Type checking
-=============
-
-* Improved coverage checker.  The coverage checker splits on
-  arguments that have constructor or literal pattern, committing
-  to the left-most split that makes progress.
-  Consider the lookup function for vectors:
-
-    data Fin : Nat → Set where
-      zero : {n : Nat} → Fin (suc n)
-      suc  : {n : Nat} → Fin n → Fin (suc n)
-
-    data Vec (A : Set) : Nat → Set where
-      []  : Vec A zero
-      _∷_ : {n : Nat} → A → Vec A n → Vec A (suc n)
-
-    _!!_ : {A : Set}{n : Nat} → Vec A n → Fin n → A
-    (x ∷ xs) !! zero  = x
-    (x ∷ xs) !! suc i = xs !! i
-
-  In Agda up to 2.3.0, this definition is rejected unless we add
-  an absurd clause
-
-    [] !! ()
-
-  This is because the coverage checker committed on splitting
-  on the vector argument, even though this inevitably lead to
-  failed coverage, because a case for the empty vector [] is missing.
-
-  The improvement to the coverage checker consists on committing
-  only on splits that have a chance of covering, since all possible
-  constructor patterns are present.  Thus, Agda will now split
-  first on the Fin argument, since cases for both zero and suc are
-  present.  Then, it can split on the Vec argument, since the
-  empty vector is already ruled out by instantiating n to a suc _.
-
-* Instance arguments resolution will now consider candidates which
-  still expect hidden arguments. For example:
-
-    record Eq (A : Set) : Set where
-      field eq : A → A → Bool
-
-    open Eq {{...}}
-
-    eqFin : {n : ℕ} → Eq (Fin n)
-    eqFin = record { eq = primEqFin }
-
-    testFin : Bool
-    testFin = eq fin1 fin2
-
-  The type-checker will now resolve the instance argument of the eq
-  function to eqFin {_}. This is only done for hidden arguments, not
-  instance arguments, so that the instance search stays non-recursive.
-
-* Constraint solving: Upgraded Miller patterns to record patterns. [Issue 456]
-
-  Agda now solves meta-variables that are applied to record patterns.
-  A typical (but here, artificial) case is:
-
-    record Sigma (A : Set)(B : A -> Set) : Set where
-      constructor _,_
-      field
-        fst : A
-        snd : B fst
-
-    test : (A : Set)(B : A -> Set) ->
-      let X : Sigma A B -> Sigma A B
-          X = _
-      in  (x : A)(y : B x) -> X (x , y) ≡ (x , y)
-    test A B x y = refl
-
-  This yields a constraint of the form
-
-    _X A B (x , y) := t[x,y]
-
-  (with t[x,y] = (x, y)) which is not a Miller pattern.
-  However, Agda now solves this as
-
-    _X A B z := t[fst z,snd z].
-
-* Changed: solving recursive constraints.  [Issue 585]
-
-  Until 2.3.0, Agda sometimes inferred values that did not pass the
-  termination checker later, or would even make Agda loop.  To prevent this,
-  the occurs check now also looks into the definitions of the current mutual
-  block, to avoid constructing recursive solutions.  As a consequence, also
-  terminating recursive solutions are no longer found automatically.
-
-  This effects a programming pattern where the recursively computed
-  type of a recursive function is left to Agda to solve.
-
-    mutual
-
-      T : D -> Set
-      T pattern1 = _
-      T pattern2 = _
-
-      f : (d : D) -> T d
-      f pattern1 = rhs1
-      f pattern2 = rhs2
-
-  This might no longer work from now on.
-  See examples test/Fail/Issue585*.agda
-
-* Less eager introduction of implicit parameters.  [Issue 679]
-
-  Until Agda 2.3.0, trailing hidden parameters were introduced eagerly
-  on the left hand side of a definition.  For instance, one could not
-  write
-
-    test : {A : Set} -> Set
-    test = \ {A} -> A
-
-  because internally, the hidden argument {A : Set} was added to the
-  left-hand side, yielding
-
-    test {_} = \ {A} -> A
-
-  which raised a type error.  Now, Agda only introduces the trailing
-  implicit parameters it has to, in order to maintain uniform function
-  arity.  For instance, in
-
-    test : Bool -> {A B C : Set} -> Set
-    test true {A}      = A
-    test false {B = B} = B
-
-  Agda will introduce parameters A and B in all clauses, but not C,
-  resulting in
-
-    test : Bool -> {A B C : Set} -> Set
-    test true  {A} {_}     = A
-    test false {_} {B = B} = B
-
-  Note that for checking where-clauses, still all hidden trailing
-  parameters are in scope.  For instance:
-
-    id : {i : Level}{A : Set i} -> A -> A
-    id = myId
-      where myId : forall {A} -> A -> A
-            myId x = x
-
-  To be able to fill in the meta variable _1 in
-
-    myId : {A : Set _1} -> A -> A
-
-  the hidden parameter {i : Level} needs to be in scope.
-
-  As a result of this more lazy introduction of implicit parameters,
-  the following code now passes.
-
-    data Unit : Set where
-      unit : Unit
-
-    T : Unit → Set
-    T unit = {u : Unit} → Unit
-
-    test : (u : Unit) → T u
-    test unit with unit
-    ... | _ = λ {v} → v
-
-  Before, Agda would eagerly introduce the hidden parameter {v} as
-  unnamed left-hand side parameter, leaving no way to refer to it.
-
-  The related issue 655 has also been addressed.  It is now possible
-  to make `synonym' definitions
-
-    name = expression
-
-  even when the type of expression begins with a hidden quantifier.
-  Simple example:
-
-    id2 = id
-
-  That resulted in unsolved metas until 2.3.0.
-
-* Agda detects unused arguments and ignores them during equality
-  checking. [Issue 691, solves also issue 44.]
-
-  Agda's polarity checker now assigns 'Nonvariant' to arguments
-  that are not actually used (except for absurd matches).  If
-  f's first argument is Nonvariant, then f x is definitionally equal
-  to f y regardless of x and y.  It is similar to irrelevance, but
-  does not require user annotation.
-
-  For instance, unused module parameters do no longer get in the way:
-
-    module M (x : Bool) where
-
-      not : Bool → Bool
-      not true  = false
-      not false = true
-
-    open M true
-    open M false renaming (not to not′)
-
-    test : (y : Bool) → not y ≡ not′ y
-    test y = refl
-
-  Matching against record or absurd patterns does not count as `use',
-  so we get some form of proof irrelevance:
-
-    data ⊥ : Set where
-    record ⊤ : Set where
-      constructor trivial
-
-    data Bool : Set where
-      true false : Bool
-
-    True : Bool → Set
-    True true  = ⊤
-    True false = ⊥
-
-    fun : (b : Bool) → True b → Bool
-    fun true  trivial = true
-    fun false ()
-
-    test : (b : Bool) → (x y : True b) → fun b x ≡ fun b y
-    test b x y = refl
-
-  More examples in test/Succeed/NonvariantPolarity.agda.
-
-  Phantom arguments:  Parameters of record and data types are considered
-  `used' even if they are not actually used.  Consider:
-
-    False : Nat → Set
-    False zero    = ⊥
-    False (suc n) = False n
-
-    module Invariant where
-      record Bla (n : Nat)(p : False n) : Set where
-
-    module Nonvariant where
-      Bla : (n : Nat) → False n → Set
-      Bla n p = ⊤
-
-  Even though record `Bla' does not use its parameters n and p, they
-  are considered as used, allowing "phantom type" techniques.
-
-  In contrast, the arguments of function `Bla' are recognized as unused.
-  The following code type-checks if we open Invariant but leaves unsolved
-  metas if we open Nonvariant.
-
-    drop-suc : {n : Nat}{p : False n} → Bla (suc n) p → Bla n p
-    drop-suc _ = _
-
-    bla : (n : Nat) → {p : False n} → Bla n p → ⊥
-    bla zero {()} b
-    bla (suc n) b = bla n (drop-suc b)
-
-  If `Bla' is considered invariant, the hidden argument in the recursive
-  call can be inferred to be `p'.  If it is considered non-variant, then
-  `Bla n X = Bla n p' does not entail `X = p' and the hidden argument
-  remains unsolved.  Since `bla' does not actually use its hidden argument,
-  its value is not important and it could be searched for.
-  Unfortunately, polarity analysis of `bla' happens only after type
-  checking, thus, the information that `bla' is non-variant in `p' is
-  not available yet when meta-variables are solved.
-  (See test/Fail/BrokenInferenceDueToNonvariantPolarity.agda)
-
-* Agda now expands simple definitions (one clause, terminating)
-  to check whether a function is constructor headed. [Issue 747]
-  For instance, the following now also works:
-
-    MyPair : Set -> Set -> Set
-    MyPair A B = Pair A B
-
-    Vec : Set -> Nat -> Set
-    Vec A zero    = Unit
-    Vec A (suc n) = MyPair A (Vec A n)
-
-  Here, Unit and Pair are data or record types.
-
-Compiler backends
-=================
-
-* -Werror is now overridable.
-
-  To enable compilation of Haskell modules containing warnings, the
-  -Werror flag for the MAlonzo backend has been made overridable. If,
-  for example, --ghc-flag=-Wwarn is passed when compiling, one can get
-  away with things like:
-
-    data PartialBool : Set where
-      true : PartialBool
-
-    {-# COMPILED_DATA PartialBool Bool True #-}
-
-  The default behavior remains as it used to be and rejects the above
-  program.
-
-Tools
-=====
-
-Emacs mode
-----------
-
-* Asynchronous Emacs mode.
-
-  One can now use Emacs while a buffer is type-checked. If the buffer
-  is edited while the type-checker runs, then syntax highlighting will
-  not be updated when type-checking is complete.
-
-* Interactive syntax highlighting.
-
-  The syntax highlighting is updated while a buffer is type-checked:
-
-  • At first the buffer is highlighted in a somewhat crude way
-    (without go-to-definition information for overloaded
-    constructors).
-
-  • If the highlighting level is "interactive", then the piece of code
-    that is currently being type-checked is highlighted as such. (The
-    default is "non-interactive".)
-
-  • When a mutual block has been type-checked it is highlighted
-    properly (this highlighting includes warnings for potential
-    non-termination).
-
-  The highlighting level can be controlled via the new configuration
-  variable agda2-highlight-level.
-
-* Multiple case-splits can now be performed in one go.
-
-  Consider the following example:
-
-    _==_ : Bool → Bool → Bool
-    b₁ == b₂ = {!!}
-
-  If you split on "b₁ b₂", then you get the following code:
-
-    _==_ : Bool → Bool → Bool
-    true == true = {!!}
-    true == false = {!!}
-    false == true = {!!}
-    false == false = {!!}
-
-  The order of the variables matters. Consider the following code:
-
-    lookup : ∀ {a n} {A : Set a} → Vec A n → Fin n → A
-    lookup xs i = {!!}
-
-  If you split on "xs i", then you get the following code:
-
-    lookup : ∀ {a n} {A : Set a} → Vec A n → Fin n → A
-    lookup [] ()
-    lookup (x ∷ xs) zero = {!!}
-    lookup (x ∷ xs) (suc i) = {!!}
-
-  However, if you split on "i xs", then you get the following code
-  instead:
-
-    lookup : ∀ {a n} {A : Set a} → Vec A n → Fin n → A
-    lookup (x ∷ xs) zero = ?
-    lookup (x ∷ xs) (suc i) = ?
-
-  This code is rejected by Agda 2.3.0, but accepted by 2.3.2 thanks
-  to improved coverage checking (see above).
-
-* The Emacs mode now presents information about which module is
-  currently being type-checked.
-
-* New global menu entry: Information about the character at point.
-
-  If this entry is selected, then information about the character at
-  point is displayed, including (in many cases) information about how
-  to type the character.
-
-* Commenting/uncommenting the rest of the buffer.
-
-  One can now comment or uncomment the rest of the buffer by typing
-  C-c C-x M-; or by selecting the menu entry "Comment/uncomment the
-  rest of the buffer".
-
-* The Emacs mode now uses the Agda executable instead of GHCi.
-
-  The *ghci* buffer has been renamed to *agda2*.
-
-  A new configuration variable has been introduced:
-  agda2-program-name, the name of the Agda executable (by default
-  agda).
-
-  The variable agda2-ghci-options has been replaced by
-  agda2-program-args: extra arguments given to the Agda executable (by
-  default none).
-
-  If you want to limit Agda's memory consumption you can add some
-  arguments to agda2-program-args, for instance +RTS -M1.5G -RTS.
-
-* The Emacs mode no longer depends on haskell-mode.
-
-  Users who have customised certain haskell-mode variables (such as
-  haskell-ghci-program-args) may want to update their configuration.
-
-LaTeX-backend
--------------
-
-An experimental LaTeX-backend which does precise highlighting a la the
-HTML-backend and code alignment a la lhs2TeX has been added.
-
-Here is a sample input literate Agda file:
-
-  \documentclass{article}
-
-  \usepackage{agda}
-
-  \begin{document}
-
-  The following module declaration will be hidden in the output.
-
-  \AgdaHide{
-  \begin{code}
-  module M where
-  \end{code}
-  }
-
-  Two or more spaces can be used to make the backend align stuff.
-
-  \begin{code}
-  data ℕ : Set where
-    zero  : ℕ
-    suc   : ℕ → ℕ
-
-  _+_ : ℕ → ℕ → ℕ
-  zero   + n = n
-  suc m  + n = suc (m + n)
-  \end{code}
-
-  \end{document}
-
-To produce an output PDF issue the following commands:
-
-  agda --latex -i . <file>.lagda
-  pdflatex latex/<file>.tex
-
-Only the top-most module is processed, like with lhs2tex and unlike with
-the HTML-backend. If you want to process imported modules you have to
-call agda --latex manually on each of those modules.
-
-There are still issues related to formatting, see the bug tracker for
-more information:
-
-  https://code.google.com/p/agda/issues/detail?id=697
-
-The default agda.sty might therefore change in backwards-incompatible
-ways, as work proceeds in trying to resolve those problems.
-
-
-Implemented features:
-
-  * Two or more spaces can be used to force alignment of things, like
-    with lhs2tex. See example above.
-
-  * The highlighting information produced by the type checker is used to
-    generate the output. For example, the data declaration in the example
-    above, produces:
-
-      \AgdaKeyword{data} \AgdaDatatype{ℕ} \AgdaSymbol{:}
-          \AgdaPrimitiveType{Set} \AgdaKeyword{where}
-
-    These latex commands are defined in agda.sty (which is imported by
-    \usepackage{agda}) and cause the highlighting.
-
-  * The latex-backend checks if agda.sty is found by the latex
-    environment, if it isn't a default agda.sty is copied from Agda's
-    data-dir into the working directory (and thus made available to the
-    latex environment).
-
-    If the default agda.sty isn't satisfactory (colors, fonts, spacing,
-    etc) then the user can modify it and make put it somewhere where the
-    latex environment can find it. Hopefully most aspects should be
-    modifiable via agda.sty rather than having to tweak the
-    implementation.
-
-  * --latex-dir can be used to change the default output directory.
-
-------------------------------------------------------------------------
--- Release notes for Agda 2 version 2.3.0
-------------------------------------------------------------------------
-
-Important changes since 2.2.10:
-
-Language
-========
-
-* New more liberal syntax for mutually recursive definitions.
-
-  It is no longer necessary to use the 'mutual' keyword to define
-  mutually recursive functions or datatypes. Instead, it is enough to
-  declare things before they are used. Instead of
-
-    mutual
-      f : A
-      f = a[f, g]
-
-      g : B[f]
-      g = b[f, g]
-
-  you can now write
-
-    f : A
-    g : B[f]
-    f = a[f, g]
-    g = b[f, g].
-
-  With the new style you have more freedom in choosing the order in
-  which things are type checked (previously type signatures were
-  always checked before definitions). Furthermore you can mix
-  arbitrary declarations, such as modules and postulates, with
-  mutually recursive definitions.
-
-  For data types and records the following new syntax is used to
-  separate the declaration from the definition:
-
-    -- Declaration.
-    data Vec (A : Set) : Nat → Set  -- Note the absence of 'where'.
-
-    -- Definition.
-    data Vec A where
-      []   : Vec A zero
-      _::_ : {n : Nat} → A → Vec A n → Vec A (suc n)
-
-    -- Declaration.
-    record Sigma (A : Set) (B : A → Set) : Set
-
-    -- Definition.
-    record Sigma A B where
-      constructor _,_
-      field fst : A
-            snd : B fst
-
-  When making separated declarations/definitions private or abstract
-  you should attach the 'private' keyword to the declaration and the
-  'abstract' keyword to the definition. For instance, a private,
-  abstract function can be defined as
-
-    private
-      f : A
-    abstract
-      f = e
-
-  Finally it may be worth noting that the old style of mutually
-  recursive definitions is still supported (it basically desugars into
-  the new style).
-
-* Pattern matching lambdas.
-
-  Anonymous pattern matching functions can be defined using the syntax
-
-    \ { p11 .. p1n -> e1 ; ... ; pm1 .. pmn -> em }
-
-  (where, as usual, \ and -> can be replaced by λ and →). Internally
-  this is translated into a function definition of the following form:
-
-    .extlam p11 .. p1n = e1
-    ...
-    .extlam pm1 .. pmn = em
-
-  This means that anonymous pattern matching functions are generative.
-  For instance, refl will not be accepted as an inhabitant of the type
-
-    (λ { true → true ; false → false }) ≡
-    (λ { true → true ; false → false }),
-
-  because this is equivalent to extlam1 ≡ extlam2 for some distinct
-  fresh names extlam1 and extlam2.
-
-  Currently the 'where' and 'with' constructions are not allowed in
-  (the top-level clauses of) anonymous pattern matching functions.
-
-  Examples:
-
-    and : Bool → Bool → Bool
-    and = λ { true x → x ; false _ → false }
-
-    xor : Bool → Bool → Bool
-    xor = λ { true  true  → false
-            ; false false → false
-            ; _     _     → true
-            }
-
-    fst : {A : Set} {B : A → Set} → Σ A B → A
-    fst = λ { (a , b) → a }
-
-    snd : {A : Set} {B : A → Set} (p : Σ A B) → B (fst p)
-    snd = λ { (a , b) → b }
-
-* Record update syntax.
-
-  Assume that we have a record type and a corresponding value:
-
-    record MyRecord : Set where
-      field
-        a b c : ℕ
-
-    old : MyRecord
-    old = record { a = 1; b = 2; c = 3 }
-
-  Then we can update (some of) the record value's fields in the
-  following way:
-
-    new : MyRecord
-    new = record old { a = 0; c = 5 }
-
-  Here new normalises to record { a = 0; b = 2; c = 5 }. Any
-  expression yielding a value of type MyRecord can be used instead of
-  old.
-
-  Record updating is not allowed to change types: the resulting value
-  must have the same type as the original one, including the record
-  parameters. Thus, the type of a record update can be inferred if the type
-  of the original record can be inferred.
-
-  The record update syntax is expanded before type checking. When the
-  expression
-
-    record old { upd-fields }
-
-  is checked against a record type R, it is expanded to
-
-    let r = old in record { new-fields },
-
-  where old is required to have type R and new-fields is defined as
-  follows: for each field x in R,
-
-    - if x = e is contained in upd-fields then x = e is included in
-      new-fields, and otherwise
-    - if x is an explicit field then x = R.x r is included in
-      new-fields, and
-    - if x is an implicit or instance field, then it is omitted from
-      new-fields.
-
-  (Instance arguments are explained below.) The reason for treating
-  implicit and instance fields specially is to allow code like the
-  following:
-
-    record R : Set where
-      field
-        {length} : ℕ
-        vec      : Vec ℕ length
-        -- More fields…
-
-    xs : R
-    xs = record { vec = 0 ∷ 1 ∷ 2 ∷ [] }
-
-    ys = record xs { vec = 0 ∷ [] }
-
-  Without the special treatment the last expression would need to
-  include a new binding for length (for instance "length = _").
-
-* Record patterns which do not contain data type patterns, but which
-  do contain dot patterns, are no longer rejected.
-
-* When the --without-K flag is used literals are now treated as
-  constructors.
-
-* Under-applied functions can now reduce.
-
-  Consider the following definition:
-
-    id : {A : Set} → A → A
-    id x = x
-
-  Previously the expression id would not reduce. This has been changed
-  so that it now reduces to λ x → x. Usually this makes little
-  difference, but it can be important in conjunction with 'with'. See
-  issue 365 for an example.
-
-* Unused AgdaLight legacy syntax (x y : A; z v : B) for telescopes has
-  been removed.
-
-Universe polymorphism
----------------------
-
-* Universe polymorphism is now enabled by default.
-  Use --no-universe-polymorphism to disable it.
-
-* Universe levels are no longer defined as a data type.
-
-  The basic level combinators can be introduced in the following way:
-
-  postulate
-    Level : Set
-    zero  : Level
-    suc   : Level → Level
-    max   : Level → Level → Level
-
-  {-# BUILTIN LEVEL     Level #-}
-  {-# BUILTIN LEVELZERO zero  #-}
-  {-# BUILTIN LEVELSUC  suc   #-}
-  {-# BUILTIN LEVELMAX  max   #-}
-
-* The BUILTIN equality is now required to be universe-polymorphic.
-
-* trustMe is now universe-polymorphic.
-
-Meta-variables and unification
-------------------------------
-
-* Unsolved meta-variables are now frozen after every mutual block.
-  This means that they cannot be instantiated by subsequent code. For
-  instance,
-
-    one : Nat
-    one = _
-
-    bla : one ≡ suc zero
-    bla = refl
-
-  leads to an error now, whereas previously it lead to the
-  instantiation of _ with "suc zero". If you want to make use of the
-  old behaviour, put the two definitions in a mutual block.
-
-  All meta-variables are unfrozen during interactive editing, so that
-  the user can fill holes interactively. Note that type-checking of
-  interactively given terms is not perfect: Agda sometimes refuses to
-  load a file, even though no complaints were raised during the
-  interactive construction of the file. This is because certain checks
-  (for instance, positivity) are only invoked when a file is loaded.
-
-* Record types can now be inferred.
-
-  If there is a unique known record type with fields matching the
-  fields in a record expression, then the type of the expression will
-  be inferred to be the record type applied to unknown parameters.
-
-  If there is no known record type with the given fields the type
-  checker will give an error instead of producing lots of unsolved
-  meta-variables.
-
-  Note that "known record type" refers to any record type in any
-  imported module, not just types which are in scope.
-
-* The occurrence checker distinguishes rigid and strongly rigid
-  occurrences [Reed, LFMTP 2009; Abel & Pientka, TLCA 2011].
-
-  The completeness checker now accepts the following code:
-
-    h : (n : Nat) → n ≡ suc n → Nat
-    h n ()
-
-  Internally this generates a constraint _n = suc _n where the
-  meta-variable _n occurs strongly rigidly, i.e. on a constructor path
-  from the root, in its own defining term tree. This is never
-  solvable.
-
-  Weakly rigid recursive occurrences may have a solution [Jason Reed's
-  PhD thesis, page 106]:
-
-    test : (k : Nat) →
-           let X : (Nat → Nat) → Nat
-               X = _
-           in
-           (f : Nat → Nat) → X f ≡ suc (f (X (λ x → k)))
-    test k f = refl
-
-  The constraint _X k f = suc (f (_X k (λ x → k))) has the solution
-  _X k f = suc (f (suc k)), despite the recursive occurrence of _X.
-  Here _X is not strongly rigid, because it occurs under the bound
-  variable f. Previously Agda rejected this code; now it instead
-  complains about an unsolved meta-variable.
-
-* Equation constraints involving the same meta-variable in the head
-  now trigger pruning [Pientka, PhD, Sec. 3.1.2; Abel & Pientka, TLCA
-  2011]. Example:
-
-    same : let X : A → A → A → A × A
-               X = _
-           in {x y z : A} → X x y y ≡ (x , y)
-                          × X x x y ≡ X x y y
-    same = refl , refl
-
-  The second equation implies that X cannot depend on its second
-  argument. After pruning the first equation is linear and can be
-  solved.
-
-* Instance arguments.
-
-  A new type of hidden function arguments has been added: instance
-  arguments. This new feature is based on influences from Scala's
-  implicits and Agda's existing implicit arguments.
-
-  Plain implicit arguments are marked by single braces: {…}. Instance
-  arguments are instead marked by double braces: {{…}}. Example:
-
-    postulate
-      A : Set
-      B : A → Set
-      a : A
-      f : {{a : A}} → B a
-
-  Instead of the double braces you can use the symbols ⦃ and ⦄, but
-  these symbols must in many cases be surrounded by whitespace. (If
-  you are using Emacs and the Agda input method, then you can conjure
-  up the symbols by typing "\{{" and "\}}", respectively.)
-
-  Instance arguments behave as ordinary implicit arguments, except for
-  one important aspect: resolution of arguments which are not provided
-  explicitly. For instance, consider the following code:
-
-    test = f
-
-  Here Agda will notice that f's instance argument was not provided
-  explicitly, and try to infer it. All definitions in scope at f's
-  call site, as well as all variables in the context, are considered.
-  If exactly one of these names has the required type (A), then the
-  instance argument will be instantiated to this name.
-
-  This feature can be used as an alternative to Haskell type classes.
-  If we define
-
-    record Eq (A : Set) : Set where
-      field equal : A → A → Bool,
-
-  then we can define the following projection:
-
-    equal : {A : Set} {{eq : Eq A}} → A → A → Bool
-    equal {{eq}} = Eq.equal eq
-
-  Now consider the following expression:
-
-    equal false false ∨ equal 3 4
-
-  If the following Eq "instances" for Bool and ℕ are in scope, and no
-  others, then the expression is accepted:
-
-    eq-Bool : Eq Bool
-    eq-Bool = record { equal = … }
-
-    eq-ℕ : Eq ℕ
-    eq-ℕ = record { equal = … }
-
-  A shorthand notation is provided to avoid the need to define
-  projection functions manually:
-
-    module Eq-with-implicits = Eq {{...}}
-
-  This notation creates a variant of Eq's record module, where the
-  main Eq argument is an instance argument instead of an explicit one.
-  It is equivalent to the following definition:
-
-    module Eq-with-implicits {A : Set} {{eq : Eq A}} = Eq eq
-
-  Note that the short-hand notation allows you to avoid naming the
-  "-with-implicits" module:
-
-    open Eq {{...}}
-
-  Instance argument resolution is not recursive. As an example,
-  consider the following "parametrised instance":
-
-    eq-List : {A : Set} → Eq A → Eq (List A)
-    eq-List {A} eq = record { equal = eq-List-A }
-      where
-      eq-List-A : List A → List A → Bool
-      eq-List-A []       []       = true
-      eq-List-A (a ∷ as) (b ∷ bs) = equal a b ∧ eq-List-A as bs
-      eq-List-A _        _        = false
-
-  Assume that the only Eq instances in scope are eq-List and eq-ℕ.
-  Then the following code does not type-check:
-
-    test = equal (1 ∷ 2 ∷ []) (3 ∷ 4 ∷ [])
-
-  However, we can make the code work by constructing a suitable
-  instance manually:
-
-    test′ = equal (1 ∷ 2 ∷ []) (3 ∷ 4 ∷ [])
-      where eq-List-ℕ = eq-List eq-ℕ
-
-  By restricting the "instance search" to be non-recursive we avoid
-  introducing a new, compile-time-only evaluation model to Agda.
-
-  For more information about instance arguments, see Devriese &
-  Piessens [ICFP 2011]. Some examples are also available in the
-  examples/instance-arguments subdirectory of the Agda distribution.
-
-Irrelevance
------------
-
-* Dependent irrelevant function types.
-
-  Some examples illustrating the syntax of dependent irrelevant
-  function types:
-
-    .(x y : A) → B    .{x y z : A} → B
-    ∀ x .y → B        ∀ x .{y} {z} .v → B
-
-  The declaration
-
-    f : .(x : A) → B[x]
-    f x = t[x]
-
-  requires that x is irrelevant both in t[x] and in B[x]. This is
-  possible if, for instance, B[x] = B′ x, with B′ : .A → Set.
-
-  Dependent irrelevance allows us to define the eliminator for the
-  Squash type:
-
-    record Squash (A : Set) : Set where
-      constructor squash
-      field
-        .proof : A
-
-    elim-Squash : {A : Set} (P : Squash A → Set)
-                  (ih : .(a : A) → P (squash a)) →
-                  (a⁻ : Squash A) → P a⁻
-    elim-Squash P ih (squash a) = ih a
-
-  Note that this would not type-check with
-  (ih : (a : A) -> P (squash a)).
-
-* Records with only irrelevant fields.
-
-  The following now works:
-
-    record IsEquivalence {A : Set} (_≈_ : A → A → Set) : Set where
-      field
-        .refl  : Reflexive _≈_
-        .sym   : Symmetric _≈_
-        .trans : Transitive _≈_
-
-    record Setoid : Set₁ where
-      infix 4 _≈_
-      field
-        Carrier        : Set
-        _≈_            : Carrier → Carrier → Set
-        .isEquivalence : IsEquivalence _≈_
-
-      open IsEquivalence isEquivalence public
-
-  Previously Agda complained about the application
-  IsEquivalence isEquivalence, because isEquivalence is irrelevant and
-  the IsEquivalence module expected a relevant argument. Now, when
-  record modules are generated for records consisting solely of
-  irrelevant arguments, the record parameter is made irrelevant:
-
-    module IsEquivalence {A : Set} {_≈_ : A → A → Set}
-                         .(r : IsEquivalence {A = A} _≈_) where
-      …
-
-* Irrelevant things are no longer erased internally. This means that
-  they are printed as ordinary terms, not as "_" as before.
-
-* The new flag --experimental-irrelevance enables irrelevant universe
-  levels and matching on irrelevant data when only one constructor is
-  available. These features are very experimental and likely to change
-  or disappear.
-
-Reflection
-----------
-
-* The reflection API has been extended to mirror features like
-  irrelevance, instance arguments and universe polymorphism, and to
-  give (limited) access to definitions. For completeness all the
-  builtins and primitives are listed below:
-
-    -- Names.
-
-    postulate Name : Set
-
-    {-# BUILTIN QNAME Name #-}
-
-    primitive
-      -- Equality of names.
-      primQNameEquality : Name → Name → Bool
-
-    -- Is the argument visible (explicit), hidden (implicit), or an
-    -- instance argument?
-
-    data Visibility : Set where
-      visible hidden instance : Visibility
-
-    {-# BUILTIN HIDING   Visibility #-}
-    {-# BUILTIN VISIBLE  visible    #-}
-    {-# BUILTIN HIDDEN   hidden     #-}
-    {-# BUILTIN INSTANCE instance   #-}
-
-    -- Arguments can be relevant or irrelevant.
-
-    data Relevance : Set where
-      relevant irrelevant : Relevance
-
-    {-# BUILTIN RELEVANCE  Relevance  #-}
-    {-# BUILTIN RELEVANT   relevant   #-}
-    {-# BUILTIN IRRELEVANT irrelevant #-}
-
-    -- Arguments.
-
-    data Arg A : Set where
-      arg : (v : Visibility) (r : Relevance) (x : A) → Arg A
-
-    {-# BUILTIN ARG    Arg #-}
-    {-# BUILTIN ARGARG arg #-}
-
-    -- Terms.
-
-    mutual
-      data Term : Set where
-        -- Variable applied to arguments.
-        var     : (x : ℕ) (args : List (Arg Term)) → Term
-        -- Constructor applied to arguments.
-        con     : (c : Name) (args : List (Arg Term)) → Term
-        -- Identifier applied to arguments.
-        def     : (f : Name) (args : List (Arg Term)) → Term
-        -- Different kinds of λ-abstraction.
-        lam     : (v : Visibility) (t : Term) → Term
-        -- Pi-type.
-        pi      : (t₁ : Arg Type) (t₂ : Type) → Term
-        -- A sort.
-        sort    : Sort → Term
-        -- Anything else.
-        unknown : Term
-
-      data Type : Set where
-        el : (s : Sort) (t : Term) → Type
-
-      data Sort : Set where
-        -- A Set of a given (possibly neutral) level.
-        set     : (t : Term) → Sort
-        -- A Set of a given concrete level.
-        lit     : (n : ℕ) → Sort
-        -- Anything else.
-        unknown : Sort
-
-    {-# BUILTIN AGDASORT            Sort    #-}
-    {-# BUILTIN AGDATYPE            Type    #-}
-    {-# BUILTIN AGDATERM            Term    #-}
-    {-# BUILTIN AGDATERMVAR         var     #-}
-    {-# BUILTIN AGDATERMCON         con     #-}
-    {-# BUILTIN AGDATERMDEF         def     #-}
-    {-# BUILTIN AGDATERMLAM         lam     #-}
-    {-# BUILTIN AGDATERMPI          pi      #-}
-    {-# BUILTIN AGDATERMSORT        sort    #-}
-    {-# BUILTIN AGDATERMUNSUPPORTED unknown #-}
-    {-# BUILTIN AGDATYPEEL          el      #-}
-    {-# BUILTIN AGDASORTSET         set     #-}
-    {-# BUILTIN AGDASORTLIT         lit     #-}
-    {-# BUILTIN AGDASORTUNSUPPORTED unknown #-}
-
-    postulate
-      -- Function definition.
-      Function  : Set
-      -- Data type definition.
-      Data-type : Set
-      -- Record type definition.
-      Record    : Set
-
-    {-# BUILTIN AGDAFUNDEF    Function  #-}
-    {-# BUILTIN AGDADATADEF   Data-type #-}
-    {-# BUILTIN AGDARECORDDEF Record    #-}
-
-    -- Definitions.
-
-    data Definition : Set where
-      function     : Function  → Definition
-      data-type    : Data-type → Definition
-      record′      : Record    → Definition
-      constructor′ : Definition
-      axiom        : Definition
-      primitive′   : Definition
-
-    {-# BUILTIN AGDADEFINITION                Definition   #-}
-    {-# BUILTIN AGDADEFINITIONFUNDEF          function     #-}
-    {-# BUILTIN AGDADEFINITIONDATADEF         data-type    #-}
-    {-# BUILTIN AGDADEFINITIONRECORDDEF       record′      #-}
-    {-# BUILTIN AGDADEFINITIONDATACONSTRUCTOR constructor′ #-}
-    {-# BUILTIN AGDADEFINITIONPOSTULATE       axiom        #-}
-    {-# BUILTIN AGDADEFINITIONPRIMITIVE       primitive′   #-}
-
-    primitive
-      -- The type of the thing with the given name.
-      primQNameType        : Name → Type
-      -- The definition of the thing with the given name.
-      primQNameDefinition  : Name → Definition
-      -- The constructors of the given data type.
-      primDataConstructors : Data-type → List Name
-
-  As an example the expression
-
-    primQNameType (quote zero)
-
-  is definitionally equal to
-
-    el (lit 0) (def (quote ℕ) [])
-
-  (if zero is a constructor of the data type ℕ).
-
-* New keyword: unquote.
-
-  The construction "unquote t" converts a representation of an Agda term
-  to actual Agda code in the following way:
-
-  1. The argument t must have type Term (see the reflection API above).
-
-  2. The argument is normalised.
-
-  3. The entire construction is replaced by the normal form, which is
-     treated as syntax written by the user and type-checked in the
-     usual way.
-
-  Examples:
-
-    test : unquote (def (quote ℕ) []) ≡ ℕ
-    test = refl
-
-    id : (A : Set) → A → A
-    id = unquote (lam visible (lam visible (var 0 [])))
-
-    id-ok : id ≡ (λ A (x : A) → x)
-    id-ok = refl
-
-* New keyword: quoteTerm.
-
-  The construction "quoteTerm t" is similar to "quote n", but whereas
-  quote is restricted to names n, quoteTerm accepts terms t. The
-  construction is handled in the following way:
-
-  1. The type of t is inferred. The term t must be type-correct.
-
-  2. The term t is normalised.
-
-  3. The construction is replaced by the Term representation (see the
-     reflection API above) of the normal form. Any unsolved metavariables
-     in the term are represented by the "unknown" term constructor.
-
-  Examples:
-
-    test₁ : quoteTerm (λ {A : Set} (x : A) → x) ≡
-            lam hidden (lam visible (var 0 []))
-    test₁ = refl
-
-    -- Local variables are represented as de Bruijn indices.
-    test₂ : (λ {A : Set} (x : A) → quoteTerm x) ≡ (λ x → var 0 [])
-    test₂ = refl
-
-    -- Terms are normalised before being quoted.
-    test₃ : quoteTerm (0 + 0) ≡ con (quote zero) []
-    test₃ = refl
-
-Compiler backends
-=================
-
-MAlonzo
--------
-
-* The MAlonzo backend's FFI now handles universe polymorphism in a
-  better way.
-
-  The translation of Agda types and kinds into Haskell now supports
-  universe-polymorphic postulates. The core changes are that the
-  translation of function types has been changed from
-
-    T[[ Pi (x : A) B ]] =
-      if A has a Haskell kind then
-        forall x. () -> T[[ B ]]
-      else if x in fv B then
-        undef
-      else
-        T[[ A ]] -> T[[ B ]]
-
-  into
-
-    T[[ Pi (x : A) B ]] =
-      if x in fv B then
-        forall x. T[[ A ]] -> T[[ B ]]  -- Note: T[[A]] not Unit.
-      else
-        T[[ A ]] -> T[[ B ]],
-
-  and that the translation of constants (postulates, constructors and
-  literals) has been changed from
-
-    T[[ k As ]] =
-      if COMPILED_TYPE k T then
-        T T[[ As ]]
-      else
-        undef
-
-  into
-
-    T[[ k As ]] =
-      if COMPILED_TYPE k T then
-        T T[[ As ]]
-      else if COMPILED k E then
-        ()
-      else
-        undef.
-
-  For instance, assuming a Haskell definition
-
-    type AgdaIO a b = IO b,
-
-  we can set up universe-polymorphic IO in the following way:
-
-    postulate
-      IO     : ∀ {ℓ} → Set ℓ → Set ℓ
-      return : ∀ {a} {A : Set a} → A → IO A
-      _>>=_  : ∀ {a b} {A : Set a} {B : Set b} →
-               IO A → (A → IO B) → IO B
-
-    {-# COMPILED_TYPE IO AgdaIO              #-}
-    {-# COMPILED return  (\_ _ -> return)    #-}
-    {-# COMPILED _>>=_   (\_ _ _ _ -> (>>=)) #-}
-
-  This is accepted because (assuming that the universe level type is
-  translated to the Haskell unit type "()")
-
-    (\_ _ -> return)
-      : forall a. () -> forall b. () -> b -> AgdaIO a b
-      = T [[ ∀ {a} {A : Set a} → A → IO A ]]
-
-  and
-
-    (\_ _ _ _ -> (>>=))
-      : forall a. () -> forall b. () ->
-          forall c. () -> forall d. () ->
-            AgdaIO a c -> (c -> AgdaIO b d) -> AgdaIO b d
-      = T [[ ∀ {a b} {A : Set a} {B : Set b} →
-               IO A → (A → IO B) → IO B ]].
-
-Epic
-----
-
-* New Epic backend pragma: STATIC.
-
-  In the Epic backend, functions marked with the STATIC pragma will be
-  normalised before compilation. Example usage:
-
-    {-# STATIC power #-}
-
-    power : ℕ → ℕ → ℕ
-    power 0       x = 1
-    power 1       x = x
-    power (suc n) x = power n x * x
-
-  Occurrences of "power 4 x" will be replaced by "((x * x) * x) * x".
-
-* Some new optimisations have been implemented in the Epic backend:
-
-  - Removal of unused arguments.
-
-  A worker/wrapper transformation is performed so that unused
-  arguments can be removed by Epic's inliner. For instance, the map
-  function is transformed in the following way:
-
-    map_wrap : (A B : Set) → (A → B) → List A → List B
-    map_wrap A B f xs = map_work f xs
-
-    map_work f []       = []
-    map_work f (x ∷ xs) = f x ∷ map_work f xs
-
-  If map_wrap is inlined (which it will be in any saturated call),
-  then A and B disappear in the generated code.
-
-  Unused arguments are found using abstract interpretation. The bodies
-  of all functions in a module are inspected to decide which variables
-  are used. The behaviour of postulates is approximated based on their
-  types. Consider return, for instance:
-
-    postulate return : {A : Set} → A → IO A
-
-  The first argument of return can be removed, because it is of type
-  Set and thus cannot affect the outcome of a program at runtime.
-
-  - Injection detection.
-
-  At runtime many functions may turn out to be inefficient variants of
-  the identity function. This is especially true after forcing.
-  Injection detection replaces some of these functions with more
-  efficient versions. Example:
-
-    inject : {n : ℕ} → Fin n → Fin (1 + n)
-    inject {suc n} zero    = zero
-    inject {suc n} (suc i) = suc (inject {n} i)
-
-  Forcing removes the Fin constructors' ℕ arguments, so this function
-  is an inefficient identity function that can be replaced by the
-  following one:
-
-    inject {_} x = x
-
-  To actually find this function, we make the induction hypothesis
-  that inject is an identity function in its second argument and look
-  at the branches of the function to decide if this holds.
-
-  Injection detection also works over data type barriers. Example:
-
-    forget : {A : Set} {n : ℕ} → Vec A n → List A
-    forget []       = []
-    forget (x ∷ xs) = x ∷ forget xs
-
-  Given that the constructor tags (in the compiled Epic code) for
-  Vec.[] and List.[] are the same, and that the tags for Vec._∷_ and
-  List._∷_ are also the same, this is also an identity function. We
-  can hence replace the definition with the following one:
-
-    forget {_} xs = xs
-
-  To get this to apply as often as possible, constructor tags are
-  chosen /after/ injection detection has been run, in a way to make as
-  many functions as possible injections.
-
-  Constructor tags are chosen once per source file, so it may be
-  advantageous to define conversion functions like forget in the same
-  module as one of the data types. For instance, if Vec.agda imports
-  List.agda, then the forget function should be put in Vec.agda to
-  ensure that vectors and lists get the same tags (unless some other
-  injection function, which puts different constraints on the tags, is
-  prioritised).
-
-  - Smashing.
-
-  This optimisation finds types whose values are inferable at runtime:
-
-    * A data type with only one constructor where all fields are
-      inferable is itself inferable.
-    * Set ℓ is inferable (as it has no runtime representation).
-
-  A function returning an inferable data type can be smashed, which
-  means that it is replaced by a function which simply returns the
-  inferred value.
-
-  An important example of an inferable type is the usual propositional
-  equality type (_≡_). Any function returning a propositional equality
-  can simply return the reflexivity constructor directly without
-  computing anything.
-
-  This optimisation makes more arguments unused. It also makes the
-  Epic code size smaller, which in turn speeds up compilation.
-
-JavaScript
-----------
-
-* ECMAScript compiler backend.
-
-  A new compiler backend is being implemented, targetting ECMAScript
-  (also known as JavaScript), with the goal of allowing Agda programs
-  to be run in browsers or other ECMAScript environments.
-
-  The backend is still at an experimental stage: the core language is
-  implemented, but many features are still missing.
-
-  The ECMAScript compiler can be invoked from the command line using
-  the flag --js:
-
-    agda --js --compile-dir=<DIR> <FILE>.agda
-
-  Each source <FILE>.agda is compiled into an ECMAScript target
-  <DIR>/jAgda.<TOP-LEVEL MODULE NAME>.js. The compiler can also be
-  invoked using the Emacs mode (the variable agda2-backend controls
-  which backend is used).
-
-  Note that ECMAScript is a strict rather than lazy language. Since
-  Agda programs are total, this should not impact program semantics,
-  but it may impact their space or time usage.
-
-  ECMAScript does not support algebraic datatypes or pattern-matching.
-  These features are translated to a use of the visitor pattern. For
-  instance, the standard library's List data type and null function
-  are translated into the following code:
-
-    exports["List"] = {};
-    exports["List"]["[]"] = function (x0) {
-        return x0["[]"]();
-      };
-    exports["List"]["_∷_"] = function (x0) {
-        return function (x1) {
-          return function (x2) {
-            return x2["_∷_"](x0, x1);
-          };
-        };
-      };
-
-    exports["null"] = function (x0) {
-        return function (x1) {
-          return function (x2) {
-            return x2({
-              "[]": function () {
-                return jAgda_Data_Bool["Bool"]["true"];
-              },
-              "_∷_": function (x3, x4) {
-                return jAgda_Data_Bool["Bool"]["false"];
-              }
-            });
-          };
-        };
-      };
-
-  Agda records are translated to ECMAScript objects, preserving field
-  names.
-
-  Top-level Agda modules are translated to ECMAScript modules,
-  following the common.js module specification. A top-level Agda
-  module "Foo.Bar" is translated to an ECMAScript module
-  "jAgda.Foo.Bar".
-
-  The ECMAScript compiler does not compile to Haskell, so the pragmas
-  related to the Haskell FFI (IMPORT, COMPILED_DATA and COMPILED) are
-  not used by the ECMAScript backend. Instead, there is a COMPILED_JS
-  pragma which may be applied to any declaration. For postulates,
-  primitives, functions and values, it gives the ECMAScript code to be
-  emitted by the compiler. For data types, it gives a function which
-  is applied to a value of that type, and a visitor object. For
-  instance, a binding of natural numbers to ECMAScript integers
-  (ignoring overflow errors) is:
-
-    data ℕ : Set where
-      zero : ℕ
-      suc  : ℕ → ℕ
-
-    {-# COMPILED_JS ℕ function (x,v) {
-        if (x < 1) { return v.zero(); } else { return v.suc(x-1); }
-      } #-}
-    {-# COMPILED_JS zero 0 #-}
-    {-# COMPILED_JS suc function (x) { return x+1; } #-}
-
-    _+_ : ℕ → ℕ → ℕ
-    zero  + n = n
-    suc m + n = suc (m + n)
-
-    {-# COMPILED_JS _+_ function (x) { return function (y) {
-                          return x+y; };
-      } #-}
-
-  To allow FFI code to be optimised, the ECMAScript in a COMPILED_JS
-  declaration is parsed, using a simple parser that recognises a pure
-  functional subset of ECMAScript, consisting of functions, function
-  applications, return, if-statements, if-expressions,
-  side-effect-free binary operators (no precedence, left associative),
-  side-effect-free prefix operators, objects (where all member names
-  are quoted), field accesses, and string and integer literals.
-  Modules may be imported using the require("<module-id>") syntax: any
-  impure code, or code outside the supported fragment, can be placed
-  in a module and imported.
-
-Tools
-=====
-
-* New flag --safe, which can be used to type-check untrusted code.
-
-  This flag disables postulates, primTrustMe, and "unsafe" OPTION
-  pragmas, some of which are known to make Agda inconsistent.
-
-  Rejected pragmas:
-
-    --allow-unsolved-metas
-    --experimental-irrelevance
-    --guardedness-preserving-type-construtors
-    --injective-type-constructors
-    --no-coverage-check
-    --no-positivity-check
-    --no-termination-check
-    --sized-types
-    --type-in-type
-
-  Note that, at the moment, it is not possible to define the universe
-  level or coinduction primitives when --safe is used (because they
-  must be introduced as postulates). This can be worked around by
-  type-checking trusted files in a first pass, without using --safe,
-  and then using --safe in a second pass. Modules which have already
-  been type-checked are not re-type-checked just because --safe is
-  used.
-
-* Dependency graphs.
-
-  The new flag --dependency-graph=FILE can be used to generate a DOT
-  file containing a module dependency graph. The generated file (FILE)
-  can be rendered using a tool like dot.
-
-* The --no-unreachable-check flag has been removed.
-
-* Projection functions are highlighted as functions instead of as
-  fields. Field names (in record definitions and record values) are
-  still highlighted as fields.
-
-* Support for jumping to positions mentioned in the information
-  buffer has been added.
-
-* The "make install" command no longer installs Agda globally (by
-  default).
-
-------------------------------------------------------------------------
--- Release notes for Agda 2 version 2.2.10
-------------------------------------------------------------------------
-
-Important changes since 2.2.8:
-
-Language
---------
-
-* New flag: --without-K.
-
-  This flag makes pattern matching more restricted. If the flag is
-  activated, then Agda only accepts certain case-splits. If the type
-  of the variable to be split is D pars ixs, where D is a data (or
-  record) type, pars stands for the parameters, and ixs the indices,
-  then the following requirements must be satisfied:
-
-  * The indices ixs must be applications of constructors to distinct
-    variables.
-
-  * These variables must not be free in pars.
-
-  The intended purpose of --without-K is to enable experiments with a
-  propositional equality without the K rule. Let us define
-  propositional equality as follows:
-
-    data _≡_ {A : Set} : A → A → Set where
-      refl : ∀ x → x ≡ x
-
-  Then the obvious implementation of the J rule is accepted:
-
-    J : {A : Set} (P : {x y : A} → x ≡ y → Set) →
-        (∀ x → P (refl x)) →
-        ∀ {x y} (x≡y : x ≡ y) → P x≡y
-    J P p (refl x) = p x
-
-  The same applies to Christine Paulin-Mohring's version of the J rule:
-
-    J′ : {A : Set} {x : A} (P : {y : A} → x ≡ y → Set) →
-         P (refl x) →
-         ∀ {y} (x≡y : x ≡ y) → P x≡y
-    J′ P p (refl x) = p
-
-  On the other hand, the obvious implementation of the K rule is not
-  accepted:
-
-    K : {A : Set} (P : {x : A} → x ≡ x → Set) →
-        (∀ x → P (refl x)) →
-        ∀ {x} (x≡x : x ≡ x) → P x≡x
-    K P p (refl x) = p x
-
-  However, we have /not/ proved that activation of --without-K ensures
-  that the K rule cannot be proved in some other way.
-
-* Irrelevant declarations.
-
-  Postulates and functions can be marked as irrelevant by prefixing
-  the name with a dot when the name is declared. Example:
-
-    postulate
-      .irrelevant : {A : Set} → .A → A
-
-  Irrelevant names may only be used in irrelevant positions or in
-  definitions of things which have been declared irrelevant.
-
-  The axiom irrelevant above can be used to define a projection from
-  an irrelevant record field:
-
-    data Subset (A : Set) (P : A → Set) : Set where
-      _#_ : (a : A) → .(P a) → Subset A P
-
-    elem : ∀ {A P} → Subset A P → A
-    elem (a # p) = a
-
-    .certificate : ∀ {A P} (x : Subset A P) → P (elem x)
-    certificate (a # p) = irrelevant p
-
-  The right-hand side of certificate is relevant, so we cannot define
-
-    certificate (a # p) = p
-
-  (because p is irrelevant). However, certificate is declared to be
-  irrelevant, so it can use the axiom irrelevant. Furthermore the
-  first argument of the axiom is irrelevant, which means that
-  irrelevant p is well-formed.
-
-  As shown above the axiom irrelevant justifies irrelevant
-  projections. Previously no projections were generated for irrelevant
-  record fields, such as the field certificate in the following
-  record type:
-
-    record Subset (A : Set) (P : A → Set) : Set where
-      constructor _#_
-      field
-        elem         : A
-        .certificate : P elem
-
-  Now projections are generated automatically for irrelevant fields
-  (unless the flag --no-irrelevant-projections is used). Note that
-  irrelevant projections are highly experimental.
-
-* Termination checker recognises projections.
-
-  Projections now preserve sizes, both in patterns and expressions.
-  Example:
-
-    record Wrap (A : Set) : Set where
-      constructor wrap
-      field
-        unwrap : A
-
-    open Wrap public
-
-    data WNat : Set where
-      zero : WNat
-      suc  : Wrap WNat → WNat
-
-    id : WNat → WNat
-    id zero    = zero
-    id (suc w) = suc (wrap (id (unwrap w)))
-
-  In the structural ordering unwrap w ≤ w. This means that
-
-    unwrap w ≤ w < suc w,
-
-  and hence the recursive call to id is accepted.
-
-  Projections also preserve guardedness.
-
-Tools
------
-
-* Hyperlinks for top-level module names now point to the start of the
-  module rather than to the declaration of the module name. This
-  applies both to the Emacs mode and to the output of agda --html.
-
-* Most occurrences of record field names are now highlighted as
-  "fields". Previously many occurrences were highlighted as
-  "functions".
-
-* Emacs mode: It is no longer possible to change the behaviour of the
-  TAB key by customising agda2-indentation.
-
-* Epic compiler backend.
-
-  A new compiler backend is being implemented. This backend makes use
-  of Edwin Brady's language Epic
-  (http://www.cs.st-andrews.ac.uk/~eb/epic.php) and its compiler. The
-  backend should handle most Agda code, but is still at an
-  experimental stage: more testing is needed, and some things written
-  below may not be entirely true.
-
-  The Epic compiler can be invoked from the command line using the
-  flag --epic:
-
-    agda --epic --epic-flag=<EPIC-FLAG> --compile-dir=<DIR> <FILE>.agda
-
-  The --epic-flag flag can be given multiple times; each flag is given
-  verbatim to the Epic compiler (in the given order). The resulting
-  executable is named after the main module and placed in the
-  directory specified by the --compile-dir flag (default: the project
-  root). Intermediate files are placed in a subdirectory called Epic.
-
-  The backend requires that there is a definition named main. This
-  definition should be a value of type IO Unit, but at the moment this
-  is not checked (so it is easy to produce a program which segfaults).
-  Currently the backend represents actions of type IO A as functions
-  from Unit to A, and main is applied to the unit value.
-
-  The Epic compiler compiles via C, not Haskell, so the pragmas
-  related to the Haskell FFI (IMPORT, COMPILED_DATA and COMPILED) are
-  not used by the Epic backend. Instead there is a new pragma
-  COMPILED_EPIC. This pragma is used to give Epic code for postulated
-  definitions (Epic code can in turn call C code). The form of the
-  pragma is {-# COMPILED_EPIC def code #-}, where def is the name of
-  an Agda postulate and code is some Epic code which should include
-  the function arguments, return type and function body. As an example
-  the IO monad can be defined as follows:
-
-    postulate
-      IO     : Set → Set
-      return : ∀ {A} → A → IO A
-      _>>=_  : ∀ {A B} → IO A → (A → IO B) → IO B
-
-    {-# COMPILED_EPIC return (u : Unit, a : Any) -> Any =
-                        ioreturn(a) #-}
-    {-# COMPILED_EPIC
-          _>>=_ (u1 : Unit, u2 : Unit, x : Any, f : Any) -> Any =
-            iobind(x,f) #-}
-
-  Here ioreturn and iobind are Epic functions which are defined in the
-  file AgdaPrelude.e which is always included.
-
-  By default the backend will remove so-called forced constructor
-  arguments (and case-splitting on forced variables will be
-  rewritten). This optimisation can be disabled by using the flag
-  --no-forcing.
-
-  All data types which look like unary natural numbers after forced
-  constructor arguments have been removed (i.e. types with two
-  constructors, one nullary and one with a single recursive argument)
-  will be represented as "BigInts". This applies to the standard Fin
-  type, for instance.
-
-  The backend supports Agda's primitive functions and the BUILTIN
-  pragmas. If the BUILTIN pragmas for unary natural numbers are used,
-  then some operations, like addition and multiplication, will use
-  more efficient "BigInt" operations.
-
-  If you want to make use of the Epic backend you need to install some
-  dependencies, see the README.
-
-* The Emacs mode can compile using either the MAlonzo or the Epic
-  backend. The variable agda2-backend controls which backend is used.
-
-------------------------------------------------------------------------
--- Release notes for Agda 2 version 2.2.8
-------------------------------------------------------------------------
-
-Important changes since 2.2.6:
-
-Language
---------
-
-* Record pattern matching.
-
-  It is now possible to pattern match on named record constructors.
-  Example:
-
-    record Σ (A : Set) (B : A → Set) : Set where
-      constructor _,_
-      field
-        proj₁ : A
-        proj₂ : B proj₁
-
-    map : {A B : Set} {P : A → Set} {Q : B → Set}
-          (f : A → B) → (∀ {x} → P x → Q (f x)) →
-          Σ A P → Σ B Q
-    map f g (x , y) = (f x , g y)
-
-  The clause above is internally translated into the following one:
-
-    map f g p = (f (Σ.proj₁ p) , g (Σ.proj₂ p))
-
-  Record patterns containing data type patterns are not translated.
-  Example:
-
-    add : ℕ × ℕ → ℕ
-    add (zero  , n) = n
-    add (suc m , n) = suc (add (m , n))
-
-  Record patterns which do not contain data type patterns, but which
-  do contain dot patterns, are currently rejected. Example:
-
-    Foo : {A : Set} (p₁ p₂ : A × A) → proj₁ p₁ ≡ proj₁ p₂ → Set₁
-    Foo (x , y) (.x , y′) refl = Set
-
-* Proof irrelevant function types.
-
-  Agda now supports irrelevant non-dependent function types:
-
-    f : .A → B
-
-  This type implies that f does not depend computationally on its
-  argument. One intended use case is data structures with embedded
-  proofs, like sorted lists:
-
-    postulate
-      _≤_ : ℕ → ℕ → Set
-      p₁  : 0 ≤ 1
-      p₂  : 0 ≤ 1
-
-    data SList (bound : ℕ) : Set where
-      []    : SList bound
-      scons : (head : ℕ) →
-              .(head ≤ bound) →
-              (tail : SList head) →
-              SList bound
-
-  The effect of the irrelevant type in the signature of scons is that
-  scons's second argument is never inspected after Agda has ensured
-  that it has the right type. It is even thrown away, leading to
-  smaller term sizes and hopefully some gain in efficiency. The
-  type-checker ignores irrelevant arguments when checking equality, so
-  two lists can be equal even if they contain different proofs:
-
-    l₁ : SList 1
-    l₁ = scons 0 p₁ []
-
-    l₂ : SList 1
-    l₂ = scons 0 p₂ []
-
-    l₁≡l₂ : l₁ ≡ l₂
-    l₁≡l₂ = refl
-
-  Irrelevant arguments can only be used in irrelevant contexts.
-  Consider the following subset type:
-
-    data Subset (A : Set) (P : A → Set) : Set where
-      _#_ : (elem : A) → .(P elem) → Subset A P
-
-  The following two uses are fine:
-
-    elimSubset : ∀ {A C : Set} {P} →
-                 Subset A P → ((a : A) → .(P a) → C) → C
-    elimSubset (a # p) k = k a p
-
-    elem : {A : Set} {P : A → Set} → Subset A P → A
-    elem (x # p) = x
-
-  However, if we try to project out the proof component, then Agda
-  complains that "variable p is declared irrelevant, so it cannot be
-  used here":
-
-    prjProof : ∀ {A P} (x : Subset A P) → P (elem x)
-    prjProof (a # p) = p
-
-  Matching against irrelevant arguments is also forbidden, except in
-  the case of irrefutable matches (record constructor patterns which
-  have been translated away). For instance, the match against the
-  pattern (p , q) here is accepted:
-
-    elim₂ : ∀ {A C : Set} {P Q : A → Set} →
-            Subset A (λ x → Σ (P x) (λ _ → Q x)) →
-            ((a : A) → .(P a) → .(Q a) → C) → C
-    elim₂ (a # (p , q)) k = k a p q
-
-  Absurd matches () are also allowed.
-
-  Note that record fields can also be irrelevant. Example:
-
-    record Subset (A : Set) (P : A → Set) : Set where
-      constructor _#_
-      field
-        elem   : A
-        .proof : P elem
-
-  Irrelevant fields are never in scope, neither inside nor outside the
-  record. This means that no record field can depend on an irrelevant
-  field, and furthermore projections are not defined for such fields.
-  Irrelevant fields can only be accessed using pattern matching, as in
-  elimSubset above.
-
-  Irrelevant function types were added very recently, and have not
-  been subjected to much experimentation yet, so do not be surprised
-  if something is changed before the next release. For instance,
-  dependent irrelevant function spaces (.(x : A) → B) might be added
-  in the future.
-
-* Mixfix binders.
-
-  It is now possible to declare user-defined syntax that binds
-  identifiers. Example:
-
-    postulate
-      State  : Set → Set → Set
-      put    : ∀ {S} → S → State S ⊤
-      get    : ∀ {S} → State S S
-      return : ∀ {A S} → A → State S A
-      bind   : ∀ {A B S} → State S B → (B → State S A) → State S A
-
-    syntax bind e₁ (λ x → e₂) = x ← e₁ , e₂
-
-    increment : State ℕ ⊤
-    increment = x ← get ,
-                put (1 + x)
-
-  The syntax declaration for bind implies that x is in scope in e₂,
-  but not in e₁.
-
-  You can give fixity declarations along with syntax declarations:
-
-    infixr 40 bind
-    syntax bind e₁ (λ x → e₂) = x ← e₁ , e₂
-
-  The fixity applies to the syntax, not the name; syntax declarations
-  are also restricted to ordinary, non-operator names. The following
-  declaration is disallowed:
-
-    syntax _==_ x y = x === y
-
-  Syntax declarations must also be linear; the following declaration
-  is disallowed:
-
-    syntax wrong x = x + x
-
-  Syntax declarations were added very recently, and have not been
-  subjected to much experimentation yet, so do not be surprised if
-  something is changed before the next release.
-
-* Prop has been removed from the language.
-
-  The experimental sort Prop has been disabled. Any program using Prop
-  should typecheck if Prop is replaced by Set₀. Note that Prop is still
-  a keyword.
-
-* Injective type constructors off by default.
-
-  Automatic injectivity of type constructors has been disabled (by
-  default). To enable it, use the flag --injective-type-constructors,
-  either on the command line or in an OPTIONS pragma. Note that this
-  flag makes Agda anti-classical and possibly inconsistent:
-
-    Agda with excluded middle is inconsistent
-    http://thread.gmane.org/gmane.comp.lang.agda/1367
-
-  See test/Succeed/InjectiveTypeConstructors.agda for an example.
-
-* Termination checker can count.
-
-  There is a new flag --termination-depth=N accepting values N >= 1
-  (with N = 1 being the default) which influences the behavior of the
-  termination checker. So far, the termination checker has only
-  distinguished three cases when comparing the argument of a recursive
-  call with the formal parameter of the callee.
-
-    < : the argument is structurally smaller than the parameter
-    = : they are equal
-    ? : the argument is bigger or unrelated to the parameter
-
-  This behavior, which is still the default (N = 1), will not
-  recognise the following functions as terminating.
-
-    mutual
-
-      f : ℕ → ℕ
-      f zero          = zero
-      f (suc zero)    = zero
-      f (suc (suc n)) = aux n
-
-      aux : ℕ → ℕ
-      aux m = f (suc m)
-
-  The call graph
-
-    f --(<)--> aux --(?)--> f
-
-  yields a recursive call from f to f via aux where the relation of
-  call argument to callee parameter is computed as "unrelated"
-  (composition of < and ?).
-
-  Setting N >= 2 allows a finer analysis: n has two constructors less
-  than suc (suc n), and suc m has one more than m, so we get the call
-  graph:
-
-    f --(-2)--> aux --(+1)--> f
-
-  The indirect call f --> f is now labeled with (-1), and the
-  termination checker can recognise that the call argument is
-  decreasing on this path.
-
-  Setting the termination depth to N means that the termination
-  checker counts decrease up to N and increase up to N-1. The default,
-  N=1, means that no increase is counted, every increase turns to
-  "unrelated".
-
-  In practice, examples like the one above sometimes arise when "with"
-  is used. As an example, the program
-
-    f : ℕ → ℕ
-    f zero          = zero
-    f (suc zero)    = zero
-    f (suc (suc n)) with zero
-    ... | _ = f (suc n)
-
-  is internally represented as
-
-    mutual
-
-      f : ℕ → ℕ
-      f zero          = zero
-      f (suc zero)    = zero
-      f (suc (suc n)) = aux n zero
-
-      aux : ℕ → ℕ → ℕ
-      aux m k = f (suc m)
-
-  Thus, by default, the definition of f using "with" is not accepted
-  by the termination checker, even though it looks structural (suc n
-  is a subterm of suc suc n). Now, the termination checker is
-  satisfied if the option "--termination-depth=2" is used.
-
-  Caveats:
-
-  - This is an experimental feature, hopefully being replaced by
-    something smarter in the near future.
-
-  - Increasing the termination depth will quickly lead to very long
-    termination checking times. So, use with care. Setting termination
-    depth to 100 by habit, just to be on the safe side, is not a good
-    idea!
-
-  - Increasing termination depth only makes sense for linear data
-    types such as ℕ and Size. For other types, increase cannot be
-    recognised. For instance, consider a similar example with lists.
-
-      data List : Set where
-	nil  : List
-	cons : ℕ → List → List
-
-      mutual
-	f : List → List
-	f nil                  = nil
-	f (cons x nil)         = nil
-	f (cons x (cons y ys)) = aux y ys
-
-	aux : ℕ → List → List
-	aux z zs = f (cons z zs)
-
-    Here the termination checker compares cons z zs to z and also to
-    zs. In both cases, the result will be "unrelated", no matter how
-    high we set the termination depth. This is because when comparing
-    cons z zs to zs, for instance, z is unrelated to zs, thus,
-    cons z zs is also unrelated to zs. We cannot say it is just "one
-    larger" since z could be a very large term. Note that this points
-    to a weakness of untyped termination checking.
-
-    To regain the benefit of increased termination depth, we need to
-    index our lists by a linear type such as ℕ or Size. With
-    termination depth 2, the above example is accepted for vectors
-    instead of lists.
-
-* The codata keyword has been removed. To use coinduction, use the
-  following new builtins: INFINITY, SHARP and FLAT. Example:
-
-    {-# OPTIONS --universe-polymorphism #-}
-
-    module Coinduction where
-
-    open import Level
-
-    infix 1000 ♯_
-
-    postulate
-      ∞  : ∀ {a} (A : Set a) → Set a
-      ♯_ : ∀ {a} {A : Set a} → A → ∞ A
-      ♭  : ∀ {a} {A : Set a} → ∞ A → A
-
-    {-# BUILTIN INFINITY ∞  #-}
-    {-# BUILTIN SHARP    ♯_ #-}
-    {-# BUILTIN FLAT     ♭  #-}
-
-  Note that (non-dependent) pattern matching on SHARP is no longer
-  allowed.
-
-  Note also that strange things might happen if you try to combine the
-  pragmas above with COMPILED_TYPE, COMPILED_DATA or COMPILED pragmas,
-  or if the pragmas do not occur right after the postulates.
-
-  The compiler compiles the INFINITY builtin to nothing (more or
-  less), so that the use of coinduction does not get in the way of FFI
-  declarations:
-
-    data Colist (A : Set) : Set where
-      []  : Colist A
-      _∷_ : (x : A) (xs : ∞ (Colist A)) → Colist A
-
-    {-# COMPILED_DATA Colist [] [] (:) #-}
-
-* Infinite types.
-
-  If the new flag --guardedness-preserving-type-constructors is used,
-  then type constructors are treated as inductive constructors when we
-  check productivity (but only in parameters, and only if they are
-  used strictly positively or not at all). This makes examples such as
-  the following possible:
-
-    data Rec (A : ∞ Set) : Set where
-      fold : ♭ A → Rec A
-
-    -- Σ cannot be a record type below.
-
-    data Σ (A : Set) (B : A → Set) : Set where
-      _,_ : (x : A) → B x → Σ A B
-
-    syntax Σ A (λ x → B) = Σ[ x ∶ A ] B
-
-    -- Corecursive definition of the W-type.
-
-    W : (A : Set) → (A → Set) → Set
-    W A B = Rec (♯ (Σ[ x ∶ A ] (B x → W A B)))
-
-    syntax W A (λ x → B) = W[ x ∶ A ] B
-
-    sup : {A : Set} {B : A → Set} (x : A) (f : B x → W A B) → W A B
-    sup x f = fold (x , f)
-
-    W-rec : {A : Set} {B : A → Set}
-            (P : W A B → Set) →
-            (∀ {x} {f : B x → W A B} → (∀ y → P (f y)) → P (sup x f)) →
-            ∀ x → P x
-    W-rec P h (fold (x , f)) = h (λ y → W-rec P h (f y))
-
-    -- Induction-recursion encoded as corecursion-recursion.
-
-    data Label : Set where
-      ′0 ′1 ′2 ′σ ′π ′w : Label
-
-    mutual
-
-      U : Set
-      U = Σ Label U′
-
-      U′ : Label → Set
-      U′ ′0 = ⊤
-      U′ ′1 = ⊤
-      U′ ′2 = ⊤
-      U′ ′σ = Rec (♯ (Σ[ a ∶ U ] (El a → U)))
-      U′ ′π = Rec (♯ (Σ[ a ∶ U ] (El a → U)))
-      U′ ′w = Rec (♯ (Σ[ a ∶ U ] (El a → U)))
-
-      El : U → Set
-      El (′0 , _)            = ⊥
-      El (′1 , _)            = ⊤
-      El (′2 , _)            = Bool
-      El (′σ , fold (a , b)) = Σ[ x ∶ El a ]  El (b x)
-      El (′π , fold (a , b)) =   (x : El a) → El (b x)
-      El (′w , fold (a , b)) = W[ x ∶ El a ]  El (b x)
-
-    U-rec : (P : ∀ u → El u → Set) →
-            P (′1 , _) tt →
-            P (′2 , _) true →
-            P (′2 , _) false →
-            (∀ {a b x y} →
-             P a x → P (b x) y → P (′σ , fold (a , b)) (x , y)) →
-            (∀ {a b f} →
-             (∀ x → P (b x) (f x)) → P (′π , fold (a , b)) f) →
-            (∀ {a b x f} →
-             (∀ y → P (′w , fold (a , b)) (f y)) →
-             P (′w , fold (a , b)) (sup x f)) →
-            ∀ u (x : El u) → P u x
-    U-rec P P1 P2t P2f Pσ Pπ Pw = rec
-      where
-      rec : ∀ u (x : El u) → P u x
-      rec (′0 , _)            ()
-      rec (′1 , _)            _              = P1
-      rec (′2 , _)            true           = P2t
-      rec (′2 , _)            false          = P2f
-      rec (′σ , fold (a , b)) (x , y)        = Pσ (rec _ x) (rec _ y)
-      rec (′π , fold (a , b)) f              = Pπ (λ x → rec _ (f x))
-      rec (′w , fold (a , b)) (fold (x , f)) = Pw (λ y → rec _ (f y))
-
-  The --guardedness-preserving-type-constructors extension is based on
-  a rather operational understanding of ∞/♯_; it's not yet clear if
-  this extension is consistent.
-
-* Qualified constructors.
-
-  Constructors can now be referred to qualified by their data type.
-  For instance, given
-
-    data Nat : Set where
-      zero : Nat
-      suc  : Nat → Nat
-
-    data Fin : Nat → Set where
-      zero : ∀ {n} → Fin (suc n)
-      suc  : ∀ {n} → Fin n → Fin (suc n)
-
-  you can refer to the constructors unambiguously as Nat.zero,
-  Nat.suc, Fin.zero, and Fin.suc (Nat and Fin are modules containing
-  the respective constructors). Example:
-
-    inj : (n m : Nat) → Nat.suc n ≡ suc m → n ≡ m
-    inj .m m refl = refl
-
-  Previously you had to write something like
-
-    inj : (n m : Nat) → _≡_ {Nat} (suc n) (suc m) → n ≡ m
-
-  to make the type checker able to figure out that you wanted the
-  natural number suc in this case.
-
-* Reflection.
-
-  There are two new constructs for reflection:
-
-    - quoteGoal x in e
-
-      In e the value of x will be a representation of the goal type
-      (the type expected of the whole expression) as an element in a
-      datatype of Agda terms (see below). For instance,
-
-      example : ℕ
-      example = quoteGoal x in {! at this point x = def (quote ℕ) [] !}
-
-    - quote x : Name
-
-      If x is the name of a definition (function, datatype, record, or
-      a constructor), quote x gives you the representation of x as a
-      value in the primitive type Name (see below).
-
-  Quoted terms use the following BUILTINs and primitives (available
-  from the standard library module Reflection):
-
-    -- The type of Agda names.
-
-    postulate Name : Set
-
-    {-# BUILTIN QNAME Name #-}
-
-    primitive primQNameEquality : Name → Name → Bool
-
-    -- Arguments.
-
-    Explicit? = Bool
-
-    data Arg A : Set where
-      arg : Explicit? → A → Arg A
-
-    {-# BUILTIN ARG    Arg #-}
-    {-# BUILTIN ARGARG arg #-}
-
-    -- The type of Agda terms.
-
-    data Term : Set where
-      var     : ℕ → List (Arg Term) → Term
-      con     : Name → List (Arg Term) → Term
-      def     : Name → List (Arg Term) → Term
-      lam     : Explicit? → Term → Term
-      pi      : Arg Term → Term → Term
-      sort    : Term
-      unknown : Term
-
-    {-# BUILTIN AGDATERM            Term    #-}
-    {-# BUILTIN AGDATERMVAR         var     #-}
-    {-# BUILTIN AGDATERMCON         con     #-}
-    {-# BUILTIN AGDATERMDEF         def     #-}
-    {-# BUILTIN AGDATERMLAM         lam     #-}
-    {-# BUILTIN AGDATERMPI          pi      #-}
-    {-# BUILTIN AGDATERMSORT        sort    #-}
-    {-# BUILTIN AGDATERMUNSUPPORTED unknown #-}
-
-  Reflection may be useful when working with internal decision
-  procedures, such as the standard library's ring solver.
-
-* Minor record definition improvement.
-
-  The definition of a record type is now available when type checking
-  record module definitions. This means that you can define things
-  like the following:
-
-    record Cat : Set₁ where
-      field
-        Obj  : Set
-        _=>_ : Obj → Obj → Set
-        -- ...
-
-      -- not possible before:
-      op : Cat
-      op = record { Obj = Obj; _=>_ = λ A B → B => A }
-
-Tools
------
-
-* The "Goal type and context" command now shows the goal type before
-  the context, and the context is shown in reverse order. The "Goal
-  type, context and inferred type" command has been modified in a
-  similar way.
-
-* Show module contents command.
-
-  Given a module name M the Emacs mode can now display all the
-  top-level modules and names inside M, along with types for the
-  names. The command is activated using C-c C-o or the menus.
-
-* Auto command.
-
-  A command which searches for type inhabitants has been added. The
-  command is invoked by pressing C-C C-a (or using the goal menu).
-  There are several flags and parameters, e.g. '-c' which enables
-  case-splitting in the search. For further information, see the Agda
-  wiki:
-
-    http://wiki.portal.chalmers.se/agda/pmwiki.php?n=Main.Auto
-
-* HTML generation is now possible for a module with unsolved
-  meta-variables, provided that the --allow-unsolved-metas flag is
-  used.
-
-------------------------------------------------------------------------
--- Release notes for Agda 2 version 2.2.6
-------------------------------------------------------------------------
-
-Important changes since 2.2.4:
-
-Language
---------
-
-* Universe polymorphism (experimental extension).
-
-  To enable universe polymorphism give the flag
-  --universe-polymorphism on the command line or (recommended) as an
-  OPTIONS pragma.
-
-  When universe polymorphism is enabled Set takes an argument which is
-  the universe level. For instance, the type of universe polymorphic
-  identity is
-
-    id : {a : Level} {A : Set a} → A → A.
-
-  The type Level is isomorphic to the unary natural numbers and should be
-  specified using the BUILTINs LEVEL, LEVELZERO, and LEVELSUC:
-
-    data Level : Set where
-      zero : Level
-      suc  : Level → Level
-
-    {-# BUILTIN LEVEL     Level #-}
-    {-# BUILTIN LEVELZERO zero  #-}
-    {-# BUILTIN LEVELSUC  suc   #-}
-
-  There is an additional BUILTIN LEVELMAX for taking the maximum of two
-  levels:
-
-    max : Level → Level → Level
-    max  zero    m      = m
-    max (suc n)  zero   = suc n
-    max (suc n) (suc m) = suc (max n m)
-
-    {-# BUILTIN LEVELMAX max #-}
-
-  The non-polymorphic universe levels Set, Set₁ and so on are sugar
-  for Set zero, Set (suc zero), etc.
-
-  At present there is no automatic lifting of types from one level to
-  another. It can still be done (rather clumsily) by defining types
-  like the following one:
-
-    data Lifted {a} (A : Set a) : Set (suc a) where
-      lift : A → Lifted A
-
-  However, it is likely that automatic lifting is introduced at some
-  point in the future.
-
-* Multiple constructors, record fields, postulates or primitives can
-  be declared using a single type signature:
-
-    data Bool : Set where
-      false true : Bool
-
-    postulate
-      A B : Set
-
-* Record fields can be implicit:
-
-    record R : Set₁ where
-      field
-        {A}         : Set
-        f           : A → A
-        {B C} D {E} : Set
-        g           : B → C → E
-
-  By default implicit fields are not printed.
-
-* Record constructors can be defined:
-
-    record Σ (A : Set) (B : A → Set) : Set where
-      constructor _,_
-      field
-        proj₁ : A
-        proj₂ : B proj₁
-
-  In this example _,_ gets the type
-
-     (proj₁ : A) → B proj₁ → Σ A B.
-
-  For implicit fields the corresponding constructor arguments become
-  implicit.
-
-  Note that the constructor is defined in the /outer/ scope, so any
-  fixity declaration has to be given outside the record definition.
-  The constructor is not in scope inside the record module.
-
-  Note also that pattern matching for records has not been implemented
-  yet.
-
-* BUILTIN hooks for equality.
-
-  The data type
-
-    data _≡_ {A : Set} (x : A) : A → Set where
-      refl : x ≡ x
-
-  can be specified as the builtin equality type using the following
-  pragmas:
-
-    {-# BUILTIN EQUALITY _≡_  #-}
-    {-# BUILTIN REFL     refl #-}
-
-  The builtin equality is used for the new rewrite construct and
-  the primTrustMe primitive described below.
-
-* New rewrite construct.
-
-  If eqn : a ≡ b, where _≡_ is the builtin equality (see above) you
-  can now write
-
-    f ps rewrite eqn = rhs
-
-  instead of
-
-    f ps with a | eqn
-    ... | ._ | refl = rhs
-
-  The rewrite construct has the effect of rewriting the goal and the
-  context by the given equation (left to right).
-
-  You can rewrite using several equations (in sequence) by separating
-  them with vertical bars (|):
-
-    f ps rewrite eqn₁ | eqn₂ | … = rhs
-
-  It is also possible to add with clauses after rewriting:
-
-    f ps rewrite eqns with e
-    ... | p = rhs
-
-  Note that pattern matching happens before rewriting—if you want to
-  rewrite and then do pattern matching you can use a with after the
-  rewrite.
-
-  See test/Succeed/Rewrite.agda for some examples.
-
-* A new primitive, primTrustMe, has been added:
-
-    primTrustMe : {A : Set} {x y : A} → x ≡ y
-
-  Here _≡_ is the builtin equality (see BUILTIN hooks for equality,
-  above).
-
-  If x and y are definitionally equal, then
-  primTrustMe {x = x} {y = y} reduces to refl.
-
-  Note that the compiler replaces all uses of primTrustMe with the
-  REFL builtin, without any check for definitional equality. Incorrect
-  uses of primTrustMe can potentially lead to segfaults or similar
-  problems.
-
-  For an example of the use of primTrustMe, see Data.String in version
-  0.3 of the standard library, where it is used to implement decidable
-  equality on strings using the primitive boolean equality.
-
-* Changes to the syntax and semantics of IMPORT pragmas, which are
-  used by the Haskell FFI. Such pragmas must now have the following
-  form:
-
-    {-# IMPORT <module name> #-}
-
-  These pragmas are interpreted as /qualified/ imports, so Haskell
-  names need to be given qualified (unless they come from the Haskell
-  prelude).
-
-* The horizontal tab character (U+0009) is no longer treated as white
-  space.
-
-* Line pragmas are no longer supported.
-
-* The --include-path flag can no longer be used as a pragma.
-
-* The experimental and incomplete support for proof irrelevance has
-  been disabled.
-
-Tools
------
-
-* New "intro" command in the Emacs mode. When there is a canonical way
-  of building something of the goal type (for instance, if the goal
-  type is a pair), the goal can be refined in this way. The command
-  works for the following goal types:
-
-    - A data type where only one of its constructors can be used to
-      construct an element of the goal type. (For instance, if the
-      goal is a non-empty vector, a "cons" will be introduced.)
-
-    - A record type. A record value will be introduced. Implicit
-      fields will not be included unless showing of implicit arguments
-      is switched on.
-
-    - A function type. A lambda binding as many variables as possible
-      will be introduced. The variable names will be chosen from the
-      goal type if its normal form is a dependent function type,
-      otherwise they will be variations on "x". Implicit lambdas will
-      only be inserted if showing of implicit arguments is switched
-      on.
-
-  This command can be invoked by using the refine command (C-c C-r)
-  when the goal is empty. (The old behaviour of the refine command in
-  this situation was to ask for an expression using the minibuffer.)
-
-* The Emacs mode displays "Checked" in the mode line if the current
-  file type checked successfully without any warnings.
-
-* If a file F is loaded, and this file defines the module M, it is an
-  error if F is not the file which defines M according to the include
-  path.
-
-  Note that the command-line tool and the Emacs mode define the
-  meaning of relative include paths differently: the command-line tool
-  interprets them relative to the current working directory, whereas
-  the Emacs mode interprets them relative to the root directory of the
-  current project. (As an example, if the module A.B.C is loaded from
-  the file <some-path>/A/B/C.agda, then the root directory is
-  <some-path>.)
-
-* It is an error if there are several files on the include path which
-  match a given module name.
-
-* Interface files are relocatable. You can move around source trees as
-  long as the include path is updated in a corresponding way. Note
-  that a module M may be re-typechecked if its time stamp is strictly
-  newer than that of the corresponding interface file (M.agdai).
-
-* Type-checking is no longer done when an up-to-date interface exists.
-  (Previously the initial module was always type-checked.)
-
-* Syntax highlighting files for Emacs (.agda.el) are no longer used.
-  The --emacs flag has been removed. (Syntax highlighting information
-  is cached in the interface files.)
-
-* The Agate and Alonzo compilers have been retired. The options
-  --agate, --alonzo and --malonzo have been removed.
-
-* The default directory for MAlonzo output is the project's root
-  directory. The --malonzo-dir flag has been renamed to --compile-dir.
-
-* Emacs mode: C-c C-x C-d no longer resets the type checking state.
-  C-c C-x C-r can be used for a more complete reset. C-c C-x C-s
-  (which used to reload the syntax highlighting information) has been
-  removed. C-c C-l can be used instead.
-
-* The Emacs mode used to define some "abbrevs", unless the user
-  explicitly turned this feature off. The new default is /not/ to add
-  any abbrevs. The old default can be obtained by customising
-  agda2-mode-abbrevs-use-defaults (a customisation buffer can be
-  obtained by typing M-x customize-group agda2 RET after an Agda file
-  has been loaded).
-
-------------------------------------------------------------------------
--- Release notes for Agda 2 version 2.2.4
-------------------------------------------------------------------------
-
-Important changes since 2.2.2:
-
-* Change to the semantics of "open import" and "open module". The
-  declaration
-
-    open import M <using/hiding/renaming>
-
-  now translates to
-
-    import A
-    open A <using/hiding/renaming>
-
-  instead of
-
-    import A <using/hiding/renaming>
-    open A.
-
-  The same translation is used for "open module M = E …". Declarations
-  involving the keywords as or public are changed in a corresponding
-  way ("as" always goes with import, and "public" always with open).
-
-  This change means that import directives do not affect the qualified
-  names when open import/module is used. To get the old behaviour you
-  can use the expanded version above.
-
-* Names opened publicly in parameterised modules no longer inherit the
-  module parameters. Example:
-
-    module A where
-      postulate X : Set
-
-    module B (Y : Set) where
-      open A public
-
-  In Agda 2.2.2 B.X has type (Y : Set) → Set, whereas in Agda 2.2.4
-  B.X has type Set.
-
-* Previously it was not possible to export a given constructor name
-  through two different "open public" statements in the same module.
-  This is now possible.
-
-* Unicode subscript digits are now allowed for the hierarchy of
-  universes (Set₀, Set₁, …): Set₁ is equivalent to Set1.
-
-------------------------------------------------------------------------
--- Release notes for Agda 2 version 2.2.2
-------------------------------------------------------------------------
-
-Important changes since 2.2.0:
-
-Tools
------
-
-* The --malonzodir option has been renamed to --malonzo-dir.
-
-* The output of agda --html is by default placed in a directory called
-  "html".
-
-Infrastructure
---------------
-
-* The Emacs mode is included in the Agda Cabal package, and installed
-  by cabal install. The recommended way to enable the Emacs mode is to
-  include the following code in .emacs:
-
-    (load-file (let ((coding-system-for-read 'utf-8))
-                    (shell-command-to-string "agda-mode locate")))
-
-------------------------------------------------------------------------
--- Release notes for Agda 2 version 2.2.0
-------------------------------------------------------------------------
-
-Important changes since 2.1.2 (which was released 2007-08-16):
-
-Language
---------
-
-* Exhaustive pattern checking. Agda complains if there are missing
-  clauses in a function definition.
-
-* Coinductive types are supported. This feature is under
-  development/evaluation, and may change.
-
-  http://wiki.portal.chalmers.se/agda/agda.php?n=ReferenceManual.Codatatypes
-
-* Another experimental feature: Sized types, which can make it easier
-  to explain why your code is terminating.
-
-* Improved constraint solving for functions with constructor headed
-  right hand sides.
-
-  http://wiki.portal.chalmers.se/agda/agda.php?n=ReferenceManual.FindingTheValuesOfImplicitArguments
-
-* A simple, well-typed foreign function interface, which allows use of
-  Haskell functions in Agda code.
-
-  http://wiki.portal.chalmers.se/agda/pmwiki.php?n=Docs.FFI
-
-* The tokens forall, -> and \ can be written as ∀, → and λ.
-
-* Absurd lambdas: λ () and λ {}.
-
-  http://thread.gmane.org/gmane.comp.lang.agda/440
-
-* Record fields whose values can be inferred can be omitted.
-
-* Agda complains if it spots an unreachable clause, or if a pattern
-  variable "shadows" a hidden constructor of matching type.
-
-  http://thread.gmane.org/gmane.comp.lang.agda/720
-
-Tools
------
-
-* Case-split: The user interface can replace a pattern variable with
-  the corresponding constructor patterns. You get one new left-hand
-  side for every possible constructor.
-
-  http://wiki.portal.chalmers.se/agda/pmwiki.php?n=Main.QuickGuideToEditingTypeCheckingAndCompilingAgdaCode
-
-* The MAlonzo compiler.
-
-  http://wiki.portal.chalmers.se/agda/pmwiki.php?n=Docs.MAlonzo
-
-* A new Emacs input method, which contains bindings for many Unicode
-  symbols, is by default activated in the Emacs mode.
-
-  http://wiki.portal.chalmers.se/agda/pmwiki.php?n=Docs.UnicodeInput
-
-* Highlighted, hyperlinked HTML can be generated from Agda source
-  code.
-
-  http://wiki.portal.chalmers.se/agda/pmwiki.php?n=Main.HowToGenerateWebPagesFromSourceCode
-
-* The command-line interactive mode (agda -I) is no longer supported,
-  but should still work.
-
-  http://thread.gmane.org/gmane.comp.lang.agda/245
-
-* Reload times when working on large projects are now considerably
-  better.
-
-  http://thread.gmane.org/gmane.comp.lang.agda/551
-
-Libraries
----------
-
-* A standard library is under development.
-
-  http://wiki.portal.chalmers.se/agda/pmwiki.php?n=Libraries.StandardLibrary
-
-Documentation
--------------
-
-* The Agda wiki is better organised. It should be easier for a
-  newcomer to find relevant information now.
-
-  http://wiki.portal.chalmers.se/agda/
-
-Infrastructure
---------------
-
-* Easy-to-install packages for Windows and Debian/Ubuntu have been
-  prepared.
-
-  http://wiki.portal.chalmers.se/agda/pmwiki.php?n=Main.Download
-
-* Agda 2.2.0 is available from Hackage.
-
-  http://hackage.haskell.org/
diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,8782 @@
+Release notes for Agda version 2.5.2
+====================================
+
+Installation and infrastructure
+-------------------------------
+
+* Modular support for literate programming
+
+  Literate programming support has been moved out of the lexer and into the
+  `Agda.Syntax.Parser.Literate` module.
+
+  Files ending in `.lagda` are still interpreted as literate TeX.
+  The extension `.lagda.tex` may now also be used for literate TeX files.
+
+  Support for more literate code formats and extensions can be added
+  modularly.
+
+  By default, `.lagda.*` files are opened in the Emacs mode
+  corresponding to their last extension.  One may switch to and from
+  Agda mode manually.
+
+* reStructuredText
+
+  Literate Agda code can now be written in reStructuredText format, using
+  the `.lagda.rst` extension.
+
+  As a general rule, Agda will parse code following a line ending in `::`,
+  as long as that line does not start with `..`. The module name must
+  match the path of the file in the documentation, and must be given
+  explicitly.  Several files have been converted already, for instance:
+
+  - `language/mixfix-operators.lagda.rst`
+  - `tools/compilers.lagda.rst`
+
+  Note that:
+
+  - Code blocks inside an rST comment block will be type-checked by Agda,
+    but not rendered in the documentation.
+  - Code blocks delimited by `.. code-block:: agda` will be rendered in
+    the final documenation, but not type-checked by Agda.
+  - All lines inside a codeblock must be further indented than the first line
+    of the code block.
+  - Indentation must be consistent between code blocks. In other
+    words, the file as a whole must be a valid Agda file if all the
+    literate text is replaced by white space.
+
+* Documentation testing
+
+  All documentation files in the `doc/user-manual` directory that end
+  in `.lagda.rst` can be typechecked by running `make
+  user-manual-test`, and also as part of the general test suite.
+
+* Support installation through Stack
+
+  The Agda sources now also include a configuration for the stack install tool
+  (tested through continuous integration).
+
+  It should hence be possible to repeatably build any future Agda version
+  (including unreleased commits) from source by checking out that version and
+  running `stack install` from the checkout directory.
+  By using repeatable builds, this should keep selecting the same dependencies
+  in the face of new releases on Hackage.
+
+  For further motivation, see
+  Issue [#2005](https://github.com/agda/agda/issues/2005).
+
+* Removed the `--test` command-line option
+
+  This option ran the internal test-suite. This test-suite was
+  implemented using Cabal supports for
+  test-suites. [Issue [#2083](https://github.com/agda/agda/issues/2083)].
+
+* The `--no-default-libraries` flag has been split into two flags
+  [Issue [#1937](https://github.com/agda/agda/issues/1937)]
+
+  - `--no-default-libraries`: Ignore the defaults file but still look for local
+    `.agda-lib` files
+  - `--no-libraries`: Don't use any `.agda-lib` files (the previous behaviour
+    of `--no-default-libraries`).
+
+* If `agda` was built inside `git` repository, then the `--version` flag
+  will display the hash of the commit used, and whether the tree was
+  `-dirty` (i.e. there were uncommited changes in the working directory).
+  Otherwise, only the version number is shown.
+
+Language
+--------
+
+* Dot patterns are now optional
+
+  Consider the following program
+
+  ```agda
+  data Vec (A : Set) : Nat → Set where
+    []   : Vec A zero
+    cons : ∀ n → A → Vec A n → Vec A (suc n)
+
+  vmap : ∀ {A B} n → (A → B) → Vec A n → Vec B n
+  vmap .zero    f []            = []
+  vmap .(suc m) f (cons m x xs) = cons m (f x) (vmap m f xs)
+  ```
+
+  If we don't care about the dot patterns they can (and could previously) be
+  replaced by wildcards:
+
+  ```agda
+  vmap : ∀ {A B} n → (A → B) → Vec A n → Vec B n
+  vmap _ f []            = []
+  vmap _ f (cons m x xs) = cons m (f x) (vmap m f xs)
+  ```
+
+  Now it is also allowed to give a variable pattern in place of the dot
+  pattern. In this case the variable will be bound to the value of the dot
+  pattern. For our example:
+
+  ```agda
+  vmap : ∀ {A B} n → (A → B) → Vec A n → Vec B n
+  vmap n f []            = []
+  vmap n f (cons m x xs) = cons m (f x) (vmap m f xs)
+  ```
+
+  In the first clause `n` reduces to `zero` and in the second clause
+  `n` reduces to `suc m`.
+
+* Module parameters can now be refined by pattern matching
+
+  Previously, pattern matches that would refine a variable outside the
+  current left-hand side was disallowed. For instance, the following
+  would give an error, since matching on the vector would
+  instantiate `n`.
+
+  ```agda
+  module _ {A : Set} {n : Nat} where
+    f : Vec A n → Vec A n
+    f []       = []
+    f (x ∷ xs) = x ∷ xs
+  ```
+
+  Now this is no longer disallowed. Instead `n` is bound to the
+  appropriate value in each clause.
+
+* With-abstraction now abstracts also in module parameters
+
+  The change that allows pattern matching to refine module parameters also
+  allows with-abstraction to abstract in them. For instance,
+
+  ```agda
+  module _ (n : Nat) (xs : Vec Nat (n + n)) where
+    f : Nat
+    f with n + n
+    f    | nn = ? -- xs : Vec Nat nn
+  ```
+
+  Note: Any function argument or lambda-bound variable bound outside a given
+  function counts as a module parameter.
+
+  To prevent abstraction in a parameter you can hide it inside a definition. In
+  the above example,
+
+  ```agda
+  module _ (n : Nat) (xs : Vec Nat (n + n)) where
+
+    ys : Vec Nat (n + n)
+    ys = xs
+
+    f : Nat
+    f with n + n
+    f    | nn = ? -- xs : Vec Nat nn, ys : Vec Nat (n + n)
+  ```
+
+* As-patterns [Issue [#78](https://github.com/agda/agda/issues/78)].
+
+  As-patterns (`@`-patterns) are finally working and can be used to name a
+  pattern. The name has the same scope as normal pattern variables (i.e. the
+  right-hand side, where clause, and dot patterns). The name reduces to the
+  value of the named pattern. For example::
+
+  ```agda
+  module _ {A : Set} (_<_ : A → A → Bool) where
+    merge : List A → List A → List A
+    merge xs [] = xs
+    merge [] ys = ys
+    merge xs@(x ∷ xs₁) ys@(y ∷ ys₁) =
+      if x < y then x ∷ merge xs₁ ys
+               else y ∷ merge xs ys₁
+  ```
+
+* Idiom brackets.
+
+  There is new syntactic sugar for idiom brackets:
+
+    `(| e a1 .. an |)` expands to
+
+    `pure e <*> a1 <*> .. <*> an`
+
+  The desugaring takes place before scope checking and only requires names
+  `pure` and `_<*>_` in scope. Idiom brackets work well with operators, for
+  instance
+
+    `(| if a then b else c |)` desugars to
+
+    `pure if_then_else_ <*> a <*> b <*> c`
+
+  Limitations:
+
+    - The top-level application inside idiom brackets cannot include
+      implicit applications, so `(| foo {x = e} a b |)` is illegal. In
+      the case `e` is pure you can write `(| (foo {x = e}) a b |)`
+      which desugars to
+
+        `pure (foo {x = e}) <*> a <*> b`
+
+    - Binding syntax and operator sections cannot appear immediately inside
+      idiom brackets.
+
+* Layout for pattern matching lambdas.
+
+  You can now write pattern matching lambdas using the syntax
+
+  ```agda
+  λ where false → true
+          true  → false
+  ```
+
+  avoiding the need for explicit curly braces and semicolons.
+
+* Overloaded projections
+  [Issue [#1944](https://github.com/agda/agda/issues/1944)].
+
+  Ambiguous projections are no longer a scope error.  Instead they get
+  resolved based on the type of the record value they are
+  eliminating.  This corresponds to constructors, which can be
+  overloaded and get disambiguated based on the type they are
+  introducing.  Example:
+
+  ```agda
+  module _ (A : Set) (a : A) where
+
+  record R B : Set where
+    field f : B
+  open R public
+
+  record S B : Set where
+    field f : B
+  open S public
+  ```
+
+  Exporting `f` twice from both `R` and `S` is now allowed.  Then,
+
+  ```agda
+  r : R A
+  f r = a
+
+  s : S A
+  f s = f r
+  ```
+
+  disambiguates to:
+
+  ```agda
+  r : R A
+  R.f r = a
+
+  s : S A
+  S.f s = R.f r
+  ```
+
+  If the type of the projection is known, it can also be disambiguated
+  unapplied.
+
+  ```agda
+  unapplied : R A -> A
+  unapplied = f
+  ```
+
+* Postfix projections
+  [Issue [#1963](https://github.com/agda/agda/issues/1963)].
+
+  Agda now supports a postfix syntax for projection application.
+  This style is more in harmony with copatterns.  For example:
+
+  ```agda
+  record Stream (A : Set) : Set where
+    coinductive
+    field head : A
+          tail : Stream A
+
+  open Stream
+
+  repeat : ∀{A} (a : A) → Stream A
+  repeat a .head = a
+  repeat a .tail = repeat a
+
+  zipWith : ∀{A B C} (f : A → B → C) (s : Stream A) (t : Stream B) → Stream C
+  zipWith f s t .head = f (s .head) (t .head)
+  zipWith f s t .tail = zipWith f (s .tail) (t .tail)
+
+  module Fib (Nat : Set) (zero one : Nat) (plus : Nat → Nat → Nat) where
+
+    {-# TERMINATING #-}
+    fib : Stream Nat
+    fib .head = zero
+    fib .tail .head = one
+    fib .tail .tail = zipWith plus fib (fib .tail)
+  ```
+
+  The thing we eliminate with projection now is visibly the head,
+  i.e., the left-most expression of the sequence (e.g. `repeat` in
+  `repeat a .tail`).
+
+  The syntax overlaps with dot patterns, but for type correct left
+  hand sides there is no confusion: Dot patterns eliminate function
+  types, while (postfix) projection patterns eliminate record types.
+
+  By default, Agda prints system-generated projections (such as by
+  eta-expansion or case splitting) prefix.  This can be changed with
+  the new option:
+
+  ```agda
+  {-# OPTIONS --postfix-projections #-}
+  ```
+
+  Result splitting in extended lambdas (aka pattern lambdas) always
+  produces postfix projections, as prefix projection pattern do not
+  work here: a prefix projection needs to go left of the head, but the
+  head is omitted in extended lambdas.
+
+  ```agda
+  dup : ∀{A : Set}(a : A) → A × A
+  dup = λ{ a → ? }
+  ```
+
+  Result splitting (`C-c C-c RET`) here will yield:
+
+  ```agda
+  dup = λ{ a .proj₁ → ? ; a .proj₂ → ? }
+  ```
+
+* Projection parameters
+  [Issue [#1954](https://github.com/agda/agda/issues/1954)].
+
+  When copying a module, projection parameters will now stay hidden
+  arguments, even if the module parameters are visible.
+  This matches the situation we had for constructors since long.
+  Example:
+
+  ```agda
+  module P (A : Set) where
+    record R : Set where
+      field f : A
+
+  open module Q A = P A
+  ```
+
+  Parameter `A` is now hidden in `R.f`:
+
+  ```agda
+  test : ∀{A} → R A → A
+  test r = R.f r
+  ```
+
+  Note that a module parameter that corresponds to the record value
+  argument of a projection will not be hidden.
+
+  ```agda
+  module M (A : Set) (r : R A) where
+    open R A r public
+
+  test' : ∀{A} → R A → A
+  test' r = M.f r
+  ```
+
+* Eager insertion of implicit arguments
+  [Issue [#2001](https://github.com/agda/agda/issues/2001)]
+
+  Implicit arguments are now (again) eagerly inserted in left-hand sides. The
+  previous behaviour of inserting implicits for where blocks, but not
+  right-hand sides was not type safe.
+
+* Module applications can now be eta expanded/contracted without
+  changing their behaviour
+  [Issue #[1985](https://github.com/agda/agda/issues/1985)]
+
+  Previously definitions exported using `open public` got the
+  incorrect type for underapplied module applications.
+
+  Example:
+
+  ```agda
+  module A where
+    postulate A : Set
+
+  module B (X : Set) where
+    open A public
+
+  module C₁ = B
+  module C₂ (X : Set) = B X
+  ```
+
+  Here both `C₁.A` and `C₂.A` have type `(X : Set) → Set`.
+
+* Polarity pragmas.
+
+  Polarity pragmas can be attached to postulates. The polarities express
+  how the postulate's arguments are used. The following polarities
+  are available:
+
+  `_`:  Unused.
+
+  `++`: Strictly positive.
+
+  `+`:  Positive.
+
+  `-`:  Negative.
+
+  `*`:  Unknown/mixed.
+
+  Polarity pragmas have the form
+
+  ```
+  {-# POLARITY name <zero or more polarities> #-}
+  ```
+
+  and can be given wherever fixity declarations can be given. The
+  listed polarities apply to the given postulate's arguments
+  (explicit/implicit/instance), from left to right. Polarities
+  currently cannot be given for module parameters. If the postulate
+  takes n arguments (excluding module parameters), then the number of
+  polarities given must be between 0 and n (inclusive).
+
+  Polarity pragmas make it possible to use postulated type formers in
+  recursive types in the following way:
+
+  ```agda
+  postulate
+    ∥_∥ : Set → Set
+
+  {-# POLARITY ∥_∥ ++ #-}
+
+  data D : Set where
+    c : ∥ D ∥ → D
+  ```
+
+  Note that one can use postulates that may seem benign, together with
+  polarity pragmas, to prove that the empty type is inhabited:
+
+  ```agda
+  postulate
+    _⇒_    : Set → Set → Set
+    lambda : {A B : Set} → (A → B) → A ⇒ B
+    apply  : {A B : Set} → A ⇒ B → A → B
+
+  {-# POLARITY _⇒_ ++ #-}
+
+  data ⊥ : Set where
+
+  data D : Set where
+    c : D ⇒ ⊥ → D
+
+  not-inhabited : D → ⊥
+  not-inhabited (c f) = apply f (c f)
+
+  inhabited : D
+  inhabited = c (lambda not-inhabited)
+
+  bad : ⊥
+  bad = not-inhabited inhabited
+  ```
+
+  Polarity pragmas are not allowed in safe mode.
+
+* Declarations in a `where`-block are now
+  private. [Issue [#2101](https://github.com/agda/agda/issues/2101)]
+  This means that
+
+  ```agda
+  f ps = body where
+    decls
+  ```
+
+  is now equivalent to
+
+  ```agda
+  f ps = body where
+    private
+      decls
+  ```
+
+  This changes little, since the `decls` were anyway not in scope
+  outside `body`.  However, it makes a difference for abstract
+  definitions, because private type signatures can see through
+  abstract definitions.  Consider:
+
+  ```agda
+  record Wrap (A : Set) : Set where
+    field unwrap : A
+
+  postulate
+    P : ∀{A : Set} → A → Set
+
+  abstract
+
+    unnamedWhere : (A : Set) → Set
+    unnamedWhere A = A
+      where  -- the following definitions are private!
+      B : Set
+      B = Wrap A
+
+      postulate
+        b : B
+        test : P (Wrap.unwrap b)  -- succeeds
+  ```
+
+  The `abstract` is inherited in `where`-blocks from the parent (here:
+  function `unnamedWhere`).  Thus, the definition of `B` is opaque and
+  the type equation `B = Wrap A` cannot be used to check type
+  signatures, not even of abstract definitions.  Thus, checking the
+  type  `P (Wrap.unwrap b)` would fail.  However, if `test` is
+  private, abstract definitions are translucent in its type, and
+  checking succeeds.  With the implemented change, all
+  `where`-definitions are private, in this case `B`, `b`, and `test`,
+  and the example succeeds.
+
+  Nothing changes for the named forms of `where`,
+
+  ```agda
+  module M where
+  module _ where
+  ```
+
+  For instance, this still fails:
+
+  ```agda
+  abstract
+
+    unnamedWhere : (A : Set) → Set
+    unnamedWhere A = A
+      module M where
+      B : Set
+      B = Wrap A
+
+      postulate
+        b : B
+        test : P (Wrap.unwrap b)  -- fails
+  ```
+
+* Private anonymous modules now work as expected
+  [Issue [#2199](https://github.com/agda/agda/issues/2199)]
+
+  Previously the `private` was ignored for anonymous modules causing
+  its definitions to be visible outside the module containing the
+  anonymous module.  This is no longer the case. For instance,
+
+  ```agda
+  module M where
+    private
+      module _ (A : Set) where
+        Id : Set
+        Id = A
+
+    foo : Set → Set
+    foo = Id
+
+  open M
+
+  bar : Set → Set
+  bar = Id -- Id is no longer in scope here
+  ```
+
+* Pattern synonyms are now expanded on left hand sides of DISPLAY
+  pragmas [Issue [#2132](https://github.com/agda/agda/issues/2132)].
+  Example:
+
+  ```agda
+  data D : Set where
+    C c : D
+    g : D → D
+
+  pattern C′ = C
+
+  {-# DISPLAY C′ = C′ #-}
+  {-# DISPLAY g C′ = c #-}
+  ```
+
+  This now behaves as:
+
+  ```agda
+  {-# DISPLAY C = C′ #-}
+  {-# DISPLAY g C = c #-}
+  ```
+
+  Expected error for
+
+  ```agda
+  test : C ≡ g C
+  test = refl
+  ```
+
+  is thus:
+
+  ```
+  C′ != c of type D
+  ```
+
+* The built-in floats have new semantics to fix inconsistencies
+  and to improve cross-platform portability.
+
+  - Float equality has been split into two primitives.
+    ``primFloatEquality`` is designed to establish
+    decidable propositional equality while
+    ``primFloatNumericalEquality`` is intended for numerical
+    computations. They behave as follows:
+
+    ```
+    primFloatEquality NaN NaN = True
+    primFloatEquality 0.0 -0.0 = False
+
+    primFloatNumericalEquality NaN NaN = False
+    primFloatNumericalEquality 0.0 -0.0 = True
+    ```
+
+    This change fixes an inconsistency, see [Issue [#2169](https://github.com/agda/agda/issues/2169)].
+    For further detail see the [user manual](http://agda.readthedocs.io/en/latest/language/built-ins.html#floats).
+
+  - Floats now have only one `NaN` value. This is necessary
+    for proper Float support in the JavaScript backend,
+    as JavaScript (and some other platforms) only support
+    one `NaN` value.
+
+  - The primitive function `primFloatLess` was renamed
+    `primFloatNumericalLess`.
+
+* Added new primitives to built-in floats:
+
+  - `primFloatNegate : Float → Float`
+    [Issue [#2194](https://github.com/agda/agda/issues/2194)]
+
+  - Trigonometric primitives
+    [Issue [#2200](https://github.com/agda/agda/issues/2200)]:
+
+    ```agda
+    primCos   : Float → Float
+    primTan   : Float → Float
+    primASin  : Float → Float
+    primACos  : Float → Float
+    primATan  : Float → Float
+    primATan2 : Float → Float → Float
+    ```
+
+* Anonymous declarations
+  [Issue [#1465](https://github.com/agda/agda/issues/1465)].
+
+  A module can contain an arbitrary number of declarations
+  named `_` which will scoped-checked and type-checked but
+  won't be made available in the scope (nor exported). They
+  cannot introduce arguments on the LHS (but one can use
+  lambda-abstractions on the RHS) and they cannot be defined
+  by recursion.
+
+  ```agda
+  _ : Set → Set
+  _ = λ x → x
+  ```
+
+### Rewriting
+
+* The REWRITE pragma can now handle several names.  E.g.:
+  ```agda
+  {-# REWRITE eq1 eq2 #-}
+  ```
+
+### Reflection
+
+* You can now use macros in reflected terms
+  [Issue [#2130](https://github.com/agda/agda/issues/2130)].
+
+  For instance, given a macro
+
+  ```agda
+  macro
+    some-tactic : Term → TC ⊤
+    some-tactic = ...
+  ```
+
+  the term `def (quote some-tactic) []` represents a call to the
+  macro. This makes it a lot easier to compose tactics.
+
+* The reflection machinery now uses normalisation less often:
+
+  * Macros no longer normalise the (automatically quoted) term
+    arguments.
+
+  * The TC primitives `inferType`, `checkType` and `quoteTC` no longer
+    normalise their arguments.
+
+  * The following deprecated constructions may also have been changed:
+    `quoteGoal`, `quoteTerm`, `quoteContext` and `tactic`.
+
+* New TC primitive: `withNormalisation`.
+
+  To recover the old normalising behaviour of `inferType`, `checkType`,
+  `quoteTC` and `getContext`, you can wrap them inside a call to
+  `withNormalisation true`:
+
+  ```agda
+    withNormalisation : ∀ {a} {A : Set a} → Bool → TC A → TC A
+  ```
+
+* New TC primitive: `reduce`.
+
+  ```agda
+  reduce : Term → TC Term
+  ```
+
+  Reduces its argument to weak head normal form.
+
+* Added new TC primitive: `isMacro`
+  [Issue [#2182](https://github.com/agda/agda/issues/2182)]
+
+  ```agda
+  isMacro : Name → TC Bool
+  ```
+
+  Returns `true` if the name refers to a macro, otherwise `false`.
+
+Type checking
+-------------
+
+* Files with open metas can be imported now
+  [Issue [#964](https://github.com/agda/agda/issues/964)].  This
+  should make simultaneous interactive development on several modules
+  more pleasant.
+
+  Requires option: `--allow-unsolved-metas`
+
+  Internally, before serialization, open metas are turned into postulates named
+
+  ```
+    unsolved#meta.<nnn>
+  ```
+
+  where `<nnn>` is the internal meta variable number.
+
+* The performance of the compile-time evaluator has been greatly improved.
+
+  - Fixed a memory leak in evaluator
+    (Issue [#2147](https://github.com/agda/agda/issues/2147)).
+
+  - Reduction speed improved by an order of magnitude and is now
+    comparable to the performance of GHCi. Still call-by-name though.
+
+* The detection of types that satisfy K added in Agda 2.5.1 has been
+  rolled back (see
+  Issue [#2003](https://github.com/agda/agda/issues/2003)).
+
+* Eta-equality for record types is now only on after the positivity
+  checker has confirmed it is safe to have it.  Eta-equality for
+  unguarded inductive records previously lead to looping of the type
+  checker.
+  [See Issue [#2197](https://github.com/agda/agda/issues/2197)]
+
+  ```agda
+  record R : Set where
+    inductive
+    field r : R
+
+    loops : R
+    loops = ?
+  ```
+
+  As a consequence of this change, the following example does not
+  type-check any more:
+
+  ```agda
+  mutual
+    record ⊤ : Set where
+
+    test : ∀ {x y : ⊤} → x ≡ y
+    test = refl
+  ```
+
+  It fails because the positivity checker is only run after the mutual
+  block, thus, eta-equality for `⊤` is not available when checking
+  test.
+
+  One can declare eta-equality explicitly, though, to make this
+  example work.
+
+  ```agda
+  mutual
+    record ⊤ : Set where
+      eta-equality
+
+    test : ∀ {x y : ⊤} → x ≡ y
+    test = refl
+  ```
+
+* Records with instance fields are now eta expanded before instance search.
+
+  For instance, assuming `Eq` and `Ord` with boolean functions `_==_` and `_<_`
+  respectively,
+
+  ```agda
+    record EqAndOrd (A : Set) : Set where
+      field {{eq}}  : Eq A
+            {{ord}} : Ord A
+
+
+    leq : {A : Set} {{_ : EqAndOrd A}} → A → A → Bool
+    leq x y = x == y || x < y
+  ```
+
+  Here the `EqAndOrd` record is automatically unpacked before instance search,
+  revealing the component `Eq` and `Ord` instances.
+
+  This can be used to simulate superclass dependencies.
+
+* Overlappable record instance fields.
+
+  Instance fields in records can be marked as overlappable using the new
+  `overlap` keyword:
+
+  ```agda
+    record Ord (A : Set) : Set where
+      field
+        _<_ : A → A → Bool
+        overlap {{eqA}} : Eq A
+  ```
+
+  When instance search finds multiple candidates for a given instance goal and
+  they are **all** overlappable it will pick the left-most candidate instead of
+  refusing to solve the instance goal.
+
+  This can be use to solve the problem arising from shared "superclass"
+  dependencies. For instance, if you have, in addition to `Ord` above, a `Num`
+  record that also has an `Eq` field and want to write a function requiring
+  both `Ord` and `Num`, any `Eq` constraint will be solved by the `Eq` instance
+  from whichever argument that comes first.
+
+  ```agda
+    record Num (A : Set) : Set where
+      field
+        fromNat : Nat → A
+        overlap {{eqA}} : Eq A
+
+    lessOrEqualFive : {A : Set} {{NumA : Num A}} {{OrdA : Ord A}} → A → Bool
+    lessOrEqualFive x = x == fromNat 5 || x < fromNat 5
+  ```
+
+  In this example the call to `_==_` will use the `eqA` field from `NumA`
+  rather than the one from `OrdA`. Note that these may well be different.
+
+* Instance fields can be left out of copattern matches
+  [Issue [#2288](https://github.com/agda/agda/issues/2288)]
+
+  Missing cases for instance fields (marked `{{` `}}`) in copattern matches
+  will be solved using instance search. This makes defining instances with
+  superclass fields much nicer. For instance, we can define `Nat` instances of
+  `Eq`, `Ord` and `Num` from above as follows:
+
+  ```agda
+    instance
+      EqNat : Eq Nat
+      _==_ {{EqNat}} n m = eqNat n m
+
+      OrdNat : Ord Nat
+      _<_ {{OrdNat}} n m = lessNat n m
+
+      NumNat : Num Nat
+      fromNat {{NumNat}} n = n
+  ```
+
+  The `eqA` fields of `Ord` and `Num` are filled in using instance search (with
+  `EqNat` in this case).
+
+* Limited instance search depth
+  [Issue [#2269](https://github.com/agda/agda/issues/2269)]
+
+  To prevent instance search from looping on bad instances
+  (see [Issue #1743](https://github.com/agda/agda/issues/1743)) the search
+  depth of instance search is now limited. The maximum depth can be set with
+  the `--instance-search-depth` flag and the default value is `500`.
+
+Emacs mode
+----------
+
+* New command `C-u C-u C-c C-n`: Use `show` to display the result of
+  normalisation.
+
+  Calling `C-u C-u C-c C-n` on an expression `e` (in a hole or at top level)
+  normalises `show e` and prints the resulting string, or an error message if
+  the expression does not normalise to a literal string.
+
+  This is useful when working with complex data structures for which you have
+  defined a nice `Show` instance.
+
+  Note that the name `show` is hardwired into the command.
+
+* Changed feature: Interactively split result.
+
+  Make-case (`C-c C-c`) with no variables will now *either* introduce
+  function arguments *or* do a copattern split (or fail).
+
+  This is as before:
+
+  ```agda
+  test : {A B : Set} (a : A) (b : B) → A × B
+  test a b = ?
+
+  -- expected:
+  -- proj₁ (test a b) = {!!}
+  -- proj₂ (test a b) = {!!}
+
+  testFun : {A B : Set} (a : A) (b : B) → A × B
+  testFun = ?
+
+  -- expected:
+  -- testFun a b = {!!}
+  ```
+
+  This is has changed:
+
+  ```agda
+  record FunRec A : Set where
+    field funField : A → A
+  open FunRec
+
+  testFunRec : ∀{A} → FunRec A
+  testFunRec = ?
+
+  -- expected (since 2016-05-03):
+  -- funField testFunRec = {!!}
+
+  -- used to be:
+  -- funField testFunRec x = {!!}
+  ```
+
+* Changed feature: Split on hidden variables.
+
+  Make-case (`C-c C-c`) will no longer split on the given hidden
+  variables, but only make them visible. (Splitting can then be
+  performed in a second go.)
+
+  ```agda
+  test : ∀{N M : Nat} → Nat → Nat → Nat
+  test N M = {!.N N .M!}
+  ```
+
+  Invoking splitting will result in:
+
+  ```agda
+  test {N} {M} zero M₁ = ?
+  test {N} {M} (suc N₁) M₁ = ?
+  ```
+
+  The hidden `.N` and `.M` have been brought into scope, the
+  visible `N` has been split upon.
+
+* Non-fatal errors/warnings.
+
+  Non-fatal errors and warnings are now displayed in the info buffer
+  and do not interrupt the typechecking of the file.
+
+  Currently termination errors, unsolved metavariables, unsolved
+  constraints, positivity errors, deprecated BUILTINs, and empty
+  REWRITING pragmas are non-fatal errors.
+
+* Highlighting for positivity check failures
+
+  Negative occurences of a datatype in its definition are now
+  highlighted in a way similar to termination errors.
+
+* The abbrev for codata was replaced by an abbrev for code
+  environments.
+
+  If you type `c C-x '` (on a suitably standard setup), then Emacs
+  will insert the following text:
+
+  ```agda
+  \begin{code}<newline>  <cursor><newline>\end{code}<newline>.
+  ```
+
+* The LaTeX backend can now be invoked from the Emacs mode.
+
+  Using the compilation command (`C-c C-x C-c`).
+
+  The flag `--latex-dir` can be used to set the output directory (by
+  default: `latex`). Note that if this directory is a relative path,
+  then it is interpreted relative to the "project root". (When the
+  LaTeX backend is invoked from the command line the path is
+  interpreted relative to the current working directory.) Example: If
+  the module `A.B.C` is located in the file `/foo/A/B/C.agda`, then
+  the project root is `/foo/`, and the default output directory is
+  `/foo/latex/`.
+
+* The compilation command (`C-c C-x C-c`) now by default asks for a
+  backend.
+
+  To avoid this question, set the customisation variable
+  `agda2-backend` to an appropriate value.
+
+* The command `agda2-measure-load-time` no longer "touches" the file,
+  and the optional argument `DONT-TOUCH` has been removed.
+
+* New command `C-u (C-u) C-c C-s`: Simplify or normalise the solution `C-c C-s` produces
+
+  When writing examples, it is nice to have the hole filled in with
+  a normalised version of the solution. Calling `C-c C-s` on
+
+  ```agda
+  _ : reverse (0 ∷ 1 ∷ []) ≡ ?
+  _ = refl
+  ```
+
+  used to yield the non informative `reverse (0 ∷ 1 ∷ [])` when we would
+  have hopped to get `1 ∷ 0 ∷ []` instead. We can now control finely the
+  degree to which the solution is simplified.
+
+* Changed feature: Solving the hole at point
+
+  Calling `C-c C-s` inside a specific goal does not solve *all* the goals
+  already instantiated internally anymore: it only solves the one at hand
+  (if possible).
+
+* New bindings: All the blackboard bold letters are now available
+  [Pull Request [#2305](https://github.com/agda/agda/pull/2305)]
+
+  The Agda input method only bound a handful of the blackboard bold letters
+  but programmers were actually using more than these. They are now all
+  available: lowercase and uppercase. Some previous bindings had to be
+  modified for consistency. The naming scheme is as follows:
+
+  * \bx for lowercase blackboard bold
+  * \bX for uppercase blackboard bold
+  * \bGx for lowercase greek blackboard bold (similar to \Gx for greeks)
+  * \bGX for uppercase greek blackboard bold (similar to \GX for uppercase greeks)
+
+* Replaced binding for go back
+
+  Use `M-,` (instead of `M-*`) for go back in Emacs ≥ 25.1 (and
+  continue using `M-*` with previous versions of Emacs).
+
+Compiler backends
+-----------------
+
+* JS compiler backend
+
+  The JavaScript backend has been (partially) rewritten. The
+  JavaScript backend now supports most Agda features, notably
+  copatterns can now be compiled to JavaScript. Furthermore, the
+  existing optimizations from the other backends now apply to the
+  JavaScript backend as well.
+
+* GHC, JS and UHC compiler backends
+
+  Added new primitives to built-in floats
+  [Issues [#2194](https://github.com/agda/agda/issues/2194) and
+  [#2200](https://github.com/agda/agda/issues/2200)]:
+
+  ```agda
+  primFloatNegate : Float → Float
+  primCos         : Float → Float
+  primTan         : Float → Float
+  primASin        : Float → Float
+  primACos        : Float → Float
+  primATan        : Float → Float
+  primATan2       : Float → Float → Float
+  ```
+
+LaTeX backend
+-------------
+
+* Code blocks are now (by default) surrounded by vertical space.
+  [Issue [#2198](https://github.com/agda/agda/issues/2198)]
+
+  Use `\AgdaNoSpaceAroundCode{}` to avoid this vertical space, and
+  `\AgdaSpaceAroundCode{}` to reenable it.
+
+  Note that, if `\AgdaNoSpaceAroundCode{}` is used, then empty lines
+  before or after a code block will not necessarily lead to empty
+  lines in the generated document. However, empty lines *inside* the
+  code block do (by default) lead to empty lines in the output.
+
+  If you prefer the previous behaviour, then you can use the `agda.sty`
+  file that came with the previous version of Agda.
+
+* `\AgdaHide{...}` now eats trailing spaces (using `\ignorespaces`).
+
+* New environments: `AgdaAlign`, `AgdaSuppressSpace` and
+  `AgdaMultiCode`.
+
+  Sometimes one might want to break up a code block into multiple
+  pieces, but keep code in different blocks aligned with respect to
+  each other. Then one can use the `AgdaAlign` environment. Example
+  usage:
+  ```latex
+    \begin{AgdaAlign}
+    \begin{code}
+      code
+        code  (more code)
+    \end{code}
+    Explanation...
+    \begin{code}
+      aligned with "code"
+        code  (aligned with (more code))
+    \end{code}
+    \end{AgdaAlign}
+  ```
+  Note that `AgdaAlign` environments should not be nested.
+
+  Sometimes one might also want to hide code in the middle of a code
+  block. This can be accomplished in the following way:
+  ```latex
+    \begin{AgdaAlign}
+    \begin{code}
+      visible
+    \end{code}
+    \AgdaHide{
+    \begin{code}
+      hidden
+    \end{code}}
+    \begin{code}
+      visible
+    \end{code}
+    \end{AgdaAlign}
+  ```
+  However, the result may be ugly: extra space is perhaps inserted
+  around the code blocks.
+
+  The `AgdaSuppressSpace` environment ensures that extra space is only
+  inserted before the first code block, and after the last one (but
+  not if `\AgdaNoSpaceAroundCode{}` is used).
+
+  The environment takes one argument, the number of wrapped code
+  blocks (excluding hidden ones). Example usage:
+  ```latex
+    \begin{AgdaAlign}
+    \begin{code}
+      code
+        more code
+    \end{code}
+    Explanation...
+    \begin{AgdaSuppressSpace}{2}
+    \begin{code}
+      aligned with "code"
+        aligned with "more code"
+    \end{code}
+    \AgdaHide{
+    \begin{code}
+      hidden code
+    \end{code}}
+    \begin{code}
+        also aligned with "more code"
+    \end{code}
+    \end{AgdaSuppressSpace}
+    \end{AgdaAlign}
+  ```
+
+  Note that `AgdaSuppressSpace` environments should not be nested.
+
+  There is also a combined environment, `AgdaMultiCode`, that combines
+  the effects of `AgdaAlign` and `AgdaSuppressSpace`.
+
+Tools
+-----
+
+### agda-ghc-names
+
+The `agda-ghc-names` now has its own repository at
+
+  https://github.com/agda/agda-ghc-names
+
+and is no longer distributed with Agda.
+
+Release notes for Agda version 2.5.1.2
+======================================
+
+* Fixed broken type signatures that were incorrectly accepted due to
+  [GHC #12784](https://ghc.haskell.org/trac/ghc/ticket/12784).
+
+Release notes for Agda version 2.5.1.1
+======================================
+
+Installation and infrastructure
+-------------------------------
+
+* Added support for GHC 8.0.1.
+
+* Documentation is now built with Python >=3.3, as done by
+  [readthedocs.org](https://readthedocs.org/).
+
+Bug fixes
+---------
+
+* Fixed a serious performance problem with instance search
+
+  Issues [#1952](https://github.com/agda/agda/issues/1952) and
+  [#1998](https://github.com/agda/agda/issues/1998). Also related:
+  [#1955](https://github.com/agda/agda/issues/1955) and
+  [#2025](https://github.com/agda/agda/issues/2025)
+
+* Interactively splitting variable with `C-c C-c` no longer introduces
+  new trailing patterns.  This fixes
+  Issue [#1950](https://github.com/agda/agda/issues/1950).
+
+  ```agda
+  data Ty : Set where
+    _⇒_ : Ty → Ty → Ty
+
+  ⟦_⟧ : Ty → Set
+  ⟦ A ⇒ B ⟧ = ⟦ A ⟧ → ⟦ B ⟧
+
+  data Term : Ty → Set where
+    K : (A B : Ty) → Term (A ⇒ (B ⇒ A))
+
+  test : (A : Ty) (a : Term A) → ⟦ A ⟧
+  test A a = {!a!}
+  ```
+
+  Before change, case splitting on `a` would give
+
+  ```agda
+  test .(A ⇒ (B ⇒ A)) (K A B) x x₁ = ?
+  ```
+
+  Now, it yields
+
+  ```agda
+  test .(A ⇒ (B ⇒ A)) (K A B) = ?
+  ```
+
+* In literate TeX files, `\begin{code}` and `\end{code}` can be
+  preceded (resp. followed) by TeX code on the same line. This fixes
+  Issue [#2077](https://github.com/agda/agda/issues/2077).
+
+* Other issues fixed (see
+  [bug tracker](https://github.com/agda/agda/issues)):
+
+  [#1951](https://github.com/agda/agda/issues/1951) (mixfix binders
+  not working in 'syntax')
+
+  [#1967](https://github.com/agda/agda/issues/1967) (too eager
+  insteance search error)
+
+  [#1974](https://github.com/agda/agda/issues/1974) (lost constraint
+  dependencies)
+
+  [#1982](https://github.com/agda/agda/issues/1982) (internal error in
+  unifier)
+
+  [#2034](https://github.com/agda/agda/issues/2034) (function type
+  instance goals)
+
+Compiler backends
+-----------------
+
+* UHC compiler backend
+
+  Added support for UHC 1.1.9.4.
+
+Release notes for Agda version 2.5.1
+====================================
+
+Documentation
+-------------
+
+* There is now an official Agda User Manual:
+  http://agda.readthedocs.org/en/stable/
+
+Installation and infrastructure
+-------------------------------
+
+* Builtins and primitives are now defined in a new set of modules available to
+  all users, independent of any particular library. The modules are
+
+  ```agda
+  Agda.Builtin.Bool
+  Agda.Builtin.Char
+  Agda.Builtin.Coinduction
+  Agda.Builtin.Equality
+  Agda.Builtin.Float
+  Agda.Builtin.FromNat
+  Agda.Builtin.FromNeg
+  Agda.Builtin.FromString
+  Agda.Builtin.IO
+  Agda.Builtin.Int
+  Agda.Builtin.List
+  Agda.Builtin.Nat
+  Agda.Builtin.Reflection
+  Agda.Builtin.Size
+  Agda.Builtin.Strict
+  Agda.Builtin.String
+  Agda.Builtin.TrustMe
+  Agda.Builtin.Unit
+  ```
+
+  The standard library reexports the primitives from the new modules.
+
+  The `Agda.Builtin` modules are installed in the same way as
+  `Agda.Primitive`, but unlike `Agda.Primitive` they are not loaded
+  automatically.
+
+Pragmas and options
+-------------------
+
+* Library management
+
+  There is a new 'library' concept for managing include paths. A library
+  consists of
+    - a name,
+    - a set of libraries it depends on, and
+    - a set of include paths.
+
+  A library is defined in a `.agda-lib` file using the following
+  format:
+
+  ```
+  name: LIBRARY-NAME  -- Comment
+  depend: LIB1 LIB2
+    LIB3
+    LIB4
+  include: PATH1
+    PATH2
+    PATH3
+  ```
+
+  Dependencies are library names, not paths to `.agda-lib` files, and
+  include paths are relative to the location of the library-file.
+
+  To be useable, a library file has to be listed (with its full path)
+  in `AGDA_DIR/libraries` (or `AGDA_DIR/libraries-VERSION`, for a
+  given Agda version). `AGDA_DIR` defaults to `~/.agda` on Unix-like
+  systems and `C:/Users/USERNAME/AppData/Roaming/agda` or similar on
+  Windows, and can be overridden by setting the `AGDA_DIR` environment
+  variable.
+
+  Environment variables in the paths (of the form `$VAR` or `${VAR}`)
+  are expanded. The location of the libraries file used can be
+  overridden using the `--library-file=FILE` flag, although this is
+  not expected to be very useful.
+
+  You can find out the precise location of the 'libraries' file by
+  calling `agda -l fjdsk Dummy.agda` and looking at the error message
+  (assuming you don't have a library called fjdsk installed).
+
+  There are three ways a library gets used:
+
+    - You supply the `--library=LIB` (or `-l LIB`) option to
+      Agda. This is equivalent to adding a `-iPATH` for each of the
+      include paths of `LIB` and its (transitive) dependencies.
+
+    - No explicit `--library` flag is given, and the current project
+      root (of the Agda file that is being loaded) or one of its
+      parent directories contains a `.agda-lib` file defining a
+      library `LIB`. This library is used as if a `--librarary=LIB`
+      option had been given, except that it is not necessary for the
+      library to be listed in the `AGDA_DIR/libraries` file.
+
+    - No explicit `--library` flag, and no `.agda-lib` file in the
+      project root. In this case the file `AGDA_DIR/defaults` is read
+      and all libraries listed are added to the path. The defaults
+      file should contain a list of library names, each on a separate
+      line. In this case the current directory is also added to the
+      path.
+
+      To disable default libraries, you can give the flag
+      `--no-default-libraries`.
+
+  Library names can end with a version number (for instance,
+  `mylib-1.2.3`). When resolving a library name (given in a `--library`
+  flag, or listed as a default library or library dependency) the
+  following rules are followed:
+
+    - If you don't give a version number, any version will do.
+
+    - If you give a version number an exact match is required.
+
+    - When there are multiple matches an exact match is preferred, and
+      otherwise the latest matching version is chosen.
+
+  For example, suppose you have the following libraries installed:
+  `mylib`, `mylib-1.0`, `otherlib-2.1`, and `otherlib-2.3`. In this
+  case, aside from the exact matches you can also say
+  `--library=otherlib` to get `otherlib-2.3`.
+
+* New Pragma `COMPILED_DECLARE_DATA` for binding recursively defined
+  Haskell data types to recursively defined Agda data types.
+
+  If you have a Haskell type like
+
+  ```haskell
+  {-# LANGUAGE GADTs #-}
+
+  module Issue223 where
+
+  data A where
+    BA :: B -> A
+
+  data B where
+    AB :: A -> B
+    BB :: B
+  ```
+
+  You can now bind it to corresponding mutual Agda inductive data
+  types as follows:
+
+  ```agda
+  {-# IMPORT Issue223 #-}
+
+  data A : Set
+  {-# COMPILED_DECLARE_DATA A Issue223.A #-}
+  data B : Set
+  {-# COMPILED_DECLARE_DATA B Issue223.B #-}
+
+  data A where
+    BA : B → A
+
+  {-# COMPILED_DATA A Issue223.A Issue223.BA #-}
+  data B where
+    AB : A → B
+    BB : B
+
+  {-# COMPILED_DATA B Issue223.B Issue223.AB Issue223.BB #-}
+  ```
+
+  This fixes Issue [#223](https://github.com/agda/agda/issues/223).
+
+* New pragma `HASKELL` for adding inline Haskell code (GHC backend only)
+
+  Arbitrary Haskell code can be added to a module using the `HASKELL`
+  pragma. For instance,
+
+  ```agda
+  {-# HASKELL
+    echo :: IO ()
+    echo = getLine >>= putStrLn
+  #-}
+
+  postulate echo : IO ⊤
+  {-# COMPILED echo echo #-}
+  ```
+
+* New option `--exact-split`.
+
+  The `--exact-split` flag causes Agda to raise an error whenever a
+  clause in a definition by pattern matching cannot be made to hold
+  definitionally (i.e. as a reduction rule). Specific clauses can be
+  excluded from this check by means of the `{-# CATCHALL #-}` pragma.
+
+  For instance, the following definition will be rejected as the second clause
+  cannot be made to hold definitionally:
+
+  ```agda
+  min : Nat → Nat → Nat
+  min zero    y       = zero
+  min x       zero    = zero
+  min (suc x) (suc y) = suc (min x y
+  ```
+
+  Catchall clauses have to be marked as such, for instance:
+
+  ```agda
+  eq : Nat → Nat → Bool
+  eq zero    zero    = true
+  eq (suc m) (suc n) = eq m n
+  {-# CATCHALL #-}
+  eq _       _       = false
+  ```
+
+* New option: `--no-exact-split`.
+
+  This option can be used to override a global `--exact-split` in a
+  file, by adding a pragma `{-# OPTIONS --no-exact-split #-}`.
+
+* New options: `--sharing` and `--no-sharing`.
+
+  These options are used to enable/disable sharing and call-by-need
+  evaluation.  The default is `--no-sharing`.
+
+  Note that they cannot appear in an OPTIONS pragma, but have to be
+  given as command line arguments or added to the Agda Program Args
+  from Emacs with `M-x customize-group agda2`.
+
+* New pragma `DISPLAY`.
+
+  ```agda
+  {-# DISPLAY f e1 .. en = e #-}
+  ```
+
+  This causes `f e1 .. en` to be printed in the same way as `e`, where
+  `ei` can bind variables used in `e`. The expressions `ei` and `e`
+  are scope checked, but not type checked.
+
+  For example this can be used to print overloaded (instance) functions with
+  the overloaded name:
+
+  ```agda
+  instance
+    NumNat : Num Nat
+    NumNat = record { ..; _+_ = natPlus }
+
+  {-# DISPLAY natPlus a b = a + b #-}
+  ```
+
+  Limitations
+
+  - Left-hand sides are restricted to variables, constructors, defined
+    functions or types, and literals. In particular, lambdas are not
+    allowed in left-hand sides.
+
+  - Since `DISPLAY` pragmas are not type checked implicit argument
+    insertion may not work properly if the type of `f` computes to an
+    implicit function space after pattern matching.
+
+* Removed pragma `{-# ETA R #-}`
+
+  The pragma `{-# ETA R #-}` is replaced by the `eta-equality` directive
+  inside record declarations.
+
+* New option `--no-eta-equality`.
+
+  The `--no-eta-equality` flag disables eta rules for declared record
+  types.  It has the same effect as `no-eta-equality` inside each
+  declaration of a record type `R`.
+
+  If used with the OPTIONS pragma it will not affect records defined
+  in other modules.
+
+* The semantics of `{-# REWRITE r #-}` pragmas in parametrized modules
+  has changed (see
+  Issue [#1652](https://github.com/agda/agda/issues/1652)).
+
+  Rewrite rules are no longer lifted to the top context. Instead, they
+  now only apply to terms in (extensions of) the module context. If
+  you want the old behaviour, you should put the `{-# REWRITE r #-}`
+  pragma outside of the module (i.e. unindent it).
+
+* New pragma `{-# INLINE f #-}` causes `f` to be inlined during
+  compilation.
+
+* The `STATIC` pragma is now taken into account during compilation.
+
+  Calls to a function marked `STATIC` are normalised before
+  compilation. The typical use case for this is to mark the
+  interpreter of an embedded language as `STATIC`.
+
+* Option `--type-in-type` no longer implies
+  `--no-universe-polymorphism`, thus, it can be used with explicit
+  universe
+  levels. [Issue [#1764](https://github.com/agda/agda/issues/1764)] It
+  simply turns off error reporting for any level mismatch now.
+  Examples:
+
+  ```agda
+  {-# OPTIONS --type-in-type #-}
+
+  Type : Set
+  Type = Set
+
+  data D {α} (A : Set α) : Set where
+    d : A → D A
+
+  data E α β : Set β where
+    e : Set α → E α β
+  ```
+
+* New `NO_POSITIVITY_CHECK` pragma to switch off the positivity checker
+  for data/record definitions and mutual blocks.
+
+  The pragma must precede a data/record definition or a mutual block.
+
+  The pragma cannot be used in `--safe` mode.
+
+  Examples (see `Issue1614*.agda` and `Issue1760*.agda` in
+  `test/Succeed/`):
+
+  1. Skipping a single data definition.
+
+     ```agda
+     {-# NO_POSITIVITY_CHECK #-}
+     data D : Set where
+       lam : (D → D) → D
+     ```
+
+  2. Skipping a single record definition.
+
+     ```agda
+     {-# NO_POSITIVITY_CHECK #-}
+     record U : Set where
+       field ap : U → U
+     ```
+
+  3. Skipping an old-style mutual block: Somewhere within a `mutual`
+     block before a data/record definition.
+
+     ```agda
+     mutual
+       data D : Set where
+         lam : (D → D) → D
+
+       {-# NO_POSITIVITY_CHECK #-}
+       record U : Set where
+         field ap : U → U
+     ```
+
+  4. Skipping an old-style mutual block: Before the `mutual` keyword.
+
+     ```agda
+     {-# NO_POSITIVITY_CHECK #-}
+     mutual
+       data D : Set where
+         lam : (D → D) → D
+
+       record U : Set where
+         field ap : U → U
+     ```
+
+  5. Skipping a new-style mutual block: Anywhere before the
+     declaration or the definition of data/record in the block.
+
+     ```agda
+     record U : Set
+     data D   : Set
+
+     record U where
+       field ap : U → U
+
+     {-# NO_POSITIVITY_CHECK #-}
+     data D where
+       lam : (D → D) → D
+     ```
+
+* Removed `--no-coverage-check`
+  option. [Issue [#1918](https://github.com/agda/agda/issues/1918)]
+
+Language
+--------
+
+### Operator syntax
+
+* The default fixity for syntax declarations has changed from -666 to 20.
+
+* Sections.
+
+  Operators can be sectioned by replacing arguments with underscores.
+  There must not be any whitespace between these underscores and the
+  adjacent nameparts. Examples:
+
+  ```agda
+  pred : ℕ → ℕ
+  pred = _∸ 1
+
+  T : Bool → Set
+  T = if_then ⊤ else ⊥
+
+  if : {A : Set} (b : Bool) → A → A → A
+  if b = if b then_else_
+  ```
+
+  Sections are translated into lambda expressions. Examples:
+
+  ```agda
+  _∸ 1              ↦  λ section → section ∸ 1
+
+  if_then ⊤ else ⊥  ↦  λ section → if section then ⊤ else ⊥
+
+  if b then_else_   ↦  λ section section₁ →
+                           if b then section else section₁
+  ```
+
+  Operator sections have the same fixity as the underlying operator
+  (except in cases like `if b then_else_`, in which the section is
+  "closed", but the operator is not).
+
+  Operator sections are not supported in patterns (with the exception
+  of dot patterns), and notations coming from syntax declarations
+  cannot be sectioned.
+
+* A long-standing operator fixity bug has been fixed. As a consequence
+  some programs that used to parse no longer do.
+
+  Previously each precedence level was (incorrectly) split up into
+  five separate ones, ordered as follows, with the earlier ones
+  binding less tightly than the later ones:
+
+    - Non-associative operators.
+
+    - Left associative operators.
+
+    - Right associative operators.
+
+    - Prefix operators.
+
+    - Postfix operators.
+
+  Now this problem has been addressed. It is no longer possible to mix
+  operators of a given precedence level but different associativity.
+  However, prefix and right associative operators are seen as having
+  the same associativity, and similarly for postfix and left
+  associative operators.
+
+  Examples
+  --------
+
+  The following code is no longer accepted:
+
+  ```agda
+  infixl 6 _+_
+  infix  6 _∸_
+
+  rejected : ℕ
+  rejected = 1 + 0 ∸ 1
+  ```
+
+  However, the following previously rejected code is accepted:
+
+  ```agda
+  infixr 4 _,_
+  infix  4 ,_
+
+  ,_ : {A : Set} {B : A → Set} {x : A} → B x → Σ A B
+  , y = _ , y
+
+  accepted : Σ ℕ λ i → Σ ℕ λ j → Σ (i ≡ j) λ _ → Σ ℕ λ k → j ≡ k
+  accepted = 5 , , refl , , refl
+  ```
+
+* The classification of notations with binders into the categories
+  infix, prefix, postfix or closed has
+  changed. [Issue [#1450](https://github.com/agda/agda/issues/1450)]
+
+  The difference is that, when classifying the notation, only
+  *regular* holes are taken into account, not *binding* ones.
+
+  Example: The notation
+
+  ```agda
+  syntax m >>= (λ x → f) = x <- m , f
+  ```
+
+  was previously treated as infix, but is now treated as prefix.
+
+* Notation can now include wildcard binders.
+
+  Example: `syntax Σ A (λ _ → B) = A × B`
+
+* If an overloaded operator is in scope with several distinct
+  precedence levels, then several instances of this operator will be
+  included in the operator grammar, possibly leading to ambiguity.
+  Previously the operator was given the default fixity
+  [Issue [#1436](https://github.com/agda/agda/issues/1436)].
+
+  There is an exception to this rule: If there are multiple precedences,
+  but at most one is explicitly declared, then only one instance will be
+  included in the grammar. If there are no explicitly declared
+  precedences, then this instance will get the default precedence, and
+  otherwise it will get the declared precedence.
+
+  If multiple occurrences of an operator are "merged" in the grammar,
+  and they have distinct associativities, then they are treated as
+  being non-associative.
+
+  The three paragraphs above also apply to identical notations (coming
+  from syntax declarations) for a given overloaded name.
+
+  Examples:
+
+  ```agda
+  module A where
+
+    infixr 5 _∷_
+    infixr 5 _∙_
+    infixl 3 _+_
+    infix  1 bind
+
+    syntax bind c (λ x → d) = x ← c , d
+
+  module B where
+
+    infix  5 _∷_
+    infixr 4 _∙_
+    -- No fixity declaration for _+_.
+    infixl 2 bind
+
+    syntax bind c d = c ∙ d
+
+  module C where
+
+    infixr 2 bind
+
+    syntax bind c d = c ∙ d
+
+  open A
+  open B
+  open C
+
+  -- _∷_ is infix 5.
+  -- _∙_ has two fixities: infixr 4 and infixr 5.
+  -- _+_ is infixl 3.
+  -- A.bind's notation is infix 1.
+  -- B.bind and C.bind's notations are infix 2.
+
+  -- There is one instance of "_ ∷ _" in the grammar, and one
+  -- instance of "_ + _".
+
+  -- There are three instances of "_ ∙ _" in the grammar, one
+  -- corresponding to A._∙_, one corresponding to B._∙_, and one
+  -- corresponding to both B.bind and C.bind.
+  ```
+
+### Reflection
+
+* The reflection framework has received a massive overhaul.
+
+  A new type of reflected type checking computations supplants most of
+  the old reflection primitives. The `quoteGoal`, `quoteContext` and
+  tactic primitives are deprecated and will be removed in the future,
+  and the `unquoteDecl` and `unquote` primitives have changed
+  behaviour. Furthermore the following primitive functions have been
+  replaced by builtin type checking computations:
+
+  ```agda
+  - primQNameType              --> AGDATCMGETTYPE
+  - primQNameDefinition        --> AGDATCMGETDEFINITION
+  - primDataConstructors       --> subsumed by AGDATCMGETDEFINITION
+  - primDataNumberOfParameters --> subsumed by AGDATCMGETDEFINITION
+  ```
+
+  See below for details.
+
+* Types are no longer packaged with a sort.
+
+  The `AGDATYPE` and `AGDATYPEEL` built-ins have been
+  removed. Reflected types are now simply terms.
+
+* Reflected definitions have more information.
+
+  The type for reflected definitions has changed to
+
+  ```agda
+  data Definition : Set where
+    fun-def     : List Clause  → Definition
+    data-type   : Nat → List Name → Definition -- parameters and constructors
+    record-type : Name → Definition            -- name of the data/record type
+    data-con    : Name → Definition            -- name of the constructor
+    axiom       : Definition
+    prim-fun    : Definition
+  ```
+
+  Correspondingly the built-ins for function, data and record
+  definitions (`AGDAFUNDEF`, `AGDAFUNDEFCON`, `AGDADATADEF`,
+  `AGDARECORDDEF`) have been removed.
+
+* Reflected type checking computations.
+
+  There is a primitive `TC` monad representing type checking
+  computations. The `unquote`, `unquoteDecl`, and the new `unquoteDef`
+  all expect computations in this monad (see below). The interface to
+  the monad is the following
+
+  ```agda
+  -- Error messages can contain embedded names and terms.
+  data ErrorPart : Set where
+    strErr  : String → ErrorPart
+    termErr : Term → ErrorPart
+    nameErr : Name → ErrorPart
+
+  {-# BUILTIN AGDAERRORPART       ErrorPart #-}
+  {-# BUILTIN AGDAERRORPARTSTRING strErr    #-}
+  {-# BUILTIN AGDAERRORPARTTERM   termErr   #-}
+  {-# BUILTIN AGDAERRORPARTNAME   nameErr   #-}
+
+  postulate
+    TC         : ∀ {a} → Set a → Set a
+    returnTC   : ∀ {a} {A : Set a} → A → TC A
+    bindTC     : ∀ {a b} {A : Set a} {B : Set b} → TC A → (A → TC B) → TC B
+
+    -- Unify two terms, potentially solving metavariables in the process.
+    unify      : Term → Term → TC ⊤
+
+    -- Throw a type error. Can be caught by catchTC.
+    typeError  : ∀ {a} {A : Set a} → List ErrorPart → TC A
+
+    -- Block a type checking computation on a metavariable. This will abort
+    -- the computation and restart it (from the beginning) when the
+    -- metavariable is solved.
+    blockOnMeta : ∀ {a} {A : Set a} → Meta → TC A
+
+    -- Backtrack and try the second argument if the first argument throws a
+    -- type error.
+    catchTC    : ∀ {a} {A : Set a} → TC A → TC A → TC A
+
+    -- Infer the type of a given term
+    inferType  : Term → TC Type
+
+    -- Check a term against a given type. This may resolve implicit arguments
+    -- in the term, so a new refined term is returned. Can be used to create
+    -- new metavariables: newMeta t = checkType unknown t
+    checkType  : Term → Type → TC Term
+
+    -- Compute the normal form of a term.
+    normalise  : Term → TC Term
+
+    -- Get the current context.
+    getContext : TC (List (Arg Type))
+
+    -- Extend the current context with a variable of the given type.
+    extendContext : ∀ {a} {A : Set a} → Arg Type → TC A → TC A
+
+    -- Set the current context.
+    inContext     : ∀ {a} {A : Set a} → List (Arg Type) → TC A → TC A
+
+    -- Quote a value, returning the corresponding Term.
+    quoteTC : ∀ {a} {A : Set a} → A → TC Term
+
+    -- Unquote a Term, returning the corresponding value.
+    unquoteTC : ∀ {a} {A : Set a} → Term → TC A
+
+    -- Create a fresh name.
+    freshName  : String → TC QName
+
+    -- Declare a new function of the given type. The function must be defined
+    -- later using 'defineFun'. Takes an Arg Name to allow declaring instances
+    -- and irrelevant functions. The Visibility of the Arg must not be hidden.
+    declareDef : Arg QName → Type → TC ⊤
+
+    -- Define a declared function. The function may have been declared using
+    -- 'declareDef' or with an explicit type signature in the program.
+    defineFun  : QName → List Clause → TC ⊤
+
+    -- Get the type of a defined name. Replaces 'primQNameType'.
+    getType    : QName → TC Type
+
+    -- Get the definition of a defined name. Replaces 'primQNameDefinition'.
+    getDefinition : QName → TC Definition
+
+  {-# BUILTIN AGDATCM                   TC                 #-}
+  {-# BUILTIN AGDATCMRETURN             returnTC           #-}
+  {-# BUILTIN AGDATCMBIND               bindTC             #-}
+  {-# BUILTIN AGDATCMUNIFY              unify              #-}
+  {-# BUILTIN AGDATCMNEWMETA            newMeta            #-}
+  {-# BUILTIN AGDATCMTYPEERROR          typeError          #-}
+  {-# BUILTIN AGDATCMBLOCKONMETA        blockOnMeta        #-}
+  {-# BUILTIN AGDATCMCATCHERROR         catchTC            #-}
+  {-# BUILTIN AGDATCMINFERTYPE          inferType          #-}
+  {-# BUILTIN AGDATCMCHECKTYPE          checkType          #-}
+  {-# BUILTIN AGDATCMNORMALISE          normalise          #-}
+  {-# BUILTIN AGDATCMGETCONTEXT         getContext         #-}
+  {-# BUILTIN AGDATCMEXTENDCONTEXT      extendContext      #-}
+  {-# BUILTIN AGDATCMINCONTEXT          inContext          #-}
+  {-# BUILTIN AGDATCMQUOTETERM          quoteTC            #-}
+  {-# BUILTIN AGDATCMUNQUOTETERM        unquoteTC          #-}
+  {-# BUILTIN AGDATCMFRESHNAME          freshName          #-}
+  {-# BUILTIN AGDATCMDECLAREDEF         declareDef         #-}
+  {-# BUILTIN AGDATCMDEFINEFUN          defineFun          #-}
+  {-# BUILTIN AGDATCMGETTYPE            getType            #-}
+  {-# BUILTIN AGDATCMGETDEFINITION      getDefinition      #-}
+  ```
+
+* Builtin type for metavariables
+
+  There is a new builtin type for metavariables used by the new reflection
+  framework. It is declared as follows and comes with primitive equality,
+  ordering and show.
+
+  ```agda
+  postulate Meta : Set
+  {-# BUILTIN AGDAMETA Meta #-}
+  primitive primMetaEquality : Meta → Meta → Bool
+  primitive primMetaLess : Meta → Meta → Bool
+  primitive primShowMeta : Meta → String
+  ```
+
+  There are corresponding new constructors in the `Term` and `Literal`
+  data types:
+
+  ```agda
+  data Term : Set where
+    ...
+    meta : Meta → List (Arg Term) → Term
+
+  {-# BUILTIN AGDATERMMETA meta #-}
+
+  data Literal : Set where
+    ...
+    meta : Meta → Literal
+
+  {-# BUILTIN AGDALITMETA meta #-}
+  ```
+
+* Builtin unit type
+
+  The type checker needs to know about the unit type, which you can
+  allow by
+
+  ```agda
+  record ⊤ : Set where
+  {-# BUILTIN UNIT ⊤ #-}
+  ```
+
+* Changed behaviour of `unquote`
+
+  The `unquote` primitive now expects a type checking computation
+  instead of a pure term. In particular `unquote e` requires
+
+  ```agda
+  e : Term → TC ⊤
+  ```
+
+  where the argument is the representation of the hole in which the
+  result should go. The old `unquote` behaviour (where `unquote`
+  expected a `Term` argument) can be recovered by
+
+  ```agda
+  OLD: unquote v
+  NEW: unquote λ hole → unify hole v
+  ```
+
+* Changed behaviour of `unquoteDecl`
+
+  The `unquoteDecl` primitive now expects a type checking computation
+  instead of a pure function definition. It is possible to define
+  multiple (mutually recursive) functions at the same time. More
+  specifically
+
+  ```agda
+  unquoteDecl x₁ .. xₙ = m
+  ```
+
+  requires `m : TC ⊤` and that `x₁ .. xₙ` are defined (using
+  `declareDef` and `defineFun`) after executing `m`. As before `x₁
+  .. xₙ : QName` in `m`, but have their declared types outside the
+  `unquoteDecl`.
+
+* New primitive `unquoteDef`
+
+  There is a new declaration
+
+  ```agda
+  unquoteDef x₁ .. xₙ = m
+  ```
+
+  This works exactly as `unquoteDecl` (see above) with the exception
+  that `x₁ ..  xₙ` are required to already be declared.
+
+  The main advantage of `unquoteDef` over `unquoteDecl` is that
+  `unquoteDef` is allowed in mutual blocks, allowing mutually
+  recursion between generated definitions and hand-written
+  definitions.
+
+* The reflection interface now exposes the name hint (as a string)
+  for variables. As before, the actual binding structure is with
+  de Bruijn indices. The String value is just a hint used as a prefix
+  to help display the variable. The type `Abs` is a new builtin type used
+  for the constructors `Term.lam`, `Term.pi`, `Pattern.var`
+  (bultins `AGDATERMLAM`, `AGDATERMPI` and `AGDAPATVAR`).
+
+  ```agda
+  data Abs (A : Set) : Set where
+    abs : (s : String) (x : A) → Abs A
+  {-# BUILTIN ABS    Abs #-}
+  {-# BUILTIN ABSABS abs #-}
+  ```
+
+  Updated constructor types:
+
+  ```agda
+  Term.lam    : Hiding   → Abs Term → Term
+  Term.pi     : Arg Type → Abs Type → Term
+  Pattern.var : String   → Pattern
+  ```
+
+* Reflection-based macros
+
+  Macros are functions of type `t1 → t2 → .. → Term → TC ⊤` that are
+  defined in a `macro` block. Macro application is guided by the type
+  of the macro, where `Term` arguments desugar into the `quoteTerm`
+  syntax and `Name` arguments into the `quote` syntax. Arguments of
+  any other type are preserved as-is. The last `Term` argument is the
+  hole term given to `unquote` computation (see above).
+
+  For example, the macro application `f u v w` where the macro `f` has
+  the type `Term → Name → Bool → Term → TC ⊤` desugars into `unquote
+  (f (quoteTerm u) (quote v) w)`
+
+  Limitations:
+
+    - Macros cannot be recursive. This can be worked around by defining the
+      recursive function outside the macro block and have the macro call the
+      recursive function.
+
+  Silly example:
+
+  ```agda
+  macro
+    plus-to-times : Term → Term → TC ⊤
+    plus-to-times (def (quote _+_) (a ∷ b ∷ [])) hole = unify hole (def (quote _*_) (a ∷ b ∷ []))
+    plus-to-times v hole = unify hole v
+
+  thm : (a b : Nat) → plus-to-times (a + b) ≡ a * b
+  thm a b = refl
+  ```
+
+  Macros are most useful when writing tactics, since they let you hide the
+  reflection machinery. For instance, suppose you have a solver
+
+  ```agda
+  magic : Type → Term
+  ```
+
+  that takes a reflected goal and outputs a proof (when successful). You can
+  then define the following macro
+
+  ```agda
+  macro
+    by-magic : Term → TC ⊤
+    by-magic hole =
+      bindTC (inferType hole) λ goal →
+      unify hole (magic goal)
+  ```
+
+  This lets you apply the magic tactic without any syntactic noise at all:
+
+  ```agda
+  thm : ¬ P ≡ NP
+  thm = by-magic
+  ```
+
+### Literals and built-ins
+
+* Overloaded number literals.
+
+  You can now overload natural number literals using the new builtin
+  `FROMNAT`:
+
+  ```agda
+  {-# BUILTIN FROMNAT fromNat #-}
+  ```
+
+  The target of the builtin should be a defined name. Typically you would do
+  something like
+
+  ```agda
+  record Number (A : Set) : Set where
+    field fromNat : Nat → A
+
+  open Number {{...}} public
+
+  {-# BUILTIN FROMNAT fromNat #-}
+  ```
+
+  This will cause number literals `n` to be desugared to `fromNat n`
+  before type checking.
+
+* Negative number literals.
+
+  Number literals can now be negative. For floating point literals it
+  works as expected. For integer literals there is a new builtin
+  `FROMNEG` that enables negative integer literals:
+
+  ```agda
+  {-# BUILTIN FROMNEG fromNeg #-}
+  ```
+
+  This causes negative literals `-n` to be desugared to `fromNeg n`.
+
+* Overloaded string literals.
+
+  String literals can be overladed using the `FROMSTRING` builtin:
+
+  ```agda
+  {-# BUILTIN FROMSTRING fromString #-}
+  ```
+
+  The will cause string literals `s` to be desugared to `fromString s`
+  before type checking.
+
+* Change to builtin integers.
+
+  The `INTEGER` builtin now needs to be bound to a datatype with two
+  constructors that should be bound to the new builtins `INTEGERPOS`
+  and `INTEGERNEGSUC` as follows:
+
+  ```agda
+  data Int : Set where
+    pos    : Nat -> Int
+    negsuc : Nat -> Int
+  {-# BUILTIN INTEGER       Int    #-}
+  {-# BUILTIN INTEGERPOS    pos    #-}
+  {-# BUILTIN INTEGERNEGSUC negsuc #-}
+  ```
+
+  where `negsuc n` represents the integer `-n - 1`. For instance, `-5`
+  is represented as `negsuc 4`. All primitive functions on integers
+  except `primShowInteger` have been removed, since these can be
+  defined without too much trouble on the above representation using
+  the corresponding functions on natural numbers.
+
+  The primitives that have been removed are
+
+  ```agda
+  primIntegerPlus
+  primIntegerMinus
+  primIntegerTimes
+  primIntegerDiv
+  primIntegerMod
+  primIntegerEquality
+  primIntegerLess
+  primIntegerAbs
+  primNatToInteger
+  ```
+
+* New primitives for strict evaluation
+
+  ```agda
+  primitive
+    primForce      : ∀ {a b} {A : Set a} {B : A → Set b} (x : A) → (∀ x → B x) → B x
+    primForceLemma : ∀ {a b} {A : Set a} {B : A → Set b} (x : A) (f : ∀ x → B x) → primForce x f ≡ f x
+  ```
+
+  `primForce x f` evaluates to `f x` if x is in weak head normal form,
+  and `primForceLemma x f` evaluates to `refl` in the same
+  situation. The following values are considered to be in weak head
+  normal form:
+
+    - constructor applications
+    - literals
+    - lambda abstractions
+    - type constructor (data/record types) applications
+    - function types
+    - Set a
+
+### Modules
+
+* Modules in import directives
+
+  When you use `using`/`hiding`/`renaming` on a name it now
+  automatically applies to any module of the same name, unless you
+  explicitly mention the module. For instance,
+
+  ```agda
+  open M using (D)
+  ```
+
+  is equivalent to
+
+  ```agda
+  open M using (D; module D)
+  ```
+
+  if `M` defines a module `D`. This is most useful for record and data
+  types where you always get a module of the same name as the type.
+
+  With this feature there is no longer useful to be able to qualify a
+  constructor (or field) by the name of the data type even when it
+  differs from the name of the corresponding module. The follow
+  (weird) code used to work, but doesn't work anymore:
+
+  ```agda
+  module M where
+    data D where
+      c : D
+  open M using (D) renaming (module D to MD)
+  foo : D
+  foo = D.c
+  ```
+
+  If you want to import only the type name and not the module you have to hide
+  it explicitly:
+
+  ```agda
+  open M using (D) hiding (module D)
+  ```
+
+  See discussion on
+  Issue [#836](https://github.com/agda/agda/issues/836).
+
+* Private definitions of a module are no longer in scope at the Emacs
+  mode top-level.
+
+  The reason for this change is that `.agdai-files` are stripped of
+  unused private definitions (which can yield significant performance
+  improvements for module-heavy code).
+
+  To test private definitions you can create a hole at the bottom of
+  the module, in which private definitions will be visible.
+
+### Records
+
+* New record directives `eta-equality`/`no-eta-equality`
+
+  The keywords `eta-equality`/`no-eta-equality` enable/disable eta
+  rules for the (inductive) record type being declared.
+
+  ```agda
+  record Σ (A : Set) (B : A -> Set) : Set where
+    no-eta-equality
+    constructor _,_
+    field
+      fst : A
+      snd : B fst
+  open Σ
+
+  -- fail : ∀ {A : Set}{B : A -> Set} → (x : Σ A B) → x ≡ (fst x , snd x)
+  -- fail x = refl
+  --
+  -- x != fst x , snd x of type Σ .A .B
+  -- when checking that the expression refl has type x ≡ (fst x , snd x)
+  ```
+
+* Building records from modules.
+
+  The `record { <fields> }` syntax is now extended to accept module
+  names as well. Fields are thus defined using the corresponding
+  definitions from the given module.
+
+  For instance assuming this record type `R` and module `M`:
+
+  ```agda
+  record R : Set where
+    field
+      x : X
+      y : Y
+      z : Z
+
+  module M where
+    x = {! ... !}
+    y = {! ... !}
+
+  r : R
+  r = record { M; z = {! ... !} }
+  ```
+
+  Previously one had to write `record { x = M.x; y = M.y; z = {! ... !} }`.
+
+  More precisely this construction now supports any combination of explicit
+  field definitions and applied modules.
+
+  If a field is both given explicitly and available in one of the modules,
+  then the explicit one takes precedence.
+
+  If a field is available in more than one module then this is ambiguous
+  and therefore rejected. As a consequence the order of assignments does
+  not matter.
+
+  The modules can be both applied to arguments and have import directives
+  such as `hiding`, `using`, and `renaming`. In particular this construct
+  subsumes the record update construction.
+
+  Here is an example of record update:
+
+  ```agda
+  -- Record update. Same as: record r { y = {! ... !} }
+  r2 : R
+  r2 = record { R r; y = {! ... !} }
+  ```
+
+  A contrived example showing the use of `hiding`/`renaming`:
+
+  ```agda
+  module M2 (a : A) where
+    w = {! ... !}
+    z = {! ... !}
+
+  r3 : A → R
+  r3 a = record { M hiding (y); M2 a renaming (w to y) }
+  ```
+
+* Record patterns are now accepted.
+
+  Examples:
+
+  ```agda
+  swap : {A B : Set} (p : A × B) → B × A
+  swap record{ proj₁ = a; proj₂ = b } = record{ proj₁ = b; proj₂ = a }
+
+  thd3 : ...
+  thd3 record{ proj₂ = record { proj₂ = c }} = c
+  ```
+
+* Record modules now properly hide all their parameters
+  [Issue [#1759](https://github.com/agda/agda/issues/1759)]
+
+  Previously parameters to parent modules were not hidden in the record
+  module, resulting in different behaviour between
+
+  ```agda
+  module M (A : Set) where
+    record R (B : Set) : Set where
+  ```
+
+  and
+
+  ```agda
+  module M where
+    record R (A B : Set) : Set where
+  ```
+
+  where in the former case, `A` would be an explicit argument to the module
+  `M.R`, but implicit in the latter case. Now `A` is implicit in both cases.
+
+### Instance search
+
+* Performance has been improved, recursive instance search which was
+  previously exponential in the depth is now only quadratic.
+
+* Constructors of records and datatypes are not anymore automatically
+  considered as instances, you have to do so explicitely, for
+  instance:
+
+  ```agda
+  -- only [b] is an instance of D
+  data D : Set where
+    a : D
+    instance
+      b : D
+    c : D
+
+  -- the constructor is now an instance
+  record tt : Set where
+    instance constructor tt
+  ```
+
+* Lambda-bound variables are no longer automatically considered
+  instances.
+
+  Lambda-bound variables need to be bound as instance arguments to be
+  considered for instance search. For example,
+
+  ```agda
+  _==_ : {A : Set} {{_ : Eq A}} → A → A → Bool
+
+  fails : {A : Set} → Eq A → A → Bool
+  fails eqA x = x == x
+
+  works : {A : Set} {{_ : Eq A}} → A → Bool
+  works x = x == x
+  ```
+
+* Let-bound variables are no longer automatically considered
+  instances.
+
+  To make a let-bound variable available as an instance it needs to be
+  declared with the `instance` keyword, just like top-level
+  instances. For example,
+
+  ```agda
+  mkEq : {A : Set} → (A → A → Bool) → Eq A
+
+  fails : {A : Set} → (A → A → Bool) → A → Bool
+  fails eq x = let eqA = mkEq eq in x == x
+
+  works : {A : Set} → (A → A → Bool) → A → Bool
+  works eq x = let instance eqA = mkEq eq in x == x
+  ```
+
+* Record fields can be declared instances.
+
+  For example,
+
+  ```agda
+  record EqSet : Set₁ where
+    field
+      set : Set
+      instance eq : Eq set
+  ```
+
+  This causes the projection function `eq : (E : EqSet) → Eq (set E)`
+  to be considered for instance search.
+
+* Instance search can now find arguments in variable types (but such
+  candidates can only be lambda-bound variables, they can’t be
+  declared as instances)
+
+  ```agda
+  module _ {A : Set} (P : A → Set) where
+
+    postulate
+      bla : {x : A} {{_ : P x}} → Set → Set
+
+    -- Works, the instance argument is found in the context
+    test :  {x : A} {{_ : P x}} → Set → Set
+    test B = bla B
+
+    -- Still forbidden, because [P] could be instantiated later to anything
+    instance
+     postulate
+      forbidden : {x : A} → P x
+  ```
+
+* Instance search now refuses to solve constraints with unconstrained
+  metavariables, since this can lead to non-termination.
+
+  See [Issue [#1532](https://github.com/agda/agda/issues/1523)] for an
+  example.
+
+* Top-level instances are now only considered if they are in
+  scope. [Issue [#1913](https://github.com/agda/agda/issues/1913)]
+
+  Note that lambda-bound instances need not be in scope.
+
+### Other changes
+
+* Unicode ellipsis character is allowed for the ellipsis token `...`
+  in `with` expressions.
+
+* `Prop` is no longer a reserved word.
+
+Type checking
+-------------
+
+* Large indices.
+
+  Force constructor arguments no longer count towards the size of a datatype.
+  For instance, the definition of equality below is accepted.
+
+  ```agda
+  data _≡_ {a} {A : Set a} : A → A → Set where
+    refl : ∀ x → x ≡ x
+  ```
+
+  This gets rid of the asymmetry that the version of equality which indexes
+  only on the second argument could be small, but not the version above which
+  indexes on both arguments.
+
+* Detection of datatypes that satisfy K (i.e. sets)
+
+  Agda will now try to detect datatypes that satisfy K when
+  `--without-K` is enabled. A datatype satisfies K when it follows
+  these three rules:
+
+  - The types of all non-recursive constructor arguments should satisfy K.
+
+  - All recursive constructor arguments should be first-order.
+
+  - The types of all indices should satisfy K.
+
+  For example, the types `Nat`, `List Nat`, and `x ≡ x` (where `x :
+  Nat`) are all recognized by Agda as satisfying K.
+
+* New unifier for case splitting
+
+  The unifier used by Agda for case splitting has been completely
+  rewritten. The new unifier takes a much more type-directed approach
+  in order to avoid the problems in issues
+  [#1406](https://github.com/agda/agda/issues/1406),
+  [#1408](https://github.com/agda/agda/issues/1408),
+  [#1427](https://github.com/agda/agda/issues/1427), and
+  [#1435](https://github.com/agda/agda/issues/1435).
+
+  The new unifier also has eta-equality for record types
+  built-in. This should avoid unnecessary case splitting on record
+  constructors and improve the performance of Agda on code that
+  contains deeply nested record patterns (see issues
+  [#473](https://github.com/agda/agda/issues/473),
+  [#635](https://github.com/agda/agda/issues/635),
+  [#1575](https://github.com/agda/agda/issues/1575),
+  [#1603](https://github.com/agda/agda/issues/1603),
+  [#1613](https://github.com/agda/agda/issues/1613), and
+  [#1645](https://github.com/agda/agda/issues/1645)).
+
+  In some cases, the locations of the dot patterns computed by the
+  unifier did not correspond to the locations given by the user (see
+  Issue [#1608](https://github.com/agda/agda/issues/1608)). This has
+  now been fixed by adding an extra step after case splitting that
+  checks whether the user-written patterns are compatible with the
+  computed ones.
+
+  In some rare cases, the new unifier is still too restrictive when
+  `--without-K` is enabled because it cannot generalize over the
+  datatype indices (yet). For example, the following code is rejected:
+
+  ```agda
+  data Bar : Set₁ where
+    bar : Bar
+    baz : (A : Set) → Bar
+
+  data Foo : Bar → Set where
+    foo : Foo bar
+
+  test : foo ≡ foo → Set₁
+  test refl = Set
+  ```
+
+* The aggressive behaviour of `with` introduced in 2.4.2.5 has been
+  rolled back
+  [Issue [#1692](https://github.com/agda/agda/issues/1692)]. With no
+  longer abstracts in the types of variables appearing in the
+  with-expressions. [Issue [#745](https://github.com/agda/agda/issues/745)]
+
+  This means that the following example no longer works:
+
+  ```agda
+  fails : (f : (x : A) → a ≡ x) (b : A) → b ≡ a
+  fails f b with a | f b
+  fails f b | .b | refl = f b
+  ```
+
+  The `with` no longer abstracts the type of `f` over `a`, since `f`
+  appears in the second with-expression `f b`. You can use a nested
+  `with` to make this example work.
+
+  This example does work again:
+
+  ```agda
+  test : ∀{A : Set}{a : A}{f : A → A} (p : f a ≡ a) → f (f a) ≡ a
+  test p rewrite p = p
+  ```
+
+  After `rewrite p` the goal has changed to `f a ≡ a`, but the type
+  of `p` has not been rewritten, thus, the final `p` solves the goal.
+
+  The following, which worked in 2.4.2.5, no longer works:
+
+  ```agda
+  fails : (f : (x : A) → a ≡ x) (b : A) → b ≡ a
+  fails f b rewrite f b = f b
+  ```
+
+  The rewrite with `f b : a ≡ b` is not applied to `f` as
+  the latter is part of the rewrite expression `f b`.  Thus,
+  the type of `f` remains untouched, and the changed goal
+  `b ≡ b` is not solved by `f b`.
+
+* When using `rewrite` on a term `eq` of type `lhs ≡ rhs`, the `lhs`
+  is no longer abstracted in `rhs`
+  [Issue [#520](https://github.com/agda/agda/issues/520)].  This means
+  that
+
+  ```agda
+  f pats rewrite eq = body
+  ```
+
+  is more than syntactic sugar for
+
+  ```agda
+  f pats with lhs | eq
+  f pats | _ | refl = body
+  ```
+
+  In particular, the following application of `rewrite` is now
+  possible
+
+  ```agda
+  id : Bool → Bool
+  id true  = true
+  id false = false
+
+  is-id : ∀ x → x ≡ id x
+  is-id true  = refl
+  is-id false = refl
+
+  postulate
+    P : Bool → Set
+    b : Bool
+    p : P (id b)
+
+  proof : P b
+  proof rewrite is-id b = p
+  ```
+
+  Previously, this was desugared to
+
+  ```agda
+  proof with b | is-id b
+  proof | _ | refl = p
+  ```
+
+  which did not type check as `refl` does not have type `b ≡ id b`.
+  Now, Agda gets the task of checking `refl : _ ≡ id b` leading to
+  instantiation of `_` to `id b`.
+
+Compiler backends
+-----------------
+
+* Major Bug Fixes:
+
+  - Function clauses with different arities are now always compiled
+    correctly by the GHC/UHC
+    backends. (Issue [#727](https://github.com/agda/agda/issues/727))
+
+* Co-patterns
+
+  - The GHC/UHC backends now support co-patterns. (Issues
+    [#1567](https://github.com/agda/agda/issues/1567),
+    [#1632](https://github.com/agda/agda/issues/1632))
+
+* Optimizations
+
+  - Builtin naturals are now represented as arbitrary-precision
+    Integers. See the user manual, section
+    "Agda Compilers -> Optimizations" for details.
+
+* GHC Haskell backend (MAlonzo)
+
+  - Pragmas
+
+    Since builtin naturals are compiled to `Integer` you can no longer
+    give a `{-# COMPILED_DATA #-}` pragma for `Nat`. The same goes for
+    builtin booleans, integers, floats, characters and strings which
+    are now hard-wired to appropriate Haskell types.
+
+* UHC compiler backend
+
+  A new backend targeting the Utrecht Haskell Compiler (UHC) is
+  available.  It targets the UHC Core language, and it's design is
+  inspired by the Epic backend. See the user manual, section "Agda
+  Compilers -> UHC Backend" for installation instructions.
+
+  - FFI
+
+    The UHC backend has a FFI to Haskell similar to MAlonzo's. The
+    target Haskell code also needs to be compilable using UHC, which
+    does not support the Haskell base library version 4.*.
+
+    FFI pragmas for the UHC backend are not checked in any way. If the
+    pragmas are wrong, bad things will happen.
+
+  - Imports
+
+    Additional Haskell modules can be brought into scope with the
+    `IMPORT_UHC` pragma:
+
+    ```agda
+    {-# IMPORT_UHC Data.Char #-}
+    ```
+
+    The Haskell modules `UHC.Base` and `UHC.Agda.Builtins` are always in
+    scope and don't need to be imported explicitly.
+
+  - Datatypes
+
+    Agda datatypes can be bound to Haskell datatypes as follows:
+
+    Haskell:
+    ```haskell
+    data HsData a = HsCon1 | HsCon2 (HsData a)
+    ```
+
+    Agda:
+    ```agda
+    data AgdaData (A : Set) : Set where
+      AgdaCon1 : AgdaData A
+      AgdaCon2 : AgdaData A -> AgdaData A
+    {-# COMPILED_DATA_UHC AgdaData HsData HsCon1 HsCon2 #-}
+    ```
+
+    The mapping has to cover all constructors of the used Haskell
+    datatype, else runtime behavior is undefined!
+
+    There are special reserved names to bind Agda datatypes to certain
+    Haskell datatypes. For example, this binds an Agda datatype to
+    Haskell's list datatype:
+
+    Agda:
+    ```agda
+    data AgdaList (A : Set) : Set where
+      Nil : AgdaList A
+      Cons : A -> AgdaList A -> AgdaList A
+    {-# COMPILED_DATA_UHC AgdaList __LIST__ __NIL__ __CONS__ #-}
+    ```
+
+    The following "magic" datatypes are available:
+
+    ```
+    HS Datatype | Datatype Pragma | HS Constructor | Constructor Pragma
+    ()            __UNIT__          ()               __UNIT__
+    List          __LIST__          (:)              __CONS__
+                                    []               __NIL__
+    Bool          __BOOL__          True             __TRUE__
+                                    False            __FALSE__
+    ```
+
+  - Functions
+
+    Agda postulates can be bound to Haskell functions. Similar as in
+    MAlonzo, all arguments of type `Set` need to be dropped before
+    calling Haskell functions. An example calling the return function:
+
+    Agda:
+    ```agda
+    postulate hs-return : {A : Set} -> A -> IO A
+    {-# COMPILED_UHC hs-return (\_ -> UHC.Agda.Builtins.primReturn) #-}
+    ```
+
+Emacs mode and interaction
+--------------------------
+
+* Module contents (`C-c C-o`) now also works for
+  records. [See Issue [#1926](https://github.com/agda/agda/issues/1926) ]
+  If you have an inferable expression of record type in an interaction
+  point, you can invoke `C-c C-o` to see its fields and types.
+  Example
+
+  ```agda
+  record R : Set where
+    field f : A
+
+  test : R → R
+  test r = {!r!}  -- C-c C-o here
+  ```
+
+* Less aggressive error notification.
+
+  Previously Emacs could jump to the position of an error even if the
+  type-checking process was not initiated in the current buffer. Now
+  this no longer happens: If the type-checking process was initiated
+  in another buffer, then the cursor is moved to the position of the
+  error in the buffer visiting the file (if any) and in every window
+  displaying the file, but focus should not change from one file to
+  another.
+
+  In the cases where focus does change from one file to another, one
+  can now use the go-back functionality to return to the previous
+  position.
+
+* Removed the `agda-include-dirs` customization parameter.
+
+  Use `agda-program-args` with `-iDIR` or `-lLIB` instead, or add
+  libraries to `~/.agda/defaults`
+  (`C:/Users/USERNAME/AppData/Roaming/agda/defaults` or similar on
+  Windows). See Library management, above, for more information.
+
+Tools
+-----
+
+### LaTeX-backend
+
+* The default font has been changed to XITS (which is part of TeX Live):
+
+    http://www.ctan.org/tex-archive/fonts/xits/
+
+  This font is more complete with respect to Unicode.
+
+### agda-ghc-names
+
+* New tool: The command
+
+  ```
+  agda-ghc-names fixprof <compile-dir> <ProgName>.prof
+  ```
+
+  converts `*.prof` files obtained from profiling runs of
+  MAlonzo-compiled code to `*.agdaIdents.prof`, with the original Agda
+  identifiers replacing the MAlonzo-generated Haskell identifiers.
+
+  For usage and more details, see `src/agda-ghc-names/README.txt`.
+
+Highlighting and textual backends
+---------------------------------
+
+* Names in import directives are now highlighted and are clickable.
+  [Issue [#1714](https://github.com/agda/agda/issues/1714)] This leads
+  also to nicer printing in the LaTeX and html backends.
+
+Fixed issues
+------------
+
+See
+[bug tracker (milestone 2.5.1)](https://github.com/agda/agda/issues?q=milestone%3A2.5.1+is%3Aclosed)
+
+Release notes for Agda version 2.4.2.5
+======================================
+
+Installation and infrastructure
+-------------------------------
+
+* Added support for GHC 7.10.3.
+
+* Added `cpphs` Cabal flag
+
+  Turn on/off this flag to choose cpphs/cpp as the C preprocessor.
+
+  This flag is turn on by default.
+
+  (This flag was added in Agda 2.4.2.1 but it was not documented)
+
+Pragmas and options
+-------------------
+
+* Termination pragmas are no longer allowed inside `where` clauses
+  [Issue [#1137](https://github.com/agda/agda/issues/1137)].
+
+Type checking
+-------------
+
+* `with`-abstraction is more aggressive, abstracts also in types of
+  variables that are used in the `with`-expressions, unless they are
+  also used in the types of the
+  `with`-expressions. [Issue [#1692](https://github.com/agda/agda/issues/1692)]
+
+  Example:
+
+  ```agda
+  test : (f : (x : A) → a ≡ x) (b : A) → b ≡ a
+  test f b with a | f b
+  test f b | .b | refl = f b
+  ```
+
+  Previously, `with` would not abstract in types of variables that
+  appear in the `with`-expressions, in this case, both `f` and `b`,
+  leaving their types unchanged.  Now, it tries to abstract in `f`, as
+  only `b` appears in the types of the `with`-expressions which are
+  `A` (of `a`) and `a ≡ b` (of `f b`).  As a result, the type of `f`
+  changes to `(x : A) → b ≡ x` and the type of the goal to `b ≡ b` (as
+  previously).
+
+  This also affects `rewrite`, which is implemented in terms of
+  `with`.
+
+  ```agda
+  test : (f : (x : A) → a ≡ x) (b : A) → b ≡ a
+  test f b rewrite f b = f b
+  ```
+
+  As the new `with` is not fully backwards-compatible, some parts of
+  your Agda developments using `with` or `rewrite` might need
+  maintenance.
+
+Fixed issues
+------------
+
+See [bug tracker](https://github.com/agda/agda/issues)
+
+[#1407](https://github.com/agda/agda/issues/1497)
+
+[#1518](https://github.com/agda/agda/issues/1518)
+
+[#1670](https://github.com/agda/agda/issues/1670)
+
+[#1677](https://github.com/agda/agda/issues/1677)
+
+[#1698](https://github.com/agda/agda/issues/1698)
+
+[#1701](https://github.com/agda/agda/issues/1701)
+
+[#1710](https://github.com/agda/agda/issues/1710)
+
+[#1718](https://github.com/agda/agda/issues/1718)
+
+Release notes for Agda version 2.4.2.4
+======================================
+
+Installation and infrastructure
+-------------------------------
+
+* Removed support for GHC 7.4.2.
+
+Pragmas and options
+-------------------
+
+* Option `--copatterns` is now on by default.  To switch off
+  parsing of copatterns, use:
+
+  ```agda
+  {-# OPTIONS --no-copatterns #-}
+  ```
+
+* Option `--rewriting` is now needed to use `REWRITE` pragmas and
+  rewriting during reduction.  Rewriting is not `--safe`.
+
+  To use rewriting, first specify a relation symbol `R` that will
+  later be used to add rewrite rules.  A canonical candidate would be
+  propositional equality
+
+  ```agda
+  {-# BUILTIN REWRITE _≡_ #-}
+  ```
+
+  but any symbol `R` of type `Δ → A → A → Set i` for some `A` and `i`
+  is accepted.  Then symbols `q` can be added to rewriting provided
+  their type is of the form `Γ → R ds l r`.  This will add a rewrite
+  rule
+
+  ```
+  Γ ⊢ l ↦ r : A[ds/Δ]
+  ```
+
+  to the signature, which fires whenever a term is an instance of `l`.
+  For example, if
+
+  ```agda
+  plus0 : ∀ x → x + 0 ≡ x
+  ```
+
+  (ideally, there is a proof for `plus0`, but it could be a
+  postulate), then
+
+  ```agda
+  {-# REWRITE plus0 #-}
+  ```
+
+  will prompt Agda to rewrite any well-typed term of the form `t + 0`
+  to `t`.
+
+  Some caveats: Agda accepts and applies rewrite rules naively, it is
+  very easy to break consistency and termination of type checking.
+  Some examples of rewrite rules that should *not* be added:
+
+  ```agda
+  refl     : ∀ x → x ≡ x             -- Agda loops
+  plus-sym : ∀ x y → x + y ≡ y + x   -- Agda loops
+  absurd   : true ≡ false            -- Breaks consistency
+  ```
+
+  Adding only proven equations should at least preserve consistency,
+  but this is only a conjecture, so know what you are doing!  Using
+  rewriting, you are entering into the wilderness, where you are on
+  your own!
+
+Language
+--------
+
+* `forall` / `∀` now parses like `λ`, i.e., the following parses now
+  [Issue [#1583](https://github.com/agda/agda/issues/1538)]:
+
+  ```agda
+  ⊤ × ∀ (B : Set) → B → B
+  ```
+
+* The underscore pattern `_` can now also stand for an inaccessible
+  pattern (dot pattern). This alleviates the need for writing `._`.
+  [Issue #[1605](https://github.com/agda/agda/issues/1605)] Instead of
+
+  ```agda
+  transVOld : ∀{A : Set} (a b c : A) → a ≡ b → b ≡ c → a ≡ c
+  transVOld _ ._ ._ refl refl = refl
+  ```
+
+  one can now write
+
+  ```agda
+    transVNew : ∀{A : Set} (a b c : A) → a ≡ b → b ≡ c → a ≡ c
+    transVNew _ _ _ refl refl = refl
+  ```
+
+  and let Agda decide where to put the dots.  This was always possible
+  by using hidden arguments
+
+  ```agda
+  transH : ∀{A : Set}{a b c : A} → a ≡ b → b ≡ c → a ≡ c
+  transH refl refl = refl
+  ```
+
+  which is now equivalent to
+
+  ```agda
+  transHNew : ∀{A : Set}{a b c : A} → a ≡ b → b ≡ c → a ≡ c
+  transHNew {a = _}{b = _}{c = _} refl refl = refl
+  ```
+
+  Before, underscore `_` stood for an unnamed variable that could not
+  be instantiated by an inaccessible pattern.  If one no wants to
+  prevent Agda from instantiating, one needs to use a variable name
+  other than underscore (however, in practice this situation seems
+  unlikely).
+
+Type checking
+-------------
+
+* Polarity of phantom arguments to data and record types has
+  changed. [Issue [#1596](https://github.com/agda/agda/issues/1596)]
+  Polarity of size arguments is Nonvariant (both monotone and
+  antitone).  Polarity of other arguments is Covariant (monotone).
+  Both were Invariant before (neither monotone nor antitone).
+
+  The following example type-checks now:
+
+  ```agda
+  open import Common.Size
+
+  -- List should be monotone in both arguments
+  -- (even when `cons' is missing).
+
+  data List (i : Size) (A : Set) : Set where
+    [] : List i A
+
+  castLL : ∀{i A} → List i (List i A) → List ∞ (List ∞ A)
+  castLL x = x
+
+  -- Stream should be antitone in the first and monotone in the second argument
+  -- (even with field `tail' missing).
+
+  record Stream (i : Size) (A : Set) : Set where
+    coinductive
+    field
+      head : A
+
+  castSS : ∀{i A} → Stream ∞ (Stream ∞ A) → Stream i (Stream i A)
+  castSS x = x
+  ```
+
+* `SIZELT` lambdas must be consistent
+  [Issue [#1523](https://github.com/agda/agda/issues/1523), see Abel
+  and Pientka, ICFP 2013].  When lambda-abstracting over type (`Size<
+  size`) then `size` must be non-zero, for any valid instantiation of
+  size variables.
+
+  - The good:
+
+    ```agda
+    data Nat (i : Size) : Set where
+      zero : ∀ (j : Size< i) → Nat i
+      suc  : ∀ (j : Size< i) → Nat j → Nat i
+
+    {-# TERMINATING #-}
+    -- This definition is fine, the termination checker is too strict at the moment.
+    fix : ∀ {C : Size → Set}
+       → (∀ i → (∀ (j : Size< i) → Nat j -> C j) → Nat i → C i)
+       → ∀ i → Nat i → C i
+    fix t i (zero j)  = t i (λ (k : Size< i) → fix t k) (zero j)
+    fix t i (suc j n) = t i (λ (k : Size< i) → fix t k) (suc j n)
+    ```
+
+    The `λ (k : Size< i)` is fine in both cases, as context
+
+    ```agda
+    i : Size, j : Size< i
+    ```
+
+    guarantees that `i` is non-zero.
+
+  - The bad:
+
+    ```agda
+    record Stream {i : Size} (A : Set) : Set where
+      coinductive
+      constructor _∷ˢ_
+      field
+        head  : A
+        tail  : ∀ {j : Size< i} → Stream {j} A
+    open Stream public
+
+    _++ˢ_ : ∀ {i A} → List A → Stream {i} A → Stream {i} A
+    []        ++ˢ s = s
+    (a ∷ as)  ++ˢ s = a ∷ˢ (as ++ˢ s)
+    ```
+
+    This fails, maybe unjustified, at
+
+    ```agda
+    i : Size, s : Stream {i} A
+      ⊢
+        a ∷ˢ (λ {j : Size< i} → as ++ˢ s)
+    ```
+
+    Fixed by defining the constructor by copattern matching:
+
+    ```agda
+    record Stream {i : Size} (A : Set) : Set where
+      coinductive
+      field
+        head  : A
+        tail  : ∀ {j : Size< i} → Stream {j} A
+    open Stream public
+
+    _∷ˢ_ : ∀ {i A} → A → Stream {i} A → Stream {↑ i} A
+    head  (a ∷ˢ as) = a
+    tail  (a ∷ˢ as) = as
+
+    _++ˢ_ : ∀ {i A} → List A → Stream {i} A → Stream {i} A
+    []        ++ˢ s = s
+    (a ∷ as)  ++ˢ s = a ∷ˢ (as ++ˢ s)
+    ```
+
+  - The ugly:
+
+    ```agda
+    fix : ∀ {C : Size → Set}
+       → (∀ i → (∀ (j : Size< i) → C j) → C i)
+       → ∀ i → C i
+    fix t i = t i λ (j : Size< i) → fix t j
+    ```
+
+    For `i=0`, there is no such `j` at runtime, leading to looping
+    behavior.
+
+Interaction
+-----------
+
+* Issue [#635](https://github.com/agda/agda/issues/635) has been
+  fixed.  Case splitting does not spit out implicit record patterns
+  any more.
+
+  ```agda
+  record Cont : Set₁ where
+    constructor _◃_
+    field
+      Sh  : Set
+      Pos : Sh → Set
+
+  open Cont
+
+  data W (C : Cont) : Set where
+    sup : (s : Sh C) (k : Pos C s → W C) → W C
+
+  bogus : {C : Cont} → W C → Set
+  bogus w = {!w!}
+  ```
+
+  Case splitting on `w` yielded, since the fix of
+  Issue [#473](https://github.com/agda/agda/issues/473),
+
+  ```agda
+  bogus {Sh ◃ Pos} (sup s k) = ?
+  ```
+
+  Now it gives, as expected,
+
+  ```agda
+  bogus (sup s k) = ?
+  ```
+
+Performance
+-----------
+
+* As one result of the 21st Agda Implementor's Meeting (AIM XXI),
+  serialization of the standard library is 50% faster (time reduced by
+  a third), without using additional disk space for the interface
+  files.
+
+
+Bug fixes
+---------
+
+Issues fixed (see [bug tracker](https://github.com/agda/agda/issues)):
+
+[#1546](https://github.com/agda/agda/issues/1546) (copattern matching
+and with-clauses)
+
+[#1560](https://github.com/agda/agda/issues/1560) (positivity checker
+inefficiency)
+
+[#1584](https://github.com/agda/agda/issues/1548) (let pattern with
+trailing implicit)
+
+Release notes for Agda version 2.4.2.3
+======================================
+
+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](https://github.com/agda/agda/issues/1465)]
+
+  ```agda
+  postulate _ : Set
+  ```
+
+* Typed bindings can now contain hiding information
+  [Issue [#1391](https://github.com/agda/agda/issues/1391)].  This
+  means you can now write
+
+  ```agda
+  assoc : (xs {ys zs} : List A) → ((xs ++ ys) ++ zs) ≡ (xs ++ (ys ++ zs))
+  ```
+
+  instead of the longer
+
+  ```agda
+  assoc : (xs : List A) {ys zs : List A} → ...
+  ```
+
+  It also works with irrelevance
+
+  ```agda
+  .(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:
+
+  ```agda
+  {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.
+
+  ```agda
+  {-# 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
+
+  ```agda
+  pred : (i : Size) → Size< i
+  ```
+
+  [Issue [#1428](https://github.com/agda/agda/issues/1428)].
+
+* Unambiguous notations (coming from syntax declarations) that resolve
+  to ambiguous names are now parsed unambiguously
+  [Issue [#1194](https://github.com/agda/agda/issues/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](https://github.com/agda/agda/issues/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:
+
+  ```agda
+  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](https://github.com/agda/agda/issues/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:
+
+  ```agda
+  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:
+
+  ```agda
+  {-# 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](https://github.com/agda/agda/issues/1413)]
+  The following example extends the one in
+  [Abel, Pientka, Thibodeau, Setzer, POPL 2013, Section 2.2]:
+
+  ```agda
+  {-# 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.
+
+  ```agda
+  test : {A B : Set} (a : A) (b : B) → A × B
+  test a b = ?
+  ```
+
+  Result-splitting `?` will produce the new clauses:
+
+  ```agda
+  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).
+
+  ```agda
+  testFun : {A B : Set} (a : A) (b : B) → A × B
+  testFun = ?
+  ```
+
+  Result-splitting `?` will produce the new clause:
+
+  ```agda
+  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.
+
+  ```agda
+  {-# 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 removed
+  [Issue [#1481](https://github.com/agda/agda/issues/1481)].
+
+Bug fixes
+---------
+
+* Fixed bug with `unquoteDecl` not working in instance blocks
+  [Issue [#1491](https://github.com/agda/agda/issues/1491)].
+
+* Other issues fixed (see
+  [bug tracker](https://github.com/agda/agda/issues)
+
+  [#1497](https://github.com/agda/agda/issues/1497)
+
+  [#1500](https://github.com/agda/agda/issues/1500)
+
+Release notes for Agda version 2.4.2.2
+======================================
+
+Bug fixes
+---------
+
+* Compilation on Windows fixed.
+
+* Other issues fixed (see
+  [bug tracker](https://github.com/agda/agda/issues))
+
+  [#1332](https://github.com/agda/agda/issues/1322)
+
+  [#1353](https://github.com/agda/agda/issues/1353)
+
+  [#1360](https://github.com/agda/agda/issues/1360)
+
+  [#1366](https://github.com/agda/agda/issues/1366)
+
+  [#1369](https://github.com/agda/agda/issues/1369)
+
+Release notes for Agda version 2.4.2.1
+======================================
+
+Pragmas and options
+-------------------
+
+* New pragma `{-# TERMINATING #-}` replacing
+  `{-# NO_TERMINATION_CHECK #-}`
+
+  Complements the existing pragma `{-# NON_TERMINATING #-}`.  Skips
+  termination check for the associated definitions and marks them as
+  terminating.  Thus, it is a replacement for `{-#
+  NO_TERMINATION_CHECK #-}` with the same semantics.
+
+  You can no longer use pragma `{-# NO_TERMINATION_CHECK #-}` to skip
+  the termination check, but must label your definitions as either
+  `{-# TERMINATING #-}` or `{-# NON_TERMINATING #-}` instead.
+
+  Note: `{-# OPTION --no-termination-check #-}` labels all your
+  definitions as `{-# TERMINATING #-}`, putting you in the danger zone
+  of a loop in the type checker.
+
+Language
+--------
+
+* Referring to a local variable shadowed by module opening is now an
+  error.  Previous behavior was preferring the local over the imported
+  definitions. [Issue [#1266](https://github.com/agda/agda/issues/1266)]
+
+  Note that module parameters are locals as well as variables bound by
+  λ, dependent function type, patterns, and let.
+
+  Example:
+
+  ```agda
+  module M where
+    A = Set1
+
+  test : (A : Set) → let open M in A
+  ```
+
+  The last `A` produces an error, since it could refer to the local
+  variable `A` or to the definition imported from module `M`.
+
+* `with` on a variable bound by a module telescope or a pattern of a
+  parent function is now forbidden.
+  [Issue [#1342](https://github.com/agda/agda/issues/1342)]
+
+  ```agda
+  data Unit : Set where
+    unit : Unit
+
+  id : (A : Set) → A → A
+  id A a = a
+
+  module M (x : Unit) where
+
+    dx : Unit → Unit
+    dx unit = x
+
+    g : ∀ u → x ≡ dx u
+    g with x
+    g | unit  = id (∀ u → unit ≡ dx u) ?
+  ```
+
+  Even though this code looks right, Agda complains about the type
+  expression `∀ u → unit ≡ dx u`.  If you ask Agda what should go
+  there instead, it happily tells you that it wants `∀ u → unit ≡ dx
+  u`. In fact what you do not see and Agda will never show you is that
+  the two expressions actually differ in the invisible first argument
+  to `dx`, which is visible only outside module `M`.  What Agda wants
+  is an invisible `unit` after `dx`, but all you can write is an
+  invisible `x` (which is inserted behind the scenes).
+
+  To avoid those kinds of paradoxes, `with` is now outlawed on module
+  parameters.  This should ensure that the invisible arguments are
+  always exactly the module parameters.
+
+  Since a `where` block is desugared as module with pattern variables
+  of the parent clause as module parameters, the same strikes you for
+  uses of `with` on pattern variables of the parent function.
+
+  ```agda
+  f : Unit → Unit
+  f x = unit
+    where
+      dx : Unit → Unit
+      dx unit = x
+
+      g : ∀ u → x ≡ dx u
+      g with x
+      g | unit  = id ((u : Unit) → unit ≡ dx u) ?
+  ```
+
+  The `with` on pattern variable `x` of the parent clause `f x = unit`
+  is outlawed now.
+
+Type checking
+-------------
+
+* Termination check failure is now a proper error.
+
+  We no longer continue type checking after termination check
+  failures.  Use pragmas `{-# NON_TERMINATING #-}` and `{-#
+  NO_TERMINATION_CHECK #-}` near the offending definitions if you want
+  to do so.  Or switch off the termination checker altogether with
+  `{-# OPTIONS --no-termination-check #-}` (at your own risk!).
+
+* (Since Agda 2.4.2): Termination checking `--without-K` restricts
+  structural descent to arguments ending in data types or `Size`.
+  Likewise, guardedness is only tracked when result type is data or
+  record type.
+
+  ```agda
+  mutual
+    data WOne : Set where wrap : FOne → WOne
+    FOne = ⊥ → WOne
+
+  noo : (X : Set) → (WOne ≡ X) → X → ⊥
+  noo .WOne refl (wrap f) = noo FOne iso f
+  ```
+
+  `noo` is rejected since at type `X` the structural descent
+  `f < wrap f` is discounted `--without-K`.
+
+  ```agda
+  data Pandora : Set where
+    C : ∞ ⊥ → Pandora
+
+  loop : (A : Set) → A ≡ Pandora → A
+  loop .Pandora refl = C (♯ (loop ⊥ foo))
+  ```
+
+  `loop` is rejected since guardedness is not tracked at type `A`
+  `--without-K`.
+
+  See issues [#1023](https://github.com/agda/agda/issues/1023),
+  [#1264](https://github.com/agda/agda/issues/1264),
+  [#1292](https://github.com/agda/agda/issues/1292).
+
+Termination checking
+--------------------
+
+* The termination checker can now recognize simple subterms in dot
+  patterns.
+
+  ```agda
+  data Subst : (d : Nat) → Set where
+    c₁ : ∀ {d} → Subst d → Subst d
+    c₂ : ∀ {d₁ d₂} → Subst d₁ → Subst d₂ → Subst (suc d₁ + d₂)
+
+  postulate
+    comp : ∀ {d₁ d₂} → Subst d₁ → Subst d₂ → Subst (d₁ + d₂)
+
+  lookup : ∀ d → Nat → Subst d → Set₁
+  lookup d             zero    (c₁ ρ)             = Set
+  lookup d             (suc v) (c₁ ρ)             = lookup d v ρ
+  lookup .(suc d₁ + d₂) v      (c₂ {d₁} {d₂} ρ σ) = lookup (d₁ + d₂) v (comp ρ σ)
+  ```
+
+  The dot pattern here is actually normalized, so it is
+
+  ```agda
+  suc (d₁ + d₂)
+  ```
+
+  and the corresponding recursive call argument is `(d₁ + d₂)`.  In
+  such simple cases, Agda can now recognize that the pattern is
+  constructor applied to call argument, which is valid descent.
+
+  Note however, that Agda only looks for syntactic equality when
+  identifying subterms, since it is not allowed to normalize terms on
+  the rhs during termination checking.
+
+  Actually writing the dot pattern has no effect, this works as well,
+  and looks pretty magical... ;-)
+
+  ```agda
+  hidden : ∀{d} → Nat → Subst d → Set₁
+  hidden zero    (c₁ ρ)   = Set
+  hidden (suc v) (c₁ ρ)   = hidden v ρ
+  hidden v       (c₂ ρ σ) = hidden v (comp ρ σ)
+  ```
+
+Tools
+-----
+
+### LaTeX-backend
+
+* Fixed the issue of identifiers containing operators being typeset with
+  excessive math spacing.
+
+Bug fixes
+---------
+
+* Issue [#1194](https://github.com/agda/agda/issues/1194)
+
+* Issue [#836](https://github.com/agda/agda/issues/836): Fields and
+  constructors can be qualified by the record/data *type* as well as
+  by their record/data module.  This now works also for record/data
+  type imported from parametrized modules:
+
+  ```agda
+  module M (_ : Set₁) where
+
+    record R : Set₁ where
+      field
+        X : Set
+
+  open M Set using (R)  -- rather than using (module R)
+
+  X : R → Set
+  X = R.X
+  ```
+
+Release notes for Agda version 2.4.2
+====================================
+
+Pragmas and options
+-------------------
+
+* New option: `--with-K`
+
+  This can be used to override a global `--without-K` in a file, by
+  adding a pragma `{-# OPTIONS --with-K #-}`.
+
+* New pragma `{-# NON_TERMINATING #-}`
+
+  This is a safer version of `NO_TERMINATION_CHECK` which doesn't
+  treat the affected functions as terminating. This means that
+  `NON_TERMINATING` functions do not reduce during type checking. They
+  do reduce at run-time and when invoking `C-c C-n` at top-level (but
+  not in a hole).
+
+Language
+--------
+
+* Instance search is now more efficient and recursive (see
+  Issue [#938](https://github.com/agda/agda/issues/938)) (but without
+  termination check yet).
+
+  A new keyword `instance` has been introduced (in the style of
+  `abstract` and `private`) which must now be used for every
+  definition/postulate that has to be taken into account during
+  instance resolution. For example:
+
+  ```agda
+  record RawMonoid (A : Set) : Set where
+    field
+      nil  : A
+      _++_ : A -> A -> A
+
+  open RawMonoid {{...}}
+
+  instance
+    rawMonoidList : {A : Set} -> RawMonoid (List A)
+    rawMonoidList = record { nil = []; _++_ = List._++_ }
+
+    rawMonoidMaybe : {A : Set} {{m : RawMonoid A}} -> RawMonoid (Maybe A)
+    rawMonoidMaybe {A} = record { nil = nothing ; _++_ = catMaybe }
+      where
+        catMaybe : Maybe A -> Maybe A -> Maybe A
+        catMaybe nothing mb = mb
+        catMaybe ma nothing = ma
+        catMaybe (just a) (just b) = just (a ++ b)
+  ```
+
+  Moreover, each type of an instance must end in (something that reduces
+  to) a named type (e.g. a record, a datatype or a postulate). This
+  allows us to build a simple index structure
+
+  ```
+  data/record name  -->  possible instances
+  ```
+
+  that speeds up instance search.
+
+  Instance search takes into account all local bindings and all global
+  `instance` bindings and the search is recursive. For instance,
+  searching for
+
+  ```agda
+  ? : RawMonoid (Maybe (List A))
+  ```
+
+  will consider the candidates {`rawMonoidList`, `rawMonoidMaybe`}, fail to
+  unify the first one, succeeding with the second one
+
+  ```agda
+  ? = rawMonoidMaybe {A = List A} {{m = ?m}} : RawMonoid (Maybe (List A))
+  ```
+
+  and continue with goal
+
+  ```agda
+  ?m : RawMonoid (List A)
+  ```
+
+  This will then find
+
+  ```agda
+  ?m = rawMonoidList {A = A}
+  ```
+
+  and putting together we have the solution.
+
+  Be careful that there is no termination check for now, you can
+  easily make Agda loop by declaring the identity function as an
+  instance. But it shouldn’t be possible to make Agda loop by only
+  declaring structurally recursive instances (whatever that means).
+
+  Additionally:
+
+  - Uniqueness of instances is up to definitional equality (see
+    Issue [#899](https://github.com/agda/agda/issues/899)).
+
+  - Instances of the following form are allowed:
+
+    ```agda
+    EqSigma : {A : Set} {B : A → Set} {{EqA : Eq A}}
+              {{EqB : {a : A} → Eq (B a)}}
+              → Eq (Σ A B)
+    ```
+
+    When searching recursively for an instance of type `{a : A} → Eq
+    (B a)`, a lambda will automatically be introduced and instance
+    search will search for something of type `Eq (B a)` in the context
+    extended by `a : A`. When searching for an instance, the `a`
+    argument does not have to be implicit, but in the definition of
+    `EqSigma`, instance search will only be able to use `EqB` if `a`
+    is implicit.
+
+  - There is no longer any attempt to solve irrelevant metas by instance
+    search.
+
+  - Constructors of records and datatypes are automatically added to the
+    instance table.
+
+* You can now use `quote` in patterns.
+
+  For instance, here is a function that unquotes a (closed) natural
+  number term.
+
+  ```agda
+  unquoteNat : Term → Maybe Nat
+  unquoteNat (con (quote Nat.zero) [])            = just zero
+  unquoteNat (con (quote Nat.suc) (arg _ n ∷ [])) = fmap suc (unquoteNat n)
+  unquoteNat _                                    = nothing
+  ```
+
+* The builtin constructors `AGDATERMUNSUPPORTED` and
+  `AGDASORTUNSUPPORTED` are now translated to meta variables when
+  unquoting.
+
+* New syntactic sugar `tactic e` and `tactic e | e1 | .. | en`.
+
+  It desugars as follows and makes it less unwieldy to call
+  reflection-based tactics.
+
+  ```agda
+  tactic e                --> quoteGoal g in unquote (e g)
+  tactic e | e1 | .. | en --> quoteGoal g in unquote (e g) e1 .. en
+  ```
+
+  Note that in the second form the tactic function should generate a
+  function from a number of new subgoals to the original goal. The
+  type of `e` should be `Term -> Term` in both cases.
+
+* New reflection builtins for literals.
+
+  The term data type `AGDATERM` now needs an additional constructor
+   `AGDATERMLIT` taking a reflected literal defined as follows (with
+   appropriate builtin bindings for the types `Nat`, `Float`, etc).
+
+  ```agda
+  data Literal : Set where
+    nat    : Nat    → Literal
+    float  : Float  → Literal
+    char   : Char   → Literal
+    string : String → Literal
+    qname  : QName  → Literal
+
+  {-# BUILTIN AGDALITERAL   Literal #-}
+  {-# BUILTIN AGDALITNAT    nat     #-}
+  {-# BUILTIN AGDALITFLOAT  float   #-}
+  {-# BUILTIN AGDALITCHAR   char    #-}
+  {-# BUILTIN AGDALITSTRING string  #-}
+  {-# BUILTIN AGDALITQNAME  qname   #-}
+  ```
+
+  When quoting (`quoteGoal` or `quoteTerm`) literals will be mapped to
+  the `AGDATERMLIT` constructor. Previously natural number literals
+  were quoted to `suc`/`zero` application and other literals were
+  quoted to `AGDATERMUNSUPPORTED`.
+
+* New reflection builtins for function definitions.
+
+  `AGDAFUNDEF` should now map to a data type defined as follows
+
+  (with
+  ```agda
+  {-# BUILTIN QNAME       QName   #-}
+  {-# BUILTIN ARG         Arg     #-}
+  {-# BUILTIN AGDATERM    Term    #-}
+  {-# BUILTIN AGDATYPE    Type    #-}
+  {-# BUILTIN AGDALITERAL Literal #-}
+  ```
+  ).
+
+  ```agda
+  data Pattern : Set where
+    con    : QName → List (Arg Pattern) → Pattern
+    dot    : Pattern
+    var    : Pattern
+    lit    : Literal → Pattern
+    proj   : QName → Pattern
+    absurd : Pattern
+
+  {-# BUILTIN AGDAPATTERN   Pattern #-}
+  {-# BUILTIN AGDAPATCON    con     #-}
+  {-# BUILTIN AGDAPATDOT    dot     #-}
+  {-# BUILTIN AGDAPATVAR    var     #-}
+  {-# BUILTIN AGDAPATLIT    lit     #-}
+  {-# BUILTIN AGDAPATPROJ   proj    #-}
+  {-# BUILTIN AGDAPATABSURD absurd  #-}
+
+  data Clause : Set where
+    clause        : List (Arg Pattern) → Term → Clause
+    absurd-clause : List (Arg Pattern) → Clause
+
+  {-# BUILTIN AGDACLAUSE       Clause        #-}
+  {-# BUILTIN AGDACLAUSECLAUSE clause        #-}
+  {-# BUILTIN AGDACLAUSEABSURD absurd-clause #-}
+
+  data FunDef : Set where
+    fun-def : Type → List Clause → FunDef
+
+  {-# BUILTIN AGDAFUNDEF    FunDef  #-}
+  {-# BUILTIN AGDAFUNDEFCON fun-def #-}
+  ```
+
+* New reflection builtins for extended (pattern-matching) lambda.
+
+  The `AGDATERM` data type has been augmented with a constructor
+
+  ```agda
+  AGDATERMEXTLAM : List AGDACLAUSE → List (ARG AGDATERM) → AGDATERM
+  ```
+
+  Absurd lambdas (`λ ()`) are quoted to extended lambdas with an
+  absurd clause.
+
+* Unquoting declarations.
+
+  You can now define (recursive) functions by reflection using the new
+  `unquoteDecl` declaration
+
+  ```agda
+  unquoteDecl x = e
+  ```
+
+  Here e should have type `AGDAFUNDEF` and evaluate to a closed
+  value. This value is then spliced in as the definition of `x`. In
+  the body `e`, `x` has type `QNAME` which lets you splice in
+  recursive definitions.
+
+  Standard modifiers, such as fixity declarations, can be applied to `x` as
+  expected.
+
+* Quoted levels
+
+  Universe levels are now quoted properly instead of being quoted to
+  `AGDASORTUNSUPPORTED`. `Setω` still gets an unsupported sort,
+  however.
+
+* Module applicants can now be operator applications.
+
+  Example:
+
+  ```agda
+  postulate
+    [_] : A -> B
+
+  module M (b : B) where
+
+  module N (a : A) = M [ a ]
+  ```
+
+  [See Issue [#1245](https://github.com/agda/agda/issues/1245)]
+
+* Minor change in module application
+  semantics. [Issue [#892](https://github.com/agda/agda/issues/892)]
+
+  Previously re-exported functions were not redefined when
+  instantiating a module. For instance
+
+  ```agda
+  module A where f = ...
+  module B (X : Set) where
+    open A public
+  module C = B Nat
+  ```
+
+  In this example `C.f` would be an alias for `A.f`, so if both `A`
+  and `C` were opened `f` would not be ambiguous. However, this
+  behaviour is not correct when `A` and `B` share some module
+  parameters
+  (Issue [#892](https://github.com/agda/agda/issues/892)). To fix this
+  `C` now defines its own copy of `f` (which evaluates to `A.f`),
+  which means that opening `A` and `C` results in an ambiguous `f`.
+
+Type checking
+-------------
+
+* Recursive records need to be declared as either `inductive` or
+  `coinductive`.  `inductive` is no longer default for recursive
+  records. Examples:
+
+  ```agda
+  record _×_ (A B : Set) : Set where
+    constructor _,_
+    field
+      fst : A
+      snd : B
+
+  record Tree (A : Set) : Set where
+    inductive
+    constructor tree
+    field
+      elem     : A
+      subtrees : List (Tree A)
+
+  record Stream (A : Set) : Set where
+    coinductive
+    constructor _::_
+    field
+      head : A
+      tail : Stream A
+  ```
+
+  If you are using old-style (musical) coinduction, a record may have
+  to be declared as inductive, paradoxically.
+
+  ```agda
+  record Stream (A : Set) : Set where
+    inductive -- YES, THIS IS INTENDED !
+    constructor _∷_
+    field
+      head : A
+      tail : ∞ (Stream A)
+  ```
+
+  This is because the "coinduction" happens in the use of `∞` and not
+  in the use of `record`.
+
+Tools
+-----
+
+### Emacs mode
+
+* A new menu option `Display` can be used to display the version of
+  the running Agda process.
+
+### LaTeX-backend
+
+* New experimental option `references` has been added. When specified,
+  i.e.:
+
+  ```latex
+  \usepackage[references]{agda}
+  ```
+
+  a new command called `\AgdaRef` is provided, which lets you
+  reference previously typeset commands, e.g.:
+
+  Let us postulate `\AgdaRef{apa}`.
+
+  ```agda
+  \begin{code}
+  postulate
+    apa : Set
+  \end{code}
+  ```
+
+  Above `apa` will be typeset (highlighted) the same in the text as in
+  the code, provided that the LaTeX output is post-processed using
+  `src/data/postprocess-latex.pl`, e.g.:
+
+  ```
+  cp $(dirname $(dirname $(agda-mode locate)))/postprocess-latex.pl .
+  agda -i. --latex Example.lagda
+  cd latex/
+  perl ../postprocess-latex.pl Example.tex > Example.processed
+  mv Example.processed Example.tex
+  xelatex Example.tex
+  ```
+
+  Mix-fix and Unicode should work as expected (Unicode requires
+  XeLaTeX/LuaLaTeX), but there are limitations:
+
+  - Overloading identifiers should be avoided, if multiples exist
+    `\AgdaRef` will typeset according to the first it finds.
+
+  - Only the current module is used, should you need to reference
+    identifiers in other modules then you need to specify which other
+    module manually, i.e. `\AgdaRef[module]{identifier}`.
+
+Release notes for Agda 2 version 2.4.0.2
+========================================
+
+* The Agda input mode now supports alphabetical super and subscripts,
+  in addition to the numerical ones that were already present.
+  [Issue [#1240](https://github.com/agda/agda/issues/1240)]
+
+* New feature: Interactively split result.
+
+  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.
+
+  ```agda
+  test : {A B : Set} (a : A) (b : B) → A × B
+  test a b = ?
+  ```
+
+  Result-splitting `?` will produce the new clauses:
+
+  ```agda
+  proj₁ (test a b) = ?
+  proj₂ (test a b) = ?
+  ```
+
+  If hole is of function type ending in a record type, the necessary
+  pattern variables will be introduced before the split.  Thus, the
+  same result can be obtained by starting from:
+
+  ```agda
+  test : {A B : Set} (a : A) (b : B) → A × B
+  test = ?
+  ```
+
+* The so far undocumented `ETA` pragma now throws an error if applied to
+  definitions that are not records.
+
+  `ETA` can be used to force eta-equality at recursive record types,
+  for which eta is not enabled automatically by Agda.  Here is such an
+  example:
+
+  ```agda
+  mutual
+    data Colist (A : Set) : Set where
+      [] : Colist A
+      _∷_ : A → ∞Colist A → Colist A
+
+    record ∞Colist (A : Set) : Set where
+      coinductive
+      constructor delay
+      field       force : Colist A
+
+  open ∞Colist
+
+  {-# ETA ∞Colist #-}
+
+  test : {A : Set} (x : ∞Colist A) → x ≡ delay (force x)
+  test x = refl
+  ```
+
+  Note: Unsafe use of `ETA` can make Agda loop, e.g. by triggering
+  infinite eta expansion!
+
+* Bugs fixed (see [bug tracker](https://github.com/agda/agda/issues)):
+
+  [#1203](https://github.com/agda/agda/issues/1203)
+
+  [#1205](https://github.com/agda/agda/issues/1205)
+
+  [#1209](https://github.com/agda/agda/issues/1209)
+
+  [#1213](https://github.com/agda/agda/issues/1213)
+
+  [#1214](https://github.com/agda/agda/issues/1214)
+
+  [#1216](https://github.com/agda/agda/issues/1216)
+
+  [#1225](https://github.com/agda/agda/issues/1225)
+
+  [#1226](https://github.com/agda/agda/issues/1226)
+
+  [#1231](https://github.com/agda/agda/issues/1231)
+
+  [#1233](https://github.com/agda/agda/issues/1233)
+
+  [#1239](https://github.com/agda/agda/issues/1239)
+
+  [#1241](https://github.com/agda/agda/issues/1241)
+
+  [#1243](https://github.com/agda/agda/issues/1243)
+
+Release notes for Agda 2 version 2.4.0.1
+========================================
+
+* The option `--compile-no-main` has been renamed to `--no-main`.
+
+* `COMPILED_DATA` pragmas can now be given for records.
+
+* Various bug fixes.
+
+Release notes for Agda 2 version 2.4.0
+======================================
+
+Installation and infrastructure
+-------------------------------
+
+* A new module called `Agda.Primitive` has been introduced. This
+  module is available to all users, even if the standard library is
+  not used.  Currently the module contains level primitives and their
+  representation in Haskell when compiling with MAlonzo:
+
+  ```agda
+  infixl 6 _⊔_
+
+  postulate
+    Level : Set
+    lzero : Level
+    lsuc  : (ℓ : Level) → Level
+    _⊔_   : (ℓ₁ ℓ₂ : Level) → Level
+
+  {-# COMPILED_TYPE Level ()      #-}
+  {-# COMPILED lzero ()           #-}
+  {-# COMPILED lsuc  (\_ -> ())   #-}
+  {-# COMPILED _⊔_   (\_ _ -> ()) #-}
+
+  {-# BUILTIN LEVEL     Level  #-}
+  {-# BUILTIN LEVELZERO lzero  #-}
+  {-# BUILTIN LEVELSUC  lsuc   #-}
+  {-# BUILTIN LEVELMAX  _⊔_    #-}
+  ```
+
+  To bring these declarations into scope you can use a declaration
+  like the following one:
+
+  ```agda
+  open import Agda.Primitive using (Level; lzero; lsuc; _⊔_)
+  ```
+
+  The standard library reexports these primitives (using the names
+  `zero` and `suc` instead of `lzero` and `lsuc`) from the `Level`
+  module.
+
+  Existing developments using universe polymorphism might now trigger
+  the following error message:
+
+  ```
+  Duplicate binding for built-in thing LEVEL, previous binding to
+    .Agda.Primitive.Level
+  ```
+
+  To fix this problem, please remove the duplicate bindings.
+
+  Technical details (perhaps relevant to those who build Agda
+  packages):
+
+  The include path now always contains a directory
+  `<DATADIR>/lib/prim`, and this directory is supposed to contain a
+  subdirectory Agda containing a file `Primitive.agda`.
+
+  The standard location of `<DATADIR>` is system- and
+  installation-specific.  E.g., in a Cabal `--user` installation of
+  Agda-2.3.4 on a standard single-ghc Linux system it would be
+  `$HOME/.cabal/share/Agda-2.3.4` or something similar.
+
+  The location of the `<DATADIR>` directory can be configured at
+  compile-time using Cabal flags (`--datadir` and `--datasubdir`).
+  The location can also be set at run-time, using the `Agda_datadir`
+  environment variable.
+
+Pragmas and options
+-------------------
+
+* Pragma `NO_TERMINATION_CHECK` placed within a mutual block is now
+  applied to the whole mutual block (rather than being discarded
+  silently).  Adding to the uses 1.-4. outlined in the release notes
+  for 2.3.2 we allow:
+
+  3a. Skipping an old-style mutual block: Somewhere within `mutual`
+      block before a type signature or first function clause.
+
+   ```agda
+   mutual
+     {-# NO_TERMINATION_CHECK #-}
+     c : A
+     c = d
+
+     d : A
+     d = c
+   ```
+
+* New option `--no-pattern-matching`
+
+  Disables all forms of pattern matching (for the current file).
+  You can still import files that use pattern matching.
+
+* New option `-v profile:7`
+
+  Prints some stats on which phases Agda spends how much time.
+  (Number might not be very reliable, due to garbage collection
+  interruptions, and maybe due to laziness of Haskell.)
+
+* New option `--no-sized-types`
+
+  Option `--sized-types` is now default.  `--no-sized-types` will turn
+  off an extra (inexpensive) analysis on data types used for subtyping
+  of sized types.
+
+Language
+--------
+
+* Experimental feature: `quoteContext`
+
+  There is a new keyword `quoteContext` that gives users access to the
+  list of names in the current local context. For instance:
+
+  ```agda
+  open import Data.Nat
+  open import Data.List
+  open import Reflection
+
+  foo : ℕ → ℕ → ℕ
+  foo 0 m = 0
+  foo (suc n) m = quoteContext xs in ?
+  ```
+
+  In the remaining goal, the list `xs` will consist of two names, `n`
+  and `m`, corresponding to the two local variables. At the moment it
+  is not possible to access let bound variables (this feature may be
+  added in the future).
+
+* Experimental feature: Varying arity.
+  Function clauses may now have different arity, e.g.,
+
+  ```agda
+  Sum : ℕ → Set
+  Sum 0       = ℕ
+  Sum (suc n) = ℕ → Sum n
+
+  sum : (n : ℕ) → ℕ → Sum n
+  sum 0       acc   = acc
+  sum (suc n) acc m = sum n (m + acc)
+  ```
+
+  or,
+
+  ```agda
+  T : Bool → Set
+  T true  = Bool
+  T false = Bool → Bool
+
+  f : (b : Bool) → T b
+  f false true  = false
+  f false false = true
+  f true = true
+  ```
+
+  This feature is experimental.  Yet unsupported:
+  - Varying arity and `with`.
+
+  - Compilation of functions with varying arity to Haskell, JS, or Epic.
+
+* Experimental feature: copatterns.  (Activated with option `--copatterns`)
+
+  We can now define a record by explaining what happens if you project
+  the record.  For instance:
+
+  ```agda
+  {-# OPTIONS --copatterns #-}
+
+  record _×_ (A B : Set) : Set where
+    constructor _,_
+    field
+      fst : A
+      snd : B
+  open _×_
+
+  pair : {A B : Set} → A → B → A × B
+  fst (pair a b) = a
+  snd (pair a b) = b
+
+  swap : {A B : Set} → A × B → B × A
+  fst (swap p) = snd p
+  snd (swap p) = fst p
+
+  swap3 : {A B C : Set} → A × (B × C) → C × (B × A)
+  fst (swap3 t)       = snd (snd t)
+  fst (snd (swap3 t)) = fst (snd t)
+  snd (snd (swap3 t)) = fst t
+  ```
+
+  Taking a projection on the left hand side (lhs) is called a
+  projection pattern, applying to a pattern is called an application
+  pattern.  (Alternative terms: projection/application copattern.)
+
+  In the first example, the symbol `pair`, if applied to variable
+  patterns `a` and `b` and then projected via `fst`, reduces to
+  `a`. `pair` by itself does not reduce.
+
+  A typical application are coinductive records such as streams:
+
+  ```agda
+  record Stream (A : Set) : Set where
+    coinductive
+    field
+      head : A
+      tail : Stream A
+  open Stream
+
+  repeat : {A : Set} (a : A) -> Stream A
+  head (repeat a) = a
+  tail (repeat a) = repeat a
+  ```
+
+  Again, `repeat a` by itself will not reduce, but you can take a
+  projection (head or tail) and then it will reduce to the respective
+  rhs.  This way, we get the lazy reduction behavior necessary to
+  avoid looping corecursive programs.
+
+  Application patterns do not need to be trivial (i.e., variable
+  patterns), if we mix with projection patterns.  E.g., we can have
+
+  ```agda
+  nats : Nat -> Stream Nat
+  head (nats zero) = zero
+  tail (nats zero) = nats zero
+  head (nats (suc x)) = x
+  tail (nats (suc x)) = nats x
+  ```
+
+  Here is an example (not involving coinduction) which demostrates
+  records with fields of function type:
+
+  ```agda
+  -- The State monad
+
+  record State (S A : Set) : Set where
+    constructor state
+    field
+      runState : S → A × S
+  open State
+
+  -- The Monad type class
+
+  record Monad (M : Set → Set) : Set1 where
+    constructor monad
+    field
+      return : {A : Set}   → A → M A
+      _>>=_  : {A B : Set} → M A → (A → M B) → M B
+
+
+  -- State is an instance of Monad
+  -- Demonstrates the interleaving of projection and application patterns
+
+  stateMonad : {S : Set} → Monad (State S)
+  runState (Monad.return stateMonad a  ) s  = a , s
+  runState (Monad._>>=_  stateMonad m k) s₀ =
+    let a , s₁ = runState m s₀
+    in  runState (k a) s₁
+
+  module MonadLawsForState {S : Set} where
+
+    open Monad (stateMonad {S})
+
+    leftId : {A B : Set}(a : A)(k : A → State S B) →
+      (return a >>= k) ≡ k a
+    leftId a k = refl
+
+    rightId : {A B : Set}(m : State S A) →
+      (m >>= return) ≡ m
+    rightId m = refl
+
+    assoc : {A B C : 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
+  ```
+
+  Copatterns are yet experimental and the following does not work:
+
+  - Copatterns and `with` clauses.
+
+  - Compilation of copatterns to Haskell, JS, or Epic.
+
+  - Projections generated by
+
+    ```agda
+    open R {{...}}
+    ```
+
+    are not handled properly on lhss yet.
+
+  - Conversion checking is slower in the presence of copatterns, since
+    stuck definitions of record type do no longer count as neutral,
+    since they can become unstuck by applying a projection. Thus,
+    comparing two neutrals currently requires comparing all they
+    projections, which repeats a lot of work.
+
+* Top-level module no longer required.
+
+  The top-level module can be omitted from an Agda file. The module
+  name is then inferred from the file name by dropping the path and
+  the `.agda` extension. So, a module defined in `/A/B/C.agda` would get
+  the name `C`.
+
+  You can also suppress only the module name of the top-level module
+  by writing
+
+  ```agda
+  module _ where
+  ```
+
+  This works also for parameterised modules.
+
+* Module parameters are now always hidden arguments in projections.
+  For instance:
+
+  ```agda
+  module M (A : Set) where
+
+    record Prod (B : Set) : Set where
+      constructor _,_
+      field
+        fst : A
+        snd : B
+    open Prod public
+
+  open M
+  ```
+
+  Now, the types of `fst` and `snd` are
+
+  ```agda
+  fst : {A : Set}{B : Set} → Prod A B → A
+  snd : {A : Set}{B : Set} → Prod A B → B
+  ```
+
+  Until 2.3.2, they were
+
+  ```agda
+  fst : (A : Set){B : Set} → Prod A B → A
+  snd : (A : Set){B : Set} → Prod A B → B
+  ```
+
+  This change is a step towards symmetry of constructors and projections.
+  (Constructors always took the module parameters as hidden arguments).
+
+* Telescoping lets: Local bindings are now accepted in telescopes
+  of modules, function types, and lambda-abstractions.
+
+  The syntax of telescopes as been extended to support `let`:
+
+  ```agda
+  id : (let ★ = Set) (A : ★) → A → A
+  id A x = x
+  ```
+
+  In particular one can now `open` modules inside telescopes:
+
+  ```agda
+  module Star where
+    ★ : Set₁
+    ★ = Set
+
+
+  module MEndo (let open Star) (A : ★) where
+    Endo : ★
+    Endo = A → A
+  ```
+
+  Finally a shortcut is provided for opening modules:
+
+  ```agda
+  module N (open Star) (A : ★) (open MEndo A) (f : Endo) where
+    ...
+  ```
+
+  The semantics of the latter is
+
+  ```agda
+  module _ where
+    open Star
+    module _ (A : ★) where
+      open MEndo A
+      module N (f : Endo) where
+        ...
+  ```
+
+  The semantics of telescoping lets in function types and lambda
+  abstractions is just expanding them into ordinary lets.
+
+* More liberal left-hand sides in lets
+  [Issue [#1028](https://github.com/agda/agda/issues/1028)]:
+
+  You can now write left-hand sides with arguments also for let
+  bindings without a type signature. For instance,
+
+  ```agda
+  let f x = suc x in f zero
+  ```
+
+  Let bound functions still can't do pattern matching though.
+
+* Ambiguous names in patterns are now optimistically resolved in favor
+  of constructors. [Issue [#822](https://github.com/agda/agda/issues/822)]
+  In particular, the following succeeds now:
+
+  ```agda
+  module M where
+
+    data D : Set₁ where
+      [_] : Set → D
+
+  postulate [_] : Set → Set
+
+  open M
+
+  Foo : _ → Set
+  Foo [ A ] = A
+  ```
+
+* Anonymous `where`-modules are opened
+  public. [Issue [#848](https://github.com/agda/agda/issues/848)]
+
+  ```
+  <clauses>
+  f args = rhs
+    module _ telescope where
+      body
+  <more clauses>
+  ```
+
+  means the following (not proper Agda code, since you cannot put a
+  module in-between clauses)
+
+  ```
+  <clauses>
+  module _ {arg-telescope} telescope where
+    body
+
+  f args = rhs
+  <more clauses>
+  ```
+
+  Example:
+
+  ```agda
+  A : Set1
+  A = B module _ where
+    B : Set1
+    B = Set
+
+  C : Set1
+  C = B
+  ```
+
+* Builtin `ZERO` and `SUC` have been merged with `NATURAL`.
+
+  When binding the `NATURAL` builtin, `ZERO` and `SUC` are bound to
+  the appropriate constructors automatically. This means that instead
+  of writing
+
+  ```agda
+  {-# BUILTIN NATURAL Nat #-}
+  {-# BUILTIN ZERO zero #-}
+  {-# BUILTIN SUC suc #-}
+  ```
+
+  you just write
+
+  ```agda
+  {-# BUILTIN NATURAL Nat #-}
+  ```
+
+* Pattern synonym can now have implicit
+  arguments. [Issue [#860](https://github.com/agda/agda/issues/860)]
+
+  For example,
+
+  ```agda
+  pattern tail=_ {x} xs = x ∷ xs
+
+  len : ∀ {A} → List A → Nat
+  len []         = 0
+  len (tail= xs) = 1 + len xs
+  ```
+
+* Syntax declarations can now have implicit
+  arguments. [Issue [#400](https://github.com/agda/agda/issues/400)]
+
+  For example
+
+  ```agda
+  id : ∀ {a}{A : Set a} -> A -> A
+  id x = x
+
+  syntax id {A} x = x ∈ A
+  ```
+
+* Minor syntax changes
+
+  - `-}` is now parsed as end-comment even if no comment was begun. As
+    a consequence, the following definition gives a parse error
+
+    ```agda
+    f : {A- : Set} -> Set
+    f {A-} = A-
+    ```
+
+    because Agda now sees `ID(f) LBRACE ID(A) END-COMMENT`, and no
+    longer `ID(f) LBRACE ID(A-) RBRACE`.
+
+    The rational is that the previous lexing was to context-sensitive,
+    attempting to comment-out `f` using `{-` and `-}` lead to a parse
+    error.
+
+  - Fixities (binding strengths) can now be negative numbers as
+    well. [Issue [#1109](https://github.com/agda/agda/issues/1109)]
+
+    ```agda
+    infix -1 _myop_
+    ```
+
+  - Postulates are now allowed in mutual
+    blocks. [Issue [#977](https://github.com/agda/agda/issues/977)]
+
+  - Empty where blocks are now
+    allowed. [Issue [#947](https://github.com/agda/agda/issues/947)]
+
+  - Pattern synonyms are now allowed in parameterised
+    modules. [Issue [#941](https://github.com/agda/agda/issues/941)]
+
+  - Empty hiding and renaming lists in module directives are now allowed.
+
+  - Module directives `using`, `hiding`, `renaming` and `public` can
+    now appear in arbitrary order. Multiple
+    `using`/`hiding`/`renaming` directives are allowed, but you still
+    cannot have both using and `hiding` (because that doesn't make
+    sense). [Issue [#493](https://github.com/agda/agda/issues/493)]
+
+Goal and error display
+----------------------
+
+* The error message `Refuse to construct infinite term` has been
+  removed, instead one gets unsolved meta variables.  Reason: the
+  error was thrown over-eagerly.
+  [Issue [#795](https://github.com/agda/agda/issues/795)]
+
+* If an interactive case split fails with message
+
+  ```
+    Since goal is solved, further case distinction is not supported;
+    try `Solve constraints' instead
+  ```
+
+  then the associated interaction meta is assigned to a solution.
+  Press `C-c C-=` (Show constraints) to view the solution and `C-c
+  C-s` (Solve constraints) to apply it.
+  [Issue [#289](https://github.com/agda/agda/issues/289)]
+
+Type checking
+-------------
+
+* [ Issue [#376](https://github.com/agda/agda/issues/376) ]
+  Implemented expansion of bound record variables during meta
+  assignment.  Now Agda can solve for metas X that are applied to
+  projected variables, e.g.:
+
+  ```agda
+  X (fst z) (snd z) = z
+
+  X (fst z)         = fst z
+  ```
+
+  Technically, this is realized by substituting `(x , y)` for `z` with fresh
+  bound variables `x` and `y`.  Here the full code for the examples:
+
+  ```agda
+  record Sigma (A : Set)(B : A -> Set) : Set where
+    constructor _,_
+    field
+      fst : A
+      snd : B fst
+  open Sigma
+
+  test : (A : Set) (B : A -> Set) ->
+    let X : (x : A) (y : B x) -> Sigma A B
+        X = _
+    in  (z : Sigma A B) -> X (fst z) (snd z) ≡ z
+  test A B z = refl
+
+  test' : (A : Set) (B : A -> Set) ->
+    let X : A -> A
+        X = _
+    in  (z : Sigma A B) -> X (fst z) ≡ fst z
+  test' A B z = refl
+  ```
+
+  The fresh bound variables are named `fst(z)` and `snd(z)` and can appear
+  in error messages, e.g.:
+
+  ```agda
+  fail : (A : Set) (B : A -> Set) ->
+    let X : A -> Sigma A B
+        X = _
+    in  (z : Sigma A B) -> X (fst z) ≡ z
+  fail A B z = refl
+  ```
+
+  results in error:
+
+  ```
+  Cannot instantiate the metavariable _7 to solution fst(z) , snd(z)
+  since it contains the variable snd(z) which is not in scope of the
+  metavariable or irrelevant in the metavariable but relevant in the
+  solution
+  when checking that the expression refl has type _7 A B (fst z) ≡ z
+  ```
+
+* Dependent record types and definitions by copatterns require
+  reduction with previous function clauses while checking the current
+  clause. [Issue [#907](https://github.com/agda/agda/issues/907)]
+
+  For a simple example, consider
+
+  ```agda
+  test : ∀ {A} → Σ Nat λ n → Vec A n
+  proj₁ test = zero
+  proj₂ test = []
+  ```
+
+  For the second clause, the lhs and rhs are typed as
+
+  ```agda
+  proj₂ test : Vec A (proj₁ test)
+  []         : Vec A zero
+  ```
+
+  In order for these types to match, we have to reduce the lhs type
+  with the first function clause.
+
+  Note that termination checking comes after type checking, so be
+  careful to avoid non-termination!  Otherwise, the type checker
+  might get into an infinite loop.
+
+* The implementation of the primitive `primTrustMe` has changed.  It
+  now only reduces to `REFL` if the two arguments `x` and `y` have the
+  same computational normal form.  Before, it reduced when `x` and `y`
+  were definitionally equal, which included type-directed equality
+  laws such as eta-equality.  Yet because reduction is untyped,
+  calling conversion from reduction lead to Agda crashes
+  [Issue [#882](https://github.com/agda/agda/issues/882)].
+
+  The amended description of `primTrustMe` is (cf. release notes
+  for 2.2.6):
+
+  ```agda
+  primTrustMe : {A : Set} {x y : A} → x ≡ y
+  ```
+
+  Here `_≡_` is the builtin equality (see BUILTIN hooks for equality,
+  above).
+
+  If `x` and `y` have the same computational normal form, then
+  `primTrustMe {x = x} {y = y}` reduces to `refl`.
+
+  A note on `primTrustMe`'s runtime behavior: The MAlonzo compiler
+  replaces all uses of `primTrustMe` with the `REFL` builtin, without
+  any check for definitional equality. Incorrect uses of `primTrustMe`
+  can potentially lead to segfaults or similar problems of the
+  compiled code.
+
+* Implicit patterns of record type are now only eta-expanded if there
+  is a record constructor.
+  [Issues [#473](https://github.com/agda/agda/issues/473),
+  [#635](https://github.com/agda/agda/issues/635)]
+
+  ```agda
+  data D : Set where
+    d : D
+
+  data P : D → Set where
+    p : P d
+
+  record Rc : Set where
+    constructor c
+    field f : D
+
+  works : {r : Rc} → P (Rc.f r) → Set
+  works p = D
+  ```
+
+  This works since the implicit pattern `r` is eta-expanded to `c x`
+  which allows the type of `p` to reduce to `P x` and `x` to be
+  unified with `d`. The corresponding explicit version is:
+
+  ```agda
+  works' : (r : Rc) → P (Rc.f r) → Set
+  works' (c .d) p = D
+  ```
+
+  However, if the record constructor is removed, the same example will
+  fail:
+
+  ```agda
+  record R : Set where
+    field f : D
+
+  fails : {r : R} → P (R.f r) → Set
+  fails p = D
+
+  -- d != R.f r of type D
+  -- when checking that the pattern p has type P (R.f r)
+  ```
+
+  The error is justified since there is no pattern we could write down
+  for `r`.  It would have to look like
+
+  ```agda
+  record { f = .d }
+  ```
+
+  but anonymous record patterns are not part of the language.
+
+* Absurd lambdas at different source locations are no longer
+  different. [Issue [#857](https://github.com/agda/agda/issues/857)]
+  In particular, the following code type-checks now:
+
+  ```agda
+  absurd-equality : _≡_ {A = ⊥ → ⊥} (λ()) λ()
+  absurd-equality = refl
+  ```
+
+  Which is a good thing!
+
+* Printing of named implicit function types.
+
+  When printing terms in a context with bound variables Agda renames
+  new bindings to avoid clashes with the previously bound names. For
+  instance, if `A` is in scope, the type `(A : Set) → A` is printed as
+  `(A₁ : Set) → A₁`. However, for implicit function types the name of
+  the binding matters, since it can be used when giving implicit
+  arguments.
+
+  For this situation, the following new syntax has been introduced:
+  `{x = y : A} → B` is an implicit function type whose bound variable
+  (in scope in `B`) is `y`, but where the name of the argument is `x`
+  for the purposes of giving it explicitly. For instance, with `A` in
+  scope, the type `{A : Set} → A` is now printed as `{A = A₁ : Set} →
+  A₁`.
+
+  This syntax is only used when printing and is currently not being parsed.
+
+* Changed the semantics of `--without-K`.
+  [Issue [#712](https://github.com/agda/agda/issues/712),
+  Issue [#865](https://github.com/agda/agda/issues/865),
+  Issue [#1025](https://github.com/agda/agda/issues/1025)]
+
+  New specification of `--without-K`:
+
+  When `--without-K` is enabled, the unification of indices for
+  pattern matching is restricted in two ways:
+
+  1. Reflexive equations of the form `x == x` are no longer solved,
+     instead Agda gives an error when such an equation is encountered.
+
+  2. When unifying two same-headed constructor forms `c us` and `c vs`
+     of type `D pars ixs`, the datatype indices `ixs` (but not the
+     parameters) have to be *self-unifiable*, i.e. unification of
+     `ixs` with itself should succeed positively. This is a nontrivial
+     requirement because of point 1.
+
+  Examples:
+
+  - The J rule is accepted.
+
+    ```agda
+    J : {A : Set} (P : {x y : A} → x ≡ y → Set) →
+        (∀ x → P (refl x)) →
+        ∀ {x y} (x≡y : x ≡ y) → P x≡y
+    J P p (refl x) = p x
+    ```agda
+
+    This definition is accepted since unification of `x` with `y`
+    doesn't require deletion or injectivity.
+
+  - The K rule is rejected.
+
+    ```agda
+    K : {A : Set} (P : {x : A} → x ≡ x → Set) →
+        (∀ x → P (refl {x = x})) →
+       ∀ {x} (x≡x : x ≡ x) → P x≡x
+    K P p refl = p _
+    ```
+
+    Definition is rejected with the following error:
+
+    ```
+    Cannot eliminate reflexive equation x = x of type A because K has
+    been disabled.
+    when checking that the pattern refl has type x ≡ x
+    ```
+
+  - Symmetry of the new criterion.
+
+    ```agda
+    test₁ : {k l m : ℕ} → k + l ≡ m → ℕ
+    test₁ refl = zero
+
+    test₂ : {k l m : ℕ} → k ≡ l + m → ℕ
+    test₂ refl = zero
+    ```
+
+    Both versions are now accepted (previously only the first one was).
+
+  - Handling of parameters.
+
+    ```agda
+    cons-injective : {A : Set} (x y : A) → (x ∷ []) ≡ (y ∷ []) → x ≡ y
+    cons-injective x .x refl = refl
+    ```
+
+    Parameters are not unified, so they are ignored by the new criterion.
+
+  - A larger example: antisymmetry of ≤.
+
+    ```agda
+    data _≤_ : ℕ → ℕ → Set where
+      lz : (n : ℕ) → zero ≤ n
+      ls : (m n : ℕ) → m ≤ n → suc m ≤ suc n
+
+    ≤-antisym : (m n : ℕ) → m ≤ n → n ≤ m → m ≡ n
+    ≤-antisym .zero    .zero    (lz .zero) (lz .zero)   = refl
+    ≤-antisym .(suc m) .(suc n) (ls m n p) (ls .n .m q) =
+                 cong suc (≤-antisym m n p q)
+    ```
+
+  - [ Issue [#1025](https://github.com/agda/agda/issues/1025) ]
+
+    ```agda
+    postulate mySpace : Set
+    postulate myPoint : mySpace
+
+    data Foo : myPoint ≡ myPoint → Set where
+      foo : Foo refl
+
+    test : (i : foo ≡ foo) → i ≡ refl
+    test refl = {!!}
+    ```
+
+    When applying injectivity to the equation `foo ≡ foo` of type `Foo
+    refl`, it is checked that the index `refl` of type `myPoint ≡
+    myPoint` is self-unifiable. The equation `refl ≡ refl` again
+    requires injectivity, so now the index `myPoint` is checked for
+    self-unifiability, hence the error:
+
+    ```
+    Cannot eliminate reflexive equation myPoint = myPoint of type
+    mySpace because K has been disabled.
+    when checking that the pattern refl has type foo ≡ foo
+    ```
+
+Termination checking
+--------------------
+
+* A buggy facility coined "matrix-shaped orders" that supported
+  uncurried functions (which take tuples of arguments instead of one
+  argument after another) has been removed from the termination
+  checker. [Issue [#787](https://github.com/agda/agda/issues/787)]
+
+* Definitions which fail the termination checker are not unfolded any
+  longer to avoid loops or stack overflows in Agda.  However, the
+  termination checker for a mutual block is only invoked after
+  type-checking, so there can still be loops if you define a
+  non-terminating function.  But termination checking now happens
+  before the other supplementary checks: positivity, polarity,
+  injectivity and projection-likeness.  Note that with the pragma `{-#
+  NO_TERMINATION_CHECK #-}` you can make Agda treat any function as
+  terminating.
+
+* Termination checking of functions defined by `with` has been improved.
+
+  Cases which previously required `--termination-depth` to pass the
+  termination checker (due to use of `with`) no longer need the
+  flag. For example
+
+  ```agda
+  merge : List A → List A → List A
+  merge [] ys = ys
+  merge xs [] = xs
+  merge (x ∷ xs) (y ∷ ys) with x ≤ y
+  merge (x ∷ xs) (y ∷ ys)    | false = y ∷ merge (x ∷ xs) ys
+  merge (x ∷ xs) (y ∷ ys)    | true  = x ∷ merge xs (y ∷ ys)
+  ```
+
+  This failed to termination check previously, since the `with`
+  expands to an auxiliary function `merge-aux`:
+
+  ```agda
+  merge-aux x y xs ys false = y ∷ merge (x ∷ xs) ys
+  merge-aux x y xs ys true  = x ∷ merge xs (y ∷ ys)
+  ```
+
+  This function makes a call to `merge` in which the size of one of
+  the arguments is increasing. To make this pass the termination
+  checker now inlines the definition of `merge-aux` before checking,
+  thus effectively termination checking the original source program.
+
+  As a result of this transformation doing `with` on a variable no longer
+  preserves termination. For instance, this does not termination check:
+
+  ```agda
+  bad : Nat → Nat
+  bad n with n
+  ... | zero  = zero
+  ... | suc m = bad m
+  ```
+
+* The performance of the termination checker has been improved.  For
+  higher `--termination-depth` the improvement is significant.  While
+  the default `--termination-depth` is still 1, checking with higher
+  `--termination-depth` should now be feasible.
+
+Compiler backends
+-----------------
+
+* The MAlonzo compiler backend now has support for compiling modules
+  that are not full programs (i.e. don't have a main function). The
+  goal is that you can write part of a program in Agda and the rest in
+  Haskell, and invoke the Agda functions from the Haskell code. The
+  following features were added for this reason:
+
+  - A new command-line option `--compile-no-main`: the command
+
+    ```
+    agda --compile-no-main Test.agda
+    ```
+
+    will compile `Test.agda` and all its dependencies to Haskell and
+    compile the resulting Haskell files with `--make`, but (unlike
+    `--compile`) not tell GHC to treat `Test.hs` as the main
+    module. This type of compilation can be invoked from Emacs by
+    customizing the `agda2-backend` variable to value `MAlonzoNoMain` and
+    then calling `C-c C-x C-c` as before.
+
+  - A new pragma `COMPILED_EXPORT` was added as part of the MAlonzo
+    FFI. If we have an Agda file containing the following:
+
+    ```agda
+     module A.B where
+
+     test : SomeType
+     test = someImplementation
+
+     {-# COMPILED_EXPORT test someHaskellId #-}
+    ```
+
+    then test will be compiled to a Haskell function called
+    `someHaskellId` in module `MAlonzo.Code.A.B` that can be invoked
+    from other Haskell code. Its type will be translated according to
+    the normal MAlonzo rules.
+
+Tools
+-----
+
+### Emacs mode
+
+* A new goal command `Helper Function Type` (`C-c C-h`) has been added.
+
+  If you write an application of an undefined function in a goal, the
+  `Helper Function Type` command will print the type that the function
+  needs to have in order for it to fit the goal. The type is also
+  added to the Emacs kill-ring and can be pasted into the buffer using
+  `C-y`.
+
+  The application must be of the form `f args` where `f` is the name of the
+  helper function you want to create. The arguments can use all the normal
+  features like named implicits or instance arguments.
+
+  Example:
+
+  Here's a start on a naive reverse on vectors:
+
+  ```agda
+  reverse : ∀ {A n} → Vec A n → Vec A n
+  reverse [] = []
+  reverse (x ∷ xs) = {!snoc (reverse xs) x!}
+  ```
+
+  Calling `C-c C-h` in the goal prints
+
+  ```agda
+  snoc : ∀ {A} {n} → Vec A n → A → Vec A (suc n)
+  ```
+
+* A new command `Explain why a particular name is in scope` (`C-c
+  C-w`) has been added.
+  [Issue [#207](https://github.com/agda/agda/issues/207)]
+
+  This command can be called from a goal or from the top-level and will as the
+  name suggests explain why a particular name is in scope.
+
+  For each definition or module that the given name can refer to a trace is
+  printed of all open statements and module applications leading back to the
+  original definition of the name.
+
+  For example, given
+
+  ```agda
+  module A (X : Set₁) where
+    data Foo : Set where
+      mkFoo : Foo
+  module B (Y : Set₁) where
+    open A Y public
+  module C = B Set
+  open C
+  ```
+
+  Calling `C-c C-w` on `mkFoo` at the top-level prints
+
+  ```
+  mkFoo is in scope as
+  * a constructor Issue207.C._.Foo.mkFoo brought into scope by
+    - the opening of C at Issue207.agda:13,6-7
+    - the application of B at Issue207.agda:11,12-13
+    - the application of A at Issue207.agda:9,8-9
+    - its definition at Issue207.agda:6,5-10
+  ```
+
+  This command is useful if Agda complains about an ambiguous name and
+  you need to figure out how to hide the undesired interpretations.
+
+* Improvements to the `make case` command (`C-c C-c`)
+
+  - One can now also split on hidden variables, using the name
+    (starting with `.`) with which they are printed.  Use `C-c C-`, to
+    see all variables in context.
+
+  - Concerning the printing of generated clauses:
+
+    * Uses named implicit arguments to improve readability.
+
+    * Picks explicit occurrences over implicit ones when there is a
+      choice of binding site for a variable.
+
+    * Avoids binding variables in implicit positions by replacing dot
+      patterns that uses them by wildcards (`._`).
+
+* Key bindings for lots of "mathematical" characters (examples: 𝐴𝑨𝒜𝓐𝔄)
+  have been added to the Agda input method.  Example: type
+  `\MiA\MIA\McA\MCA\MfA` to get 𝐴𝑨𝒜𝓐𝔄.
+
+  Note: `\McB` does not exist in Unicode (as well as others in that style),
+  but the `\MC` (bold) alphabet is complete.
+
+* Key bindings for "blackboard bold" B (𝔹) and 0-9 (𝟘-𝟡) have been
+  added to the Agda input method (`\bb` and `\b[0-9]`).
+
+* Key bindings for controlling simplification/normalisation:
+
+  [TODO: Simplification should be explained somewhere.]
+
+  Commands like `Goal type and context` (`C-c C-,`) could previously
+  be invoked in two ways. By default the output was normalised, but if
+  a prefix argument was used (for instance via `C-u C-c C-,`), then no
+  explicit normalisation was performed. Now there are three options:
+
+  - By default (`C-c C-,`) the output is simplified.
+
+  - If `C-u` is used exactly once (`C-u C-c C-,`), then the result is
+    neither (explicitly) normalised nor simplified.
+
+  - If `C-u` is used twice (`C-u C-u C-c C-,`), then the result is
+    normalised.
+
+  [TODO: As part of the release of Agda 2.3.4 the key binding page on
+  the wiki should be updated.]
+
+### LaTeX-backend
+
+* Two new color scheme options were added to `agda.sty`:
+
+  `\usepackage[bw]{agda}`, which highlights in black and white;
+  `\usepackage[conor]{agda}`, which highlights using Conor's colors.
+
+  The default (no options passed) is to use the standard colors.
+
+* If `agda.sty` cannot be found by the LateX environment, it is now
+  copied into the LateX output directory (`latex` by default) instead
+  of the working directory. This means that the commands needed to
+  produce a PDF now is
+
+  ```
+  agda --latex -i . <file>.lagda
+  cd latex
+  pdflatex <file>.tex
+  ```
+
+* The LaTeX-backend has been made more tool agnostic, in particular
+  XeLaTeX and LuaLaTeX should now work. Here is a small example
+  (`test/LaTeXAndHTML/succeed/UnicodeInput.lagda`):
+
+  ```latex
+  \documentclass{article}
+  \usepackage{agda}
+  \begin{document}
+
+  \begin{code}
+  data αβγδεζθικλμνξρστυφχψω : Set₁ where
+
+  postulate
+    →⇒⇛⇉⇄↦⇨↠⇀⇁ : Set
+  \end{code}
+
+  \[
+  ∀X [ ∅ ∉ X ⇒ ∃f:X ⟶  ⋃ X\ ∀A ∈ X (f(A) ∈ A) ]
+  \]
+  \end{document}
+  ```
+
+  Compiled as follows, it should produce a nice looking PDF (tested with
+  TeX Live 2012):
+
+  ```
+  agda --latex <file>.lagda
+  cd latex
+  xelatex <file>.tex (or lualatex <file>.tex)
+  ```
+
+  If symbols are missing or XeLaTeX/LuaLaTeX complains about the font
+  missing, try setting a different font using:
+
+  ```latex
+  \setmathfont{<math-font>}
+  ```
+
+  Use the `fc-list` tool to list available fonts.
+
+* Add experimental support for hyperlinks to identifiers
+
+  If the `hyperref` LateX package is loaded before the Agda package
+  and the links option is passed to the Agda package, then the Agda
+  package provides a function called `\AgdaTarget`. Identifiers which
+  have been declared targets, by the user, will become clickable
+  hyperlinks in the rest of the document. Here is a small example
+  (`test/LaTeXAndHTML/succeed/Links.lagda`):
+
+  ```latex
+  \documentclass{article}
+  \usepackage{hyperref}
+  \usepackage[links]{agda}
+  \begin{document}
+
+  \AgdaTarget{ℕ}
+  \AgdaTarget{zero}
+  \begin{code}
+  data ℕ : Set where
+    zero  : ℕ
+    suc   : ℕ → ℕ
+  \end{code}
+
+  See next page for how to define \AgdaFunction{two} (doesn't turn into a
+  link because the target hasn't been defined yet). We could do it
+  manually though; \hyperlink{two}{\AgdaDatatype{two}}.
+
+  \newpage
+
+  \AgdaTarget{two}
+  \hypertarget{two}{}
+  \begin{code}
+  two : ℕ
+  two = suc (suc zero)
+  \end{code}
+
+  \AgdaInductiveConstructor{zero} is of type
+  \AgdaDatatype{ℕ}. \AgdaInductiveConstructor{suc} has not been defined to
+  be a target so it doesn't turn into a link.
+
+  \newpage
+
+  Now that the target for \AgdaFunction{two} has been defined the link
+  works automatically.
+
+  \begin{code}
+  data Bool : Set where
+    true false : Bool
+  \end{code}
+
+  The AgdaTarget command takes a list as input, enabling several
+  targets to be specified as follows:
+
+  \AgdaTarget{if, then, else, if\_then\_else\_}
+  \begin{code}
+  if_then_else_ : {A : Set} → Bool → A → A → A
+  if true  then t else f = t
+  if false then t else f = f
+  \end{code}
+
+  \newpage
+
+  Mixfix identifier need their underscores escaped:
+  \AgdaFunction{if\_then\_else\_}.
+
+  \end{document}
+  ```
+
+  The boarders around the links can be suppressed using hyperref's
+  hidelinks option:
+
+  ```latex
+    \usepackage[hidelinks]{hyperref}
+  ```
+
+  Note that the current approach to links does not keep track of scoping
+  or types, and hence overloaded names might create links which point to
+  the wrong place. Therefore it is recommended to not overload names
+  when using the links option at the moment, this might get fixed in the
+  future.
+
+Release notes for Agda 2 version 2.3.2.2
+========================================
+
+* Fixed a bug that sometimes made it tricky to use the Emacs mode on
+  Windows [Issue [#757](https://github.com/agda/agda/issues/757)].
+
+* Made Agda build with newer versions of some libraries.
+
+* Fixed a bug that caused ambiguous parse error messages
+  [Issue [#147](https://github.com/agda/agda/issues/147)].
+
+Release notes for Agda 2 version 2.3.2.1
+========================================
+
+Installation
+------------
+
+* Made it possible to compile Agda with more recent versions of
+  hashable, QuickCheck and Win32.
+
+* Excluded mtl-2.1.
+
+Type checking
+-------------
+
+* Fixed bug in the termination checker
+  (Issue [#754](https://github.com/agda/agda/issues/754)).
+
+Release notes for Agda 2 version 2.3.2
+======================================
+
+Installation
+------------
+
+* The Agda-executable package has been removed.
+
+  The executable is now provided as part of the Agda package.
+
+* The Emacs mode no longer depends on haskell-mode or GHCi.
+
+* Compilation of Emacs mode Lisp files.
+
+  You can now compile the Emacs mode Lisp files by running `agda-mode
+  compile`. This command is run by `make install`.
+
+  Compilation can, in some cases, give a noticeable speedup.
+
+  WARNING: If you reinstall the Agda mode without recompiling the
+  Emacs Lisp files, then Emacs may continue using the old, compiled
+  files.
+
+Pragmas and options
+-------------------
+
+* The `--without-K` check now reconstructs constructor parameters.
+
+  New specification of `--without-K`:
+
+  If the flag is activated, then Agda only accepts certain
+  case-splits. If the type of the variable to be split is
+  `D pars ixs`, where `D` is a data (or record) type, `pars` stands
+  for the parameters, and `ixs` the indices, then the following
+  requirements must be satisfied:
+
+  - The indices `ixs` must be applications of constructors (or
+    literals) to distinct variables. Constructors are usually not
+    applied to parameters, but for the purposes of this check
+    constructor parameters are treated as other arguments.
+
+  - These distinct variables must not be free in pars.
+
+* Irrelevant arguments are printed as `_` by default now.  To turn on
+  printing of irrelevant arguments, use option
+
+  ```
+  --show-irrelevant
+  ```
+
+* New: Pragma `NO_TERMINATION_CHECK` to switch off termination checker
+  for individual function definitions and mutual blocks.
+
+  The pragma must precede a function definition or a mutual block.
+  Examples (see `test/Succeed/NoTerminationCheck.agda`):
+
+  1. Skipping a single definition: before type signature.
+
+     ```agda
+     {-# NO_TERMINATION_CHECK #-}
+     a : A
+     a = a
+     ```
+
+  2. Skipping a single definition: before first clause.
+
+     ```agda
+     b : A
+     {-# NO_TERMINATION_CHECK #-}
+     b = b
+     ```
+
+  3. Skipping an old-style mutual block: Before `mutual` keyword.
+
+     ```agda
+     {-# NO_TERMINATION_CHECK #-}
+     mutual
+       c : A
+       c = d
+
+       d : A
+       d = c
+     ```
+
+  4. Skipping a new-style mutual block: Anywhere before a type
+     signature or first function clause in the block
+
+     ```agda
+     i : A
+     j : A
+
+     i = j
+     {-# NO_TERMINATION_CHECK #-}
+     j = i
+     ```
+
+  The pragma cannot be used in `--safe` mode.
+
+Language
+--------
+
+* Let binding record patterns
+
+  ```agda
+  record _×_ (A B : Set) : Set where
+    constructor _,_
+    field
+      fst : A
+      snd : B
+  open _×_
+
+  let (x , (y , z)) = t
+  in  u
+  ```
+
+  will now be interpreted as
+
+  ```agda
+  let x = fst t
+      y = fst (snd t)
+      z = snd (snd t)
+  in  u
+  ```
+
+  Note that the type of `t` needs to be inferable. If you need to
+  provide a type signature, you can write the following:
+
+  ```agda
+  let a : ...
+      a = t
+      (x , (y , z)) = a
+  in  u
+  ```
+
+* Pattern synonyms
+
+  A pattern synonym is a declaration that can be used on the left hand
+  side (when pattern matching) as well as the right hand side (in
+  expressions). For example:
+
+  ```agda
+  pattern z    = zero
+  pattern ss x = suc (suc x)
+
+  f : ℕ -> ℕ
+  f z       = z
+  f (suc z) = ss z
+  f (ss n)  = n
+  ```
+
+  Pattern synonyms are implemented by substitution on the abstract
+  syntax, so definitions are scope-checked but not type-checked. They
+  are particularly useful for universe constructions.
+
+* Qualified mixfix operators
+
+  It is now possible to use a qualified mixfix operator by qualifying
+  the first part of the name. For instance
+
+  ```agda
+  import Data.Nat as Nat
+  import Data.Bool as Bool
+
+  two = Bool.if true then 1 Nat.+ 1 else 0
+  ```
+
+* Sections [Issue [#735](https://github.com/agda/agda/issues/735)].
+  Agda now parses anonymous modules as sections:
+
+  ```agda
+  module _ {a} (A : Set a) where
+
+    data List : Set a where
+      []  : List
+      _∷_ : (x : A) (xs : List) → List
+
+  module _ {a} {A : Set a} where
+
+    _++_ : List A → List A → List A
+    []       ++ ys = ys
+    (x ∷ xs) ++ ys = x ∷ (xs ++ ys)
+
+  test : List Nat
+  test = (5 ∷ []) ++ (3 ∷ [])
+  ```
+
+  In general, now the syntax
+
+  ```agda
+  module _ parameters where
+    declarations
+  ```
+
+  is accepted and has the same effect as
+
+  ```agda
+  private
+    module M parameters where
+      declarations
+  open M public
+  ```
+
+  for a fresh name `M`.
+
+* Instantiating a module in an open import statement
+  [Issue [#481](https://github.com/agda/agda/issues/481)]. Now
+  accepted:
+
+  ```agda
+  open import Path.Module args [using/hiding/renaming (...)]
+  ```
+
+  This only brings the imported identifiers from `Path.Module` into scope,
+  not the module itself!  Consequently, the following is pointless, and raises
+  an error:
+
+  ```agda
+    import Path.Module args [using/hiding/renaming (...)]
+  ```
+
+  You can give a private name `M` to the instantiated module via
+
+  ```agda
+  import Path.Module args as M [using/hiding/renaming (...)]
+  open import Path.Module args as M [using/hiding/renaming (...)]
+  ```
+
+  Try to avoid `as` as part of the arguments.  `as` is not a keyword;
+  the following can be legal, although slightly obfuscated Agda code:
+
+  ```agda
+  open import as as as as as as
+  ```
+
+* Implicit module parameters can be given by name. E.g.
+
+  ```agda
+  open M {namedArg = bla}
+  ```
+
+  This feature has been introduced in Agda 2.3.0 already.
+
+* Multiple type signatures sharing a same type can now be written as a single
+  type signature.
+
+  ```agda
+  one two : ℕ
+  one = suc zero
+  two = suc one
+  ```
+
+Goal and error display
+----------------------
+
+* Meta-variables that were introduced by hidden argument `arg` are now
+  printed as `_arg_number` instead of just `_number`.
+  [Issue [#526](https://github.com/agda/agda/issues/526)]
+
+* Agda expands identifiers in anonymous modules when printing.  Should
+  make some goals nicer to read.
+  [Issue [#721](https://github.com/agda/agda/issues/721)]
+
+* When a module identifier is ambiguous, Agda tells you if one of them
+  is a data type module.
+  [Issues [#318](https://github.com/agda/agda/issues/318),
+  [#705](https://github.com/agda/agda/issues/705)]
+
+Type checking
+-------------
+
+* Improved coverage checker. The coverage checker splits on arguments
+  that have constructor or literal pattern, committing to the
+  left-most split that makes progress.  Consider the lookup function
+  for vectors:
+
+  ```agda
+  data Fin : Nat → Set where
+    zero : {n : Nat} → Fin (suc n)
+    suc  : {n : Nat} → Fin n → Fin (suc n)
+
+  data Vec (A : Set) : Nat → Set where
+    []  : Vec A zero
+    _∷_ : {n : Nat} → A → Vec A n → Vec A (suc n)
+
+  _!!_ : {A : Set}{n : Nat} → Vec A n → Fin n → A
+  (x ∷ xs) !! zero  = x
+  (x ∷ xs) !! suc i = xs !! i
+  ```
+
+  In Agda up to 2.3.0, this definition is rejected unless we add
+  an absurd clause
+
+  ```agda
+  [] !! ()
+  ```
+
+  This is because the coverage checker committed on splitting on the
+  vector argument, even though this inevitably lead to failed
+  coverage, because a case for the empty vector `[]` is missing.
+
+  The improvement to the coverage checker consists on committing only
+  on splits that have a chance of covering, since all possible
+  constructor patterns are present.  Thus, Agda will now split first
+  on the `Fin` argument, since cases for both `zero` and `suc` are
+  present.  Then, it can split on the `Vec` argument, since the empty
+  vector is already ruled out by instantiating `n` to a `suc _`.
+
+* Instance arguments resolution will now consider candidates which
+  still expect hidden arguments. For example:
+
+  ```agda
+  record Eq (A : Set) : Set where
+    field eq : A → A → Bool
+
+  open Eq {{...}}
+
+  eqFin : {n : ℕ} → Eq (Fin n)
+  eqFin = record { eq = primEqFin }
+
+  testFin : Bool
+  testFin = eq fin1 fin2
+  ```
+
+  The type-checker will now resolve the instance argument of the `eq`
+  function to `eqFin {_}`. This is only done for hidden arguments, not
+  instance arguments, so that the instance search stays non-recursive.
+
+* Constraint solving: Upgraded Miller patterns to record patterns.
+  [Issue [#456](https://github.com/agda/agda/issues/456)]
+
+  Agda now solves meta-variables that are applied to record patterns.
+  A typical (but here, artificial) case is:
+
+  ```agda
+  record Sigma (A : Set)(B : A -> Set) : Set where
+    constructor _,_
+    field
+      fst : A
+      snd : B fst
+
+  test : (A : Set)(B : A -> Set) ->
+    let X : Sigma A B -> Sigma A B
+        X = _
+    in  (x : A)(y : B x) -> X (x , y) ≡ (x , y)
+  test A B x y = refl
+  ```
+
+  This yields a constraint of the form
+
+  ```
+  _X A B (x , y) := t[x,y]
+  ```
+
+  (with `t[x,y] = (x, y)`) which is not a Miller pattern.
+  However, Agda now solves this as
+
+  ```
+  _X A B z := t[fst z,snd z].
+  ```
+
+* Changed: solving recursive constraints.
+  [Issue [#585](https://github.com/agda/agda/issues/585)]
+
+  Until 2.3.0, Agda sometimes inferred values that did not pass the
+  termination checker later, or would even make Agda loop. To prevent
+  this, the occurs check now also looks into the definitions of the
+  current mutual block, to avoid constructing recursive solutions. As
+  a consequence, also terminating recursive solutions are no longer
+  found automatically.
+
+  This effects a programming pattern where the recursively computed
+  type of a recursive function is left to Agda to solve.
+
+  ```agda
+  mutual
+
+    T : D -> Set
+    T pattern1 = _
+    T pattern2 = _
+
+    f : (d : D) -> T d
+    f pattern1 = rhs1
+    f pattern2 = rhs2
+  ```
+
+  This might no longer work from now on. See examples
+  `test/Fail/Issue585*.agda`.
+
+* Less eager introduction of implicit parameters.
+  [Issue [#679](https://github.com/agda/agda/issues/679)]
+
+  Until Agda 2.3.0, trailing hidden parameters were introduced eagerly
+  on the left hand side of a definition.  For instance, one could not
+  write
+
+  ```agda
+  test : {A : Set} -> Set
+  test = \ {A} -> A
+  ```
+
+  because internally, the hidden argument `{A : Set}` was added to the
+  left-hand side, yielding
+
+  ```agda
+  test {_} = \ {A} -> A
+  ```
+
+  which raised a type error.  Now, Agda only introduces the trailing
+  implicit parameters it has to, in order to maintain uniform function
+  arity.  For instance, in
+
+  ```agda
+  test : Bool -> {A B C : Set} -> Set
+  test true {A}      = A
+  test false {B = B} = B
+  ```
+
+  Agda will introduce parameters `A` and `B` in all clauses, but not
+  `C`, resulting in
+
+  ```agda
+  test : Bool -> {A B C : Set} -> Set
+  test true  {A} {_}     = A
+  test false {_} {B = B} = B
+  ```
+
+  Note that for checking `where`-clauses, still all hidden trailing
+  parameters are in scope.  For instance:
+
+  ```agda
+  id : {i : Level}{A : Set i} -> A -> A
+  id = myId
+    where myId : forall {A} -> A -> A
+          myId x = x
+  ```
+
+  To be able to fill in the meta variable `_1` in
+
+  ```agda
+  myId : {A : Set _1} -> A -> A
+  ```
+
+  the hidden parameter `{i : Level}` needs to be in scope.
+
+  As a result of this more lazy introduction of implicit parameters,
+  the following code now passes.
+
+  ```agda
+  data Unit : Set where
+    unit : Unit
+
+  T : Unit → Set
+  T unit = {u : Unit} → Unit
+
+  test : (u : Unit) → T u
+  test unit with unit
+  ... | _ = λ {v} → v
+  ```
+
+  Before, Agda would eagerly introduce the hidden parameter `{v}` as
+  unnamed left-hand side parameter, leaving no way to refer to it.
+
+  The related Issue [#655](https://github.com/agda/agda/issues/655)
+  has also been addressed.  It is now possible to make `synonym'
+  definitions
+
+  ```
+  name = expression
+  ```
+
+  even when the type of expression begins with a hidden quantifier.
+  Simple example:
+
+  ```
+  id2 = id
+  ```
+
+  That resulted in unsolved metas until 2.3.0.
+
+* Agda detects unused arguments and ignores them during equality
+  checking. [Issue [#691](https://github.com/agda/agda/issues/691),
+  solves also Issue [#44](https://github.com/agda/agda/issues/44)]
+
+  Agda's polarity checker now assigns 'Nonvariant' to arguments that
+  are not actually used (except for absurd matches).  If `f`'s first
+  argument is Nonvariant, then `f x` is definitionally equal to `f y`
+  regardless of `x` and `y`.  It is similar to irrelevance, but does
+  not require user annotation.
+
+  For instance, unused module parameters do no longer get in the way:
+
+  ```agda
+  module M (x : Bool) where
+
+    not : Bool → Bool
+    not true  = false
+    not false = true
+
+  open M true
+  open M false renaming (not to not′)
+
+  test : (y : Bool) → not y ≡ not′ y
+  test y = refl
+  ```
+
+  Matching against record or absurd patterns does not count as `use',
+  so we get some form of proof irrelevance:
+
+  ```agda
+  data ⊥ : Set where
+  record ⊤ : Set where
+    constructor trivial
+
+  data Bool : Set where
+    true false : Bool
+
+  True : Bool → Set
+  True true  = ⊤
+  True false = ⊥
+
+  fun : (b : Bool) → True b → Bool
+  fun true  trivial = true
+  fun false ()
+
+  test : (b : Bool) → (x y : True b) → fun b x ≡ fun b y
+  test b x y = refl
+  ```
+
+  More examples in `test/Succeed/NonvariantPolarity.agda`.
+
+  Phantom arguments:  Parameters of record and data types are considered
+  `used' even if they are not actually used.  Consider:
+
+  ```agda
+  False : Nat → Set
+  False zero    = ⊥
+  False (suc n) = False n
+
+  module Invariant where
+    record Bla (n : Nat)(p : False n) : Set where
+
+  module Nonvariant where
+    Bla : (n : Nat) → False n → Set
+    Bla n p = ⊤
+  ```
+
+  Even though record `Bla` does not use its parameters `n` and `p`,
+  they are considered as used, allowing "phantom type" techniques.
+
+  In contrast, the arguments of function `Bla` are recognized as
+  unused.  The following code type-checks if we open `Invariant` but
+  leaves unsolved metas if we open `Nonvariant`.
+
+  ```agda
+  drop-suc : {n : Nat}{p : False n} → Bla (suc n) p → Bla n p
+  drop-suc _ = _
+
+  bla : (n : Nat) → {p : False n} → Bla n p → ⊥
+  bla zero {()} b
+  bla (suc n) b = bla n (drop-suc b)
+  ```
+
+  If `Bla` is considered invariant, the hidden argument in the
+  recursive call can be inferred to be `p`.  If it is considered
+  non-variant, then `Bla n X = Bla n p` does not entail `X = p` and
+  the hidden argument remains unsolved.  Since `bla` does not actually
+  use its hidden argument, its value is not important and it could be
+  searched for.  Unfortunately, polarity analysis of `bla` happens
+  only after type checking, thus, the information that `bla` is
+  non-variant in `p` is not available yet when meta-variables are
+  solved.  (See
+  `test/Fail/BrokenInferenceDueToNonvariantPolarity.agda`)
+
+* Agda now expands simple definitions (one clause, terminating) to
+  check whether a function is constructor
+  headed. [Issue [#747](https://github.com/agda/agda/issues/747)] For
+  instance, the following now also works:
+
+  ```agda
+  MyPair : Set -> Set -> Set
+  MyPair A B = Pair A B
+
+  Vec : Set -> Nat -> Set
+  Vec A zero    = Unit
+  Vec A (suc n) = MyPair A (Vec A n)
+  ```
+
+  Here, `Unit` and `Pair` are data or record types.
+
+Compiler backends
+-----------------
+
+* `-Werror` is now overridable.
+
+  To enable compilation of Haskell modules containing warnings, the
+  `-Werror` flag for the MAlonzo backend has been made
+  overridable. If, for example, `--ghc-flag=-Wwarn` is passed when
+  compiling, one can get away with things like:
+
+  ```agda
+  data PartialBool : Set where
+    true : PartialBool
+
+  {-# COMPILED_DATA PartialBool Bool True #-}
+  ```
+
+  The default behavior remains as it used to be and rejects the above
+  program.
+
+Tools
+-----
+
+### Emacs mode
+
+* Asynchronous Emacs mode.
+
+  One can now use Emacs while a buffer is type-checked. If the buffer
+  is edited while the type-checker runs, then syntax highlighting will
+  not be updated when type-checking is complete.
+
+* Interactive syntax highlighting.
+
+  The syntax highlighting is updated while a buffer is type-checked:
+
+  - At first the buffer is highlighted in a somewhat crude way
+    (without go-to-definition information for overloaded
+    constructors).
+
+  - If the highlighting level is "interactive", then the piece of code
+    that is currently being type-checked is highlighted as such. (The
+    default is "non-interactive".)
+
+  - When a mutual block has been type-checked it is highlighted
+    properly (this highlighting includes warnings for potential
+    non-termination).
+
+  The highlighting level can be controlled via the new configuration
+  variable `agda2-highlight-level`.
+
+* Multiple case-splits can now be performed in one go.
+
+  Consider the following example:
+
+  ```agda
+  _==_ : Bool → Bool → Bool
+  b₁ == b₂ = {!!}
+  ```
+
+  If you split on `b₁ b₂`, then you get the following code:
+
+  ```agda
+  _==_ : Bool → Bool → Bool
+  true == true = {!!}
+  true == false = {!!}
+  false == true = {!!}
+  false == false = {!!}
+  ```
+
+  The order of the variables matters. Consider the following code:
+
+  ```agda
+  lookup : ∀ {a n} {A : Set a} → Vec A n → Fin n → A
+  lookup xs i = {!!}
+  ```
+
+  If you split on `xs i`, then you get the following code:
+
+  ```agda
+  lookup : ∀ {a n} {A : Set a} → Vec A n → Fin n → A
+  lookup [] ()
+  lookup (x ∷ xs) zero = {!!}
+  lookup (x ∷ xs) (suc i) = {!!}
+  ```
+
+  However, if you split on `i xs`, then you get the following code
+  instead:
+
+  ```agda
+  lookup : ∀ {a n} {A : Set a} → Vec A n → Fin n → A
+  lookup (x ∷ xs) zero = ?
+  lookup (x ∷ xs) (suc i) = ?
+  ```
+
+  This code is rejected by Agda 2.3.0, but accepted by 2.3.2 thanks
+  to improved coverage checking (see above).
+
+* The Emacs mode now presents information about which module is
+  currently being type-checked.
+
+* New global menu entry: `Information about the character at point`.
+
+  If this entry is selected, then information about the character at
+  point is displayed, including (in many cases) information about how
+  to type the character.
+
+* Commenting/uncommenting the rest of the buffer.
+
+  One can now comment or uncomment the rest of the buffer by typing
+  `C-c C-x M-;` or by selecting the menu entry `Comment/uncomment` the
+  rest of the buffer".
+
+* The Emacs mode now uses the Agda executable instead of GHCi.
+
+  The `*ghci*` buffer has been renamed to `*agda2*`.
+
+  A new configuration variable has been introduced:
+  `agda2-program-name`, the name of the Agda executable (by default
+  `agda`).
+
+  The variable `agda2-ghci-options` has been replaced by
+  `agda2-program-args`: extra arguments given to the Agda executable
+  (by default `none`).
+
+  If you want to limit Agda's memory consumption you can add some
+  arguments to `agda2-program-args`, for instance `+RTS -M1.5G -RTS`.
+
+* The Emacs mode no longer depends on haskell-mode.
+
+  Users who have customised certain haskell-mode variables (such as
+  `haskell-ghci-program-args`) may want to update their configuration.
+
+### LaTeX-backend
+
+An experimental LaTeX-backend which does precise highlighting a la the
+HTML-backend and code alignment a la lhs2TeX has been added.
+
+Here is a sample input literate Agda file:
+
+  ```latex
+  \documentclass{article}
+
+  \usepackage{agda}
+
+  \begin{document}
+
+  The following module declaration will be hidden in the output.
+
+  \AgdaHide{
+  \begin{code}
+  module M where
+  \end{code}
+  }
+
+  Two or more spaces can be used to make the backend align stuff.
+
+  \begin{code}
+  data ℕ : Set where
+    zero  : ℕ
+    suc   : ℕ → ℕ
+
+  _+_ : ℕ → ℕ → ℕ
+  zero   + n = n
+  suc m  + n = suc (m + n)
+  \end{code}
+
+  \end{document}
+  ```
+
+To produce an output PDF issue the following commands:
+
+  ```
+  agda --latex -i . <file>.lagda
+  pdflatex latex/<file>.tex
+  ```
+
+Only the top-most module is processed, like with lhs2tex and unlike
+with the HTML-backend. If you want to process imported modules you
+have to call `agda --latex` manually on each of those modules.
+
+There are still issues related to formatting, see the bug tracker for
+more information:
+
+  https://code.google.com/p/agda/issues/detail?id=697
+
+The default `agda.sty` might therefore change in backwards-incompatible
+ways, as work proceeds in trying to resolve those problems.
+
+Implemented features:
+
+* Two or more spaces can be used to force alignment of things, like
+  with lhs2tex. See example above.
+
+* The highlighting information produced by the type checker is used to
+  generate the output. For example, the data declaration in the
+  example above, produces:
+
+  ```agda
+  \AgdaKeyword{data} \AgdaDatatype{ℕ} \AgdaSymbol{:}
+      \AgdaPrimitiveType{Set} \AgdaKeyword{where}
+  ```
+
+  These LaTeX commands are defined in `agda.sty` (which is imported by
+  `\usepackage{agda}`) and cause the highlighting.
+
+* The LaTeX-backend checks if `agda.sty` is found by the LaTeX
+  environment, if it isn't a default `agda.sty` is copied from Agda's
+  `data-dir` into the working directory (and thus made available to
+  the LaTeX environment).
+
+  If the default `agda.sty` isn't satisfactory (colors, fonts,
+  spacing, etc) then the user can modify it and make put it somewhere
+  where the LaTeX environment can find it. Hopefully most aspects
+  should be modifiable via `agda.sty` rather than having to tweak the
+  implementation.
+
+* `--latex-dir` can be used to change the default output directory.
+
+Release notes for Agda 2 version 2.3.0
+======================================
+
+Language
+--------
+
+* New more liberal syntax for mutually recursive definitions.
+
+  It is no longer necessary to use the `mutual` keyword to define
+  mutually recursive functions or datatypes. Instead, it is enough to
+  declare things before they are used. Instead of
+
+  ```agda
+  mutual
+    f : A
+    f = a[f, g]
+
+    g : B[f]
+    g = b[f, g]
+  ```
+
+  you can now write
+
+  ```agda
+  f : A
+  g : B[f]
+  f = a[f, g]
+  g = b[f, g].
+  ```
+
+  With the new style you have more freedom in choosing the order in
+  which things are type checked (previously type signatures were
+  always checked before definitions). Furthermore you can mix
+  arbitrary declarations, such as modules and postulates, with
+  mutually recursive definitions.
+
+  For data types and records the following new syntax is used to
+  separate the declaration from the definition:
+
+  ```agda
+  -- Declaration.
+  data Vec (A : Set) : Nat → Set  -- Note the absence of 'where'.
+
+  -- Definition.
+  data Vec A where
+    []   : Vec A zero
+    _::_ : {n : Nat} → A → Vec A n → Vec A (suc n)
+
+  -- Declaration.
+  record Sigma (A : Set) (B : A → Set) : Set
+
+  -- Definition.
+  record Sigma A B where
+    constructor _,_
+    field fst : A
+          snd : B fst
+  ```
+
+  When making separated declarations/definitions private or abstract
+  you should attach the `private` keyword to the declaration and the
+  `abstract` keyword to the definition. For instance, a private,
+  abstract function can be defined as
+
+  ```agda
+  private
+    f : A
+  abstract
+    f = e
+  ```
+
+  Finally it may be worth noting that the old style of mutually
+  recursive definitions is still supported (it basically desugars into
+  the new style).
+
+* Pattern matching lambdas.
+
+  Anonymous pattern matching functions can be defined using the syntax
+
+  ```
+  \ { p11 .. p1n -> e1 ; ... ; pm1 .. pmn -> em }
+  ```
+
+  (where, as usual, `\` and `->` can be replaced by `λ` and
+  `→`). Internally this is translated into a function definition of
+  the following form:
+
+  ```
+  .extlam p11 .. p1n = e1
+  ...
+  .extlam pm1 .. pmn = em
+  ```
+
+  This means that anonymous pattern matching functions are generative.
+  For instance, `refl` will not be accepted as an inhabitant of the type
+
+  ```agda
+  (λ { true → true ; false → false }) ≡
+  (λ { true → true ; false → false }),
+  ```
+
+  because this is equivalent to `extlam1 ≡ extlam2` for some distinct
+  fresh names `extlam1` and `extlam2`.
+
+  Currently the `where` and `with` constructions are not allowed in
+  (the top-level clauses of) anonymous pattern matching functions.
+
+  Examples:
+
+  ```agda
+  and : Bool → Bool → Bool
+  and = λ { true x → x ; false _ → false }
+
+  xor : Bool → Bool → Bool
+  xor = λ { true  true  → false
+          ; false false → false
+          ; _     _     → true
+          }
+
+  fst : {A : Set} {B : A → Set} → Σ A B → A
+  fst = λ { (a , b) → a }
+
+  snd : {A : Set} {B : A → Set} (p : Σ A B) → B (fst p)
+  snd = λ { (a , b) → b }
+  ```
+
+* Record update syntax.
+
+  Assume that we have a record type and a corresponding value:
+
+  ```agda
+  record MyRecord : Set where
+    field
+      a b c : ℕ
+
+  old : MyRecord
+  old = record { a = 1; b = 2; c = 3 }
+  ```
+
+  Then we can update (some of) the record value's fields in the
+  following way:
+
+  ```agda
+  new : MyRecord
+  new = record old { a = 0; c = 5 }
+  ```
+
+  Here new normalises to `record { a = 0; b = 2; c = 5 }`. Any
+  expression yielding a value of type `MyRecord` can be used instead of
+  old.
+
+  Record updating is not allowed to change types: the resulting value
+  must have the same type as the original one, including the record
+  parameters. Thus, the type of a record update can be inferred if the
+  type of the original record can be inferred.
+
+  The record update syntax is expanded before type checking. When the
+  expression
+
+  ```agda
+  record old { upd-fields }
+  ```
+
+  is checked against a record type `R`, it is expanded to
+
+  ```agda
+  let r = old in record { new-fields },
+  ```
+
+  where old is required to have type `R` and new-fields is defined as
+  follows: for each field `x` in `R`,
+
+    - if `x = e` is contained in `upd-fields` then `x = e` is included in
+      `new-fields`, and otherwise
+
+    - if `x` is an explicit field then `x = R.x r` is included in
+      `new-fields`, and
+
+    - if `x` is an implicit or instance field, then it is omitted from
+      `new-fields`.
+
+  (Instance arguments are explained below.) The reason for treating
+  implicit and instance fields specially is to allow code like the
+  following:
+
+  ```agda
+  record R : Set where
+    field
+      {length} : ℕ
+      vec      : Vec ℕ length
+      -- More fields…
+
+  xs : R
+  xs = record { vec = 0 ∷ 1 ∷ 2 ∷ [] }
+
+  ys = record xs { vec = 0 ∷ [] }
+  ```
+
+  Without the special treatment the last expression would need to
+  include a new binding for length (for instance `length = _`).
+
+* Record patterns which do not contain data type patterns, but which
+  do contain dot patterns, are no longer rejected.
+
+* When the `--without-K` flag is used literals are now treated as
+  constructors.
+
+* Under-applied functions can now reduce.
+
+  Consider the following definition:
+
+  ```agda
+  id : {A : Set} → A → A
+  id x = x
+  ```
+
+  Previously the expression `id` would not reduce. This has been
+  changed so that it now reduces to `λ x → x`. Usually this makes
+  little difference, but it can be important in conjunction with
+  `with`. See Issue [#365](https://github.com/agda/agda/issues/365)
+  for an example.
+
+* Unused AgdaLight legacy syntax `(x y : A; z v : B)` for telescopes
+  has been removed.
+
+### Universe polymorphism
+
+* Universe polymorphism is now enabled by default.  Use
+  `--no-universe-polymorphism` to disable it.
+
+* Universe levels are no longer defined as a data type.
+
+  The basic level combinators can be introduced in the following way:
+
+  ```agda
+  postulate
+    Level : Set
+    zero  : Level
+    suc   : Level → Level
+    max   : Level → Level → Level
+
+  {-# BUILTIN LEVEL     Level #-}
+  {-# BUILTIN LEVELZERO zero  #-}
+  {-# BUILTIN LEVELSUC  suc   #-}
+  {-# BUILTIN LEVELMAX  max   #-}
+  ```
+
+* The BUILTIN equality is now required to be universe-polymorphic.
+
+* `trustMe` is now universe-polymorphic.
+
+### Meta-variables and unification
+
+* Unsolved meta-variables are now frozen after every mutual block.
+  This means that they cannot be instantiated by subsequent code. For
+  instance,
+
+  ```agda
+  one : Nat
+  one = _
+
+  bla : one ≡ suc zero
+  bla = refl
+  ```
+
+  leads to an error now, whereas previously it lead to the
+  instantiation of `_` with `suc zero`. If you want to make use of the
+  old behaviour, put the two definitions in a mutual block.
+
+  All meta-variables are unfrozen during interactive editing, so that
+  the user can fill holes interactively. Note that type-checking of
+  interactively given terms is not perfect: Agda sometimes refuses to
+  load a file, even though no complaints were raised during the
+  interactive construction of the file. This is because certain checks
+  (for instance, positivity) are only invoked when a file is loaded.
+
+* Record types can now be inferred.
+
+  If there is a unique known record type with fields matching the
+  fields in a record expression, then the type of the expression will
+  be inferred to be the record type applied to unknown parameters.
+
+  If there is no known record type with the given fields the type
+  checker will give an error instead of producing lots of unsolved
+  meta-variables.
+
+  Note that "known record type" refers to any record type in any
+  imported module, not just types which are in scope.
+
+* The occurrence checker distinguishes rigid and strongly rigid
+  occurrences [Reed, LFMTP 2009; Abel & Pientka, TLCA 2011].
+
+  The completeness checker now accepts the following code:
+
+  ```agda
+  h : (n : Nat) → n ≡ suc n → Nat
+  h n ()
+  ```
+
+  Internally this generates a constraint `_n = suc _n` where the
+  meta-variable `_n` occurs strongly rigidly, i.e. on a constructor
+  path from the root, in its own defining term tree. This is never
+  solvable.
+
+  Weakly rigid recursive occurrences may have a solution [Jason Reed's
+  PhD thesis, page 106]:
+
+  ```agda
+  test : (k : Nat) →
+         let X : (Nat → Nat) → Nat
+             X = _
+         in
+         (f : Nat → Nat) → X f ≡ suc (f (X (λ x → k)))
+  test k f = refl
+  ```
+
+  The constraint `_X k f = suc (f (_X k (λ x → k)))` has the solution
+  `_X k f = suc (f (suc k))`, despite the recursive occurrence of
+  `_X`.  Here `_X` is not strongly rigid, because it occurs under the
+  bound variable `f`. Previously Agda rejected this code; now it instead
+  complains about an unsolved meta-variable.
+
+* Equation constraints involving the same meta-variable in the head
+  now trigger pruning [Pientka, PhD, Sec. 3.1.2; Abel & Pientka, TLCA
+  2011]. Example:
+
+  ```agda
+  same : let X : A → A → A → A × A
+             X = _
+         in {x y z : A} → X x y y ≡ (x , y)
+                        × X x x y ≡ X x y y
+  same = refl , refl
+  ```
+
+  The second equation implies that `X` cannot depend on its second
+  argument. After pruning the first equation is linear and can be
+  solved.
+
+* Instance arguments.
+
+  A new type of hidden function arguments has been added: instance
+  arguments. This new feature is based on influences from Scala's
+  implicits and Agda's existing implicit arguments.
+
+  Plain implicit arguments are marked by single braces: `{…}`. Instance
+  arguments are instead marked by double braces: `{{…}}`. Example:
+
+  ```agda
+  postulate
+    A : Set
+    B : A → Set
+    a : A
+    f : {{a : A}} → B a
+  ```
+
+  Instead of the double braces you can use the symbols `⦃` and `⦄`,
+  but these symbols must in many cases be surrounded by
+  whitespace. (If you are using Emacs and the Agda input method, then
+  you can conjure up the symbols by typing `\{{` and `\}}`,
+  respectively.)
+
+  Instance arguments behave as ordinary implicit arguments, except for
+  one important aspect: resolution of arguments which are not provided
+  explicitly. For instance, consider the following code:
+
+  ```agda
+    test = f
+  ```
+
+  Here Agda will notice that `f`'s instance argument was not provided
+  explicitly, and try to infer it. All definitions in scope at `f`'s
+  call site, as well as all variables in the context, are considered.
+  If exactly one of these names has the required type `A`, then the
+  instance argument will be instantiated to this name.
+
+  This feature can be used as an alternative to Haskell type classes.
+  If we define
+
+  ```agda
+  record Eq (A : Set) : Set where
+    field equal : A → A → Bool,
+  ```
+
+  then we can define the following projection:
+
+  ```agda
+  equal : {A : Set} {{eq : Eq A}} → A → A → Bool
+  equal {{eq}} = Eq.equal eq
+  ```
+
+  Now consider the following expression:
+
+  ```agda
+  equal false false ∨ equal 3 4
+  ```
+
+  If the following `Eq` "instances" for `Bool` and `ℕ` are in scope, and no
+  others, then the expression is accepted:
+
+  ```agda
+  eq-Bool : Eq Bool
+  eq-Bool = record { equal = … }
+
+  eq-ℕ : Eq ℕ
+  eq-ℕ = record { equal = … }
+  ```
+
+  A shorthand notation is provided to avoid the need to define
+  projection functions manually:
+
+  ```agda
+  module Eq-with-implicits = Eq {{...}}
+  ```
+
+  This notation creates a variant of `Eq`'s record module, where the
+  main `Eq` argument is an instance argument instead of an explicit one.
+  It is equivalent to the following definition:
+
+  ```agda
+  module Eq-with-implicits {A : Set} {{eq : Eq A}} = Eq eq
+  ```
+
+  Note that the short-hand notation allows you to avoid naming the
+  "-with-implicits" module:
+
+  ```agda
+  open Eq {{...}}
+  ```
+
+  Instance argument resolution is not recursive. As an example,
+  consider the following "parametrised instance":
+
+  ```agda
+  eq-List : {A : Set} → Eq A → Eq (List A)
+  eq-List {A} eq = record { equal = eq-List-A }
+    where
+    eq-List-A : List A → List A → Bool
+    eq-List-A []       []       = true
+    eq-List-A (a ∷ as) (b ∷ bs) = equal a b ∧ eq-List-A as bs
+    eq-List-A _        _        = false
+  ```
+
+  Assume that the only `Eq` instances in scope are `eq-List` and
+  `eq-ℕ`.  Then the following code does not type-check:
+
+  ```agda
+  test = equal (1 ∷ 2 ∷ []) (3 ∷ 4 ∷ [])
+  ```
+
+  However, we can make the code work by constructing a suitable
+  instance manually:
+
+  ```agda
+  test′ = equal (1 ∷ 2 ∷ []) (3 ∷ 4 ∷ [])
+    where eq-List-ℕ = eq-List eq-ℕ
+  ```
+
+  By restricting the "instance search" to be non-recursive we avoid
+  introducing a new, compile-time-only evaluation model to Agda.
+
+  For more information about instance arguments, see Devriese &
+  Piessens [ICFP 2011]. Some examples are also available in the
+  examples/instance-arguments subdirectory of the Agda distribution.
+
+### Irrelevance
+
+* Dependent irrelevant function types.
+
+  Some examples illustrating the syntax of dependent irrelevant
+  function types:
+
+  ```
+  .(x y : A) → B    .{x y z : A} → B
+  ∀ x .y → B        ∀ x .{y} {z} .v → B
+  ```
+
+  The declaration
+
+  ```
+  f : .(x : A) → B[x]
+  f x = t[x]
+  ```
+
+  requires that `x` is irrelevant both in `t[x]` and in `B[x]`. This
+  is possible if, for instance, `B[x] = B′ x`, with `B′ : .A → Set`.
+
+  Dependent irrelevance allows us to define the eliminator for the
+  `Squash` type:
+
+  ```agda
+  record Squash (A : Set) : Set where
+    constructor squash
+    field
+      .proof : A
+
+  elim-Squash : {A : Set} (P : Squash A → Set)
+                (ih : .(a : A) → P (squash a)) →
+                (a⁻ : Squash A) → P a⁻
+  elim-Squash P ih (squash a) = ih a
+  ```
+
+  Note that this would not type-check with
+
+  ```agda
+  (ih : (a : A) -> P (squash a)).
+  ```
+
+* Records with only irrelevant fields.
+
+  The following now works:
+
+  ```agda
+  record IsEquivalence {A : Set} (_≈_ : A → A → Set) : Set where
+    field
+      .refl  : Reflexive _≈_
+      .sym   : Symmetric _≈_
+      .trans : Transitive _≈_
+
+  record Setoid : Set₁ where
+    infix 4 _≈_
+    field
+      Carrier        : Set
+      _≈_            : Carrier → Carrier → Set
+      .isEquivalence : IsEquivalence _≈_
+
+    open IsEquivalence isEquivalence public
+  ```
+
+  Previously Agda complained about the application
+  `IsEquivalence isEquivalence`, because `isEquivalence` is irrelevant
+  and the `IsEquivalence` module expected a relevant argument. Now,
+  when record modules are generated for records consisting solely of
+  irrelevant arguments, the record parameter is made irrelevant:
+
+   ```agda
+  module IsEquivalence {A : Set} {_≈_ : A → A → Set}
+                       .(r : IsEquivalence {A = A} _≈_) where
+    …
+  ```
+
+* Irrelevant things are no longer erased internally. This means that
+  they are printed as ordinary terms, not as `_` as before.
+
+* The new flag `--experimental-irrelevance` enables irrelevant
+  universe levels and matching on irrelevant data when only one
+  constructor is available. These features are very experimental and
+  likely to change or disappear.
+
+### Reflection
+
+* The reflection API has been extended to mirror features like
+  irrelevance, instance arguments and universe polymorphism, and to
+  give (limited) access to definitions. For completeness all the
+  builtins and primitives are listed below:
+
+  ```agda
+  -- Names.
+
+  postulate Name : Set
+
+  {-# BUILTIN QNAME Name #-}
+
+  primitive
+    -- Equality of names.
+    primQNameEquality : Name → Name → Bool
+
+  -- Is the argument visible (explicit), hidden (implicit), or an
+  -- instance argument?
+
+  data Visibility : Set where
+    visible hidden instance : Visibility
+
+  {-# BUILTIN HIDING   Visibility #-}
+  {-# BUILTIN VISIBLE  visible    #-}
+  {-# BUILTIN HIDDEN   hidden     #-}
+  {-# BUILTIN INSTANCE instance   #-}
+
+  -- Arguments can be relevant or irrelevant.
+
+  data Relevance : Set where
+    relevant irrelevant : Relevance
+
+  {-# BUILTIN RELEVANCE  Relevance  #-}
+  {-# BUILTIN RELEVANT   relevant   #-}
+  {-# BUILTIN IRRELEVANT irrelevant #-}
+
+  -- Arguments.
+
+  data Arg A : Set where
+    arg : (v : Visibility) (r : Relevance) (x : A) → Arg A
+
+  {-# BUILTIN ARG    Arg #-}
+  {-# BUILTIN ARGARG arg #-}
+
+  -- Terms.
+
+  mutual
+    data Term : Set where
+      -- Variable applied to arguments.
+      var     : (x : ℕ) (args : List (Arg Term)) → Term
+      -- Constructor applied to arguments.
+      con     : (c : Name) (args : List (Arg Term)) → Term
+      -- Identifier applied to arguments.
+      def     : (f : Name) (args : List (Arg Term)) → Term
+      -- Different kinds of λ-abstraction.
+      lam     : (v : Visibility) (t : Term) → Term
+      -- Pi-type.
+      pi      : (t₁ : Arg Type) (t₂ : Type) → Term
+      -- A sort.
+      sort    : Sort → Term
+      -- Anything else.
+      unknown : Term
+
+    data Type : Set where
+      el : (s : Sort) (t : Term) → Type
+
+    data Sort : Set where
+      -- A Set of a given (possibly neutral) level.
+      set     : (t : Term) → Sort
+      -- A Set of a given concrete level.
+      lit     : (n : ℕ) → Sort
+      -- Anything else.
+      unknown : Sort
+
+  {-# BUILTIN AGDASORT            Sort    #-}
+  {-# BUILTIN AGDATYPE            Type    #-}
+  {-# BUILTIN AGDATERM            Term    #-}
+  {-# BUILTIN AGDATERMVAR         var     #-}
+  {-# BUILTIN AGDATERMCON         con     #-}
+  {-# BUILTIN AGDATERMDEF         def     #-}
+  {-# BUILTIN AGDATERMLAM         lam     #-}
+  {-# BUILTIN AGDATERMPI          pi      #-}
+  {-# BUILTIN AGDATERMSORT        sort    #-}
+  {-# BUILTIN AGDATERMUNSUPPORTED unknown #-}
+  {-# BUILTIN AGDATYPEEL          el      #-}
+  {-# BUILTIN AGDASORTSET         set     #-}
+  {-# BUILTIN AGDASORTLIT         lit     #-}
+  {-# BUILTIN AGDASORTUNSUPPORTED unknown #-}
+
+  postulate
+    -- Function definition.
+    Function  : Set
+    -- Data type definition.
+    Data-type : Set
+    -- Record type definition.
+    Record    : Set
+
+  {-# BUILTIN AGDAFUNDEF    Function  #-}
+  {-# BUILTIN AGDADATADEF   Data-type #-}
+  {-# BUILTIN AGDARECORDDEF Record    #-}
+
+  -- Definitions.
+
+  data Definition : Set where
+    function     : Function  → Definition
+    data-type    : Data-type → Definition
+    record′      : Record    → Definition
+    constructor′ : Definition
+    axiom        : Definition
+    primitive′   : Definition
+
+  {-# BUILTIN AGDADEFINITION                Definition   #-}
+  {-# BUILTIN AGDADEFINITIONFUNDEF          function     #-}
+  {-# BUILTIN AGDADEFINITIONDATADEF         data-type    #-}
+  {-# BUILTIN AGDADEFINITIONRECORDDEF       record′      #-}
+  {-# BUILTIN AGDADEFINITIONDATACONSTRUCTOR constructor′ #-}
+  {-# BUILTIN AGDADEFINITIONPOSTULATE       axiom        #-}
+  {-# BUILTIN AGDADEFINITIONPRIMITIVE       primitive′   #-}
+
+  primitive
+    -- The type of the thing with the given name.
+    primQNameType        : Name → Type
+    -- The definition of the thing with the given name.
+    primQNameDefinition  : Name → Definition
+    -- The constructors of the given data type.
+    primDataConstructors : Data-type → List Name
+  ```
+
+  As an example the expression
+
+  ```agda
+  primQNameType (quote zero)
+  ```
+
+  is definitionally equal to
+
+  ```agda
+  el (lit 0) (def (quote ℕ) [])
+  ```
+
+  (if `zero` is a constructor of the data type `ℕ`).
+
+* New keyword: `unquote`.
+
+  The construction `unquote t` converts a representation of an Agda term
+  to actual Agda code in the following way:
+
+  1. The argument `t` must have type `Term` (see the reflection API above).
+
+  2. The argument is normalised.
+
+  3. The entire construction is replaced by the normal form, which is
+     treated as syntax written by the user and type-checked in the
+     usual way.
+
+  Examples:
+
+  ```agda
+  test : unquote (def (quote ℕ) []) ≡ ℕ
+  test = refl
+
+  id : (A : Set) → A → A
+  id = unquote (lam visible (lam visible (var 0 [])))
+
+  id-ok : id ≡ (λ A (x : A) → x)
+  id-ok = refl
+  ```
+
+* New keyword: `quoteTerm`.
+
+  The construction `quoteTerm t` is similar to `quote n`, but whereas
+  `quote` is restricted to names `n`, `quoteTerm` accepts terms
+  `t`. The construction is handled in the following way:
+
+  1. The type of `t` is inferred. The term `t` must be type-correct.
+
+  2. The term `t` is normalised.
+
+  3. The construction is replaced by the Term representation (see the
+     reflection API above) of the normal form. Any unsolved metavariables
+     in the term are represented by the `unknown` term constructor.
+
+  Examples:
+
+  ```agda
+  test₁ : quoteTerm (λ {A : Set} (x : A) → x) ≡
+          lam hidden (lam visible (var 0 []))
+  test₁ = refl
+
+  -- Local variables are represented as de Bruijn indices.
+  test₂ : (λ {A : Set} (x : A) → quoteTerm x) ≡ (λ x → var 0 [])
+  test₂ = refl
+
+  -- Terms are normalised before being quoted.
+  test₃ : quoteTerm (0 + 0) ≡ con (quote zero) []
+  test₃ = refl
+  ```
+
+Compiler backends
+-----------------
+
+### MAlonzo
+
+* The MAlonzo backend's FFI now handles universe polymorphism in a
+  better way.
+
+  The translation of Agda types and kinds into Haskell now supports
+  universe-polymorphic postulates. The core changes are that the
+  translation of function types has been changed from
+
+  ```
+  T[[ Pi (x : A) B ]] =
+    if A has a Haskell kind then
+      forall x. () -> T[[ B ]]
+    else if x in fv B then
+      undef
+    else
+      T[[ A ]] -> T[[ B ]]
+  ```
+
+  into
+
+  ```
+  T[[ Pi (x : A) B ]] =
+    if x in fv B then
+      forall x. T[[ A ]] -> T[[ B ]]  -- Note: T[[A]] not Unit.
+    else
+      T[[ A ]] -> T[[ B ]],
+  ```
+
+  and that the translation of constants (postulates, constructors and
+  literals) has been changed from
+
+  ```
+  T[[ k As ]] =
+    if COMPILED_TYPE k T then
+      T T[[ As ]]
+    else
+      undef
+  ```
+
+  into
+
+  ```
+  T[[ k As ]] =
+    if COMPILED_TYPE k T then
+      T T[[ As ]]
+    else if COMPILED k E then
+      ()
+    else
+      undef.
+  ```
+
+  For instance, assuming a Haskell definition
+
+  ```haskell
+    type AgdaIO a b = IO b,
+  ```
+
+  we can set up universe-polymorphic `IO` in the following way:
+
+  ```agda
+  postulate
+    IO     : ∀ {ℓ} → Set ℓ → Set ℓ
+    return : ∀ {a} {A : Set a} → A → IO A
+    _>>=_  : ∀ {a b} {A : Set a} {B : Set b} →
+             IO A → (A → IO B) → IO B
+
+  {-# COMPILED_TYPE IO AgdaIO              #-}
+  {-# COMPILED return  (\_ _ -> return)    #-}
+  {-# COMPILED _>>=_   (\_ _ _ _ -> (>>=)) #-}
+  ```
+
+  This is accepted because (assuming that the universe level type is
+  translated to the Haskell unit type `()`)
+
+  ```haskell
+  (\_ _ -> return)
+    : forall a. () -> forall b. () -> b -> AgdaIO a b
+    = T [[ ∀ {a} {A : Set a} → A → IO A ]]
+  ```
+
+  and
+
+  ```haskell
+  (\_ _ _ _ -> (>>=))
+    : forall a. () -> forall b. () ->
+        forall c. () -> forall d. () ->
+          AgdaIO a c -> (c -> AgdaIO b d) -> AgdaIO b d
+    = T [[ ∀ {a b} {A : Set a} {B : Set b} →
+             IO A → (A → IO B) → IO B ]].
+  ```
+
+### Epic
+
+* New Epic backend pragma: `STATIC`.
+
+  In the Epic backend, functions marked with the `STATIC` pragma will be
+  normalised before compilation. Example usage:
+
+  ```
+  {-# STATIC power #-}
+
+  power : ℕ → ℕ → ℕ
+  power 0       x = 1
+  power 1       x = x
+  power (suc n) x = power n x * x
+  ```
+
+  Occurrences of `power 4 x` will be replaced by `((x * x) * x) * x`.
+
+* Some new optimisations have been implemented in the Epic backend:
+
+  - Removal of unused arguments.
+
+  A worker/wrapper transformation is performed so that unused
+  arguments can be removed by Epic's inliner. For instance, the map
+  function is transformed in the following way:
+
+  ```agda
+  map_wrap : (A B : Set) → (A → B) → List A → List B
+  map_wrap A B f xs = map_work f xs
+
+  map_work f []       = []
+  map_work f (x ∷ xs) = f x ∷ map_work f xs
+  ```
+
+  If `map_wrap` is inlined (which it will be in any saturated call),
+  then `A` and `B` disappear in the generated code.
+
+  Unused arguments are found using abstract interpretation. The bodies
+  of all functions in a module are inspected to decide which variables
+  are used. The behaviour of postulates is approximated based on their
+  types. Consider `return`, for instance:
+
+  ```agda
+  postulate return : {A : Set} → A → IO A
+  ```
+
+  The first argument of `return` can be removed, because it is of type
+  Set and thus cannot affect the outcome of a program at runtime.
+
+  - Injection detection.
+
+  At runtime many functions may turn out to be inefficient variants of
+  the identity function. This is especially true after forcing.
+  Injection detection replaces some of these functions with more
+  efficient versions. Example:
+
+  ```agda
+  inject : {n : ℕ} → Fin n → Fin (1 + n)
+  inject {suc n} zero    = zero
+  inject {suc n} (suc i) = suc (inject {n} i)
+  ```
+
+  Forcing removes the `Fin` constructors' `ℕ` arguments, so this
+  function is an inefficient identity function that can be replaced by
+  the following one:
+
+  ```agda
+  inject {_} x = x
+  ```
+
+  To actually find this function, we make the induction hypothesis
+  that inject is an identity function in its second argument and look
+  at the branches of the function to decide if this holds.
+
+  Injection detection also works over data type barriers. Example:
+
+  ```agda
+  forget : {A : Set} {n : ℕ} → Vec A n → List A
+  forget []       = []
+  forget (x ∷ xs) = x ∷ forget xs
+  ```
+
+  Given that the constructor tags (in the compiled Epic code) for
+  `Vec.[]` and `List.[]` are the same, and that the tags for `Vec._∷_`
+  and `List._∷_` are also the same, this is also an identity
+  function. We can hence replace the definition with the following
+  one:
+
+  ```agda
+  forget {_} xs = xs
+  ```
+
+  To get this to apply as often as possible, constructor tags are
+  chosen *after* injection detection has been run, in a way to make as
+  many functions as possible injections.
+
+  Constructor tags are chosen once per source file, so it may be
+  advantageous to define conversion functions like forget in the same
+  module as one of the data types. For instance, if `Vec.agda` imports
+  `List.agda`, then the forget function should be put in `Vec.agda` to
+  ensure that vectors and lists get the same tags (unless some other
+  injection function, which puts different constraints on the tags, is
+  prioritised).
+
+  - Smashing.
+
+  This optimisation finds types whose values are inferable at runtime:
+
+    * A data type with only one constructor where all fields are
+      inferable is itself inferable.
+
+    * `Set ℓ` is inferable (as it has no runtime representation).
+
+  A function returning an inferable data type can be smashed, which
+  means that it is replaced by a function which simply returns the
+  inferred value.
+
+  An important example of an inferable type is the usual propositional
+  equality type (`_≡_`). Any function returning a propositional
+  equality can simply return the reflexivity constructor directly
+  without computing anything.
+
+  This optimisation makes more arguments unused. It also makes the
+  Epic code size smaller, which in turn speeds up compilation.
+
+### JavaScript
+
+* ECMAScript compiler backend.
+
+  A new compiler backend is being implemented, targetting ECMAScript
+  (also known as JavaScript), with the goal of allowing Agda programs
+  to be run in browsers or other ECMAScript environments.
+
+  The backend is still at an experimental stage: the core language is
+  implemented, but many features are still missing.
+
+  The ECMAScript compiler can be invoked from the command line using
+  the flag `--js`:
+
+  ```
+  agda --js --compile-dir=<DIR> <FILE>.agda
+  ```
+
+  Each source `<FILE>.agda` is compiled into an ECMAScript target
+  `<DIR>/jAgda.<TOP-LEVEL MODULE NAME>.js`. The compiler can also be
+  invoked using the Emacs mode (the variable `agda2-backend` controls
+  which backend is used).
+
+  Note that ECMAScript is a strict rather than lazy language. Since
+  Agda programs are total, this should not impact program semantics,
+  but it may impact their space or time usage.
+
+  ECMAScript does not support algebraic datatypes or pattern-matching.
+  These features are translated to a use of the visitor pattern. For
+  instance, the standard library's `List` data type and `null`
+  function are translated into the following code:
+
+  ```javascript
+  exports["List"] = {};
+  exports["List"]["[]"] = function (x0) {
+      return x0["[]"]();
+    };
+  exports["List"]["_∷_"] = function (x0) {
+      return function (x1) {
+        return function (x2) {
+          return x2["_∷_"](x0, x1);
+        };
+      };
+    };
+
+  exports["null"] = function (x0) {
+      return function (x1) {
+        return function (x2) {
+          return x2({
+            "[]": function () {
+              return jAgda_Data_Bool["Bool"]["true"];
+            },
+            "_∷_": function (x3, x4) {
+              return jAgda_Data_Bool["Bool"]["false"];
+            }
+          });
+        };
+      };
+    };
+  ```
+
+  Agda records are translated to ECMAScript objects, preserving field
+  names.
+
+  Top-level Agda modules are translated to ECMAScript modules,
+  following the `common.js` module specification. A top-level Agda
+  module `Foo.Bar` is translated to an ECMAScript module
+  `jAgda.Foo.Bar`.
+
+  The ECMAScript compiler does not compile to Haskell, so the pragmas
+  related to the Haskell FFI (`IMPORT`, `COMPILED_DATA` and
+  `COMPILED`) are not used by the ECMAScript backend. Instead, there
+  is a `COMPILED_JS` pragma which may be applied to any
+  declaration. For postulates, primitives, functions and values, it
+  gives the ECMAScript code to be emitted by the compiler. For data
+  types, it gives a function which is applied to a value of that type,
+  and a visitor object. For instance, a binding of natural numbers to
+  ECMAScript integers (ignoring overflow errors) is:
+
+  ```agda
+  data ℕ : Set where
+    zero : ℕ
+    suc  : ℕ → ℕ
+
+  {-# COMPILED_JS ℕ function (x,v) {
+      if (x < 1) { return v.zero(); } else { return v.suc(x-1); }
+    } #-}
+  {-# COMPILED_JS zero 0 #-}
+  {-# COMPILED_JS suc function (x) { return x+1; } #-}
+
+  _+_ : ℕ → ℕ → ℕ
+  zero  + n = n
+  suc m + n = suc (m + n)
+
+  {-# COMPILED_JS _+_ function (x) { return function (y) {
+                        return x+y; };
+    } #-}
+  ```
+
+  To allow FFI code to be optimised, the ECMAScript in a `COMPILED_JS`
+  declaration is parsed, using a simple parser that recognises a pure
+  functional subset of ECMAScript, consisting of functions, function
+  applications, return, if-statements, if-expressions,
+  side-effect-free binary operators (no precedence, left associative),
+  side-effect-free prefix operators, objects (where all member names
+  are quoted), field accesses, and string and integer literals.
+  Modules may be imported using the require (`<module-id>`) syntax: any
+  impure code, or code outside the supported fragment, can be placed
+  in a module and imported.
+
+Tools
+-----
+
+* New flag `--safe`, which can be used to type-check untrusted code.
+
+  This flag disables postulates, `primTrustMe`, and "unsafe" OPTION
+  pragmas, some of which are known to make Agda inconsistent.
+
+  Rejected pragmas:
+
+  ```
+  --allow-unsolved-metas
+  --experimental-irrelevance
+  --guardedness-preserving-type-construtors
+  --injective-type-constructors
+  --no-coverage-check
+  --no-positivity-check
+  --no-termination-check
+  --sized-types
+  --type-in-type
+  ```
+
+  Note that, at the moment, it is not possible to define the universe
+  level or coinduction primitives when `--safe` is used (because they
+  must be introduced as postulates). This can be worked around by
+  type-checking trusted files in a first pass, without using `--safe`,
+  and then using `--saf`e in a second pass. Modules which have already
+  been type-checked are not re-type-checked just because `--safe` is
+  used.
+
+* Dependency graphs.
+
+  The new flag `--dependency-graph=FILE` can be used to generate a DOT
+  file containing a module dependency graph. The generated file (FILE)
+  can be rendered using a tool like dot.
+
+* The `--no-unreachable-check` flag has been removed.
+
+* Projection functions are highlighted as functions instead of as
+  fields. Field names (in record definitions and record values) are
+  still highlighted as fields.
+
+* Support for jumping to positions mentioned in the information
+  buffer has been added.
+
+* The `make install` command no longer installs Agda globally (by
+  default).
+
+Release notes for Agda 2 version 2.2.10
+=======================================
+
+Language
+--------
+
+* New flag: `--without-K`.
+
+  This flag makes pattern matching more restricted. If the flag is
+  activated, then Agda only accepts certain case-splits. If the type
+  of the variable to be split is `D pars ixs`, where `D` is a data (or
+  record) type, pars stands for the parameters, and `ixs` the indices,
+  then the following requirements must be satisfied:
+
+  - The indices `ixs` must be applications of constructors to distinct
+    variables.
+
+  - These variables must not be free in pars.
+
+  The intended purpose of `--without-K` is to enable experiments with
+  a propositional equality without the K rule. Let us define
+  propositional equality as follows:
+
+  ```agda
+  data _≡_ {A : Set} : A → A → Set where
+    refl : ∀ x → x ≡ x
+  ```
+
+  Then the obvious implementation of the J rule is accepted:
+
+  ```agda
+  J : {A : Set} (P : {x y : A} → x ≡ y → Set) →
+      (∀ x → P (refl x)) →
+      ∀ {x y} (x≡y : x ≡ y) → P x≡y
+  J P p (refl x) = p x
+  ```
+
+  The same applies to Christine Paulin-Mohring's version of the J rule:
+
+  ```agda
+  J′ : {A : Set} {x : A} (P : {y : A} → x ≡ y → Set) →
+       P (refl x) →
+       ∀ {y} (x≡y : x ≡ y) → P x≡y
+  J′ P p (refl x) = p
+  ```
+
+  On the other hand, the obvious implementation of the K rule is not
+  accepted:
+
+  ```agda
+  K : {A : Set} (P : {x : A} → x ≡ x → Set) →
+      (∀ x → P (refl x)) →
+      ∀ {x} (x≡x : x ≡ x) → P x≡x
+  K P p (refl x) = p x
+  ```
+
+  However, we have *not* proved that activation of `--without-K`
+  ensures that the K rule cannot be proved in some other way.
+
+* Irrelevant declarations.
+
+  Postulates and functions can be marked as irrelevant by prefixing
+  the name with a dot when the name is declared. Example:
+
+  ```agda
+  postulate
+    .irrelevant : {A : Set} → .A → A
+  ```
+
+  Irrelevant names may only be used in irrelevant positions or in
+  definitions of things which have been declared irrelevant.
+
+  The axiom irrelevant above can be used to define a projection from
+  an irrelevant record field:
+
+  ```agda
+  data Subset (A : Set) (P : A → Set) : Set where
+    _#_ : (a : A) → .(P a) → Subset A P
+
+  elem : ∀ {A P} → Subset A P → A
+  elem (a # p) = a
+
+  .certificate : ∀ {A P} (x : Subset A P) → P (elem x)
+  certificate (a # p) = irrelevant p
+  ```
+
+  The right-hand side of certificate is relevant, so we cannot define
+
+  ```agda
+  certificate (a # p) = p
+  ```
+
+  (because `p` is irrelevant). However, certificate is declared to be
+  irrelevant, so it can use the axiom irrelevant. Furthermore the
+  first argument of the axiom is irrelevant, which means that
+  irrelevant `p` is well-formed.
+
+  As shown above the axiom irrelevant justifies irrelevant
+  projections. Previously no projections were generated for irrelevant
+  record fields, such as the field certificate in the following
+  record type:
+
+  ```agda
+  record Subset (A : Set) (P : A → Set) : Set where
+    constructor _#_
+    field
+      elem         : A
+      .certificate : P elem
+  ```
+
+  Now projections are generated automatically for irrelevant fields
+  (unless the flag `--no-irrelevant-projections` is used). Note that
+  irrelevant projections are highly experimental.
+
+* Termination checker recognises projections.
+
+  Projections now preserve sizes, both in patterns and expressions.
+  Example:
+
+  ```agda
+  record Wrap (A : Set) : Set where
+    constructor wrap
+    field
+      unwrap : A
+
+  open Wrap public
+
+  data WNat : Set where
+    zero : WNat
+    suc  : Wrap WNat → WNat
+
+  id : WNat → WNat
+  id zero    = zero
+  id (suc w) = suc (wrap (id (unwrap w)))
+  ```
+
+  In the structural ordering `unwrap w` ≤ `w`. This means that
+
+  ```agda
+    unwrap w ≤ w < suc w,
+  ```
+
+  and hence the recursive call to id is accepted.
+
+  Projections also preserve guardedness.
+
+Tools
+-----
+
+* Hyperlinks for top-level module names now point to the start of the
+  module rather than to the declaration of the module name. This
+  applies both to the Emacs mode and to the output of `agda --html`.
+
+* Most occurrences of record field names are now highlighted as
+  "fields". Previously many occurrences were highlighted as
+  "functions".
+
+* Emacs mode: It is no longer possible to change the behaviour of the
+  `TAB` key by customising `agda2-indentation`.
+
+* Epic compiler backend.
+
+  A new compiler backend is being implemented. This backend makes use
+  of Edwin Brady's language Epic
+  (http://www.cs.st-andrews.ac.uk/~eb/epic.php) and its compiler. The
+  backend should handle most Agda code, but is still at an
+  experimental stage: more testing is needed, and some things written
+  below may not be entirely true.
+
+  The Epic compiler can be invoked from the command line using the
+  flag `--epic`:
+
+  ```
+  agda --epic --epic-flag=<EPIC-FLAG> --compile-dir=<DIR> <FILE>.agda
+  ```
+
+  The `--epic-flag` flag can be given multiple times; each flag is
+  given verbatim to the Epic compiler (in the given order). The
+  resulting executable is named after the main module and placed in
+  the directory specified by the `--compile-dir` flag (default: the
+  project root). Intermediate files are placed in a subdirectory
+  called `Epic`.
+
+  The backend requires that there is a definition named main. This
+  definition should be a value of type `IO Unit`, but at the moment
+  this is not checked (so it is easy to produce a program which
+  segfaults).  Currently the backend represents actions of type `IO A`
+  as functions from `Unit` to `A`, and main is applied to the unit
+  value.
+
+  The Epic compiler compiles via C, not Haskell, so the pragmas
+  related to the Haskell FFI (`IMPORT`, `COMPILED_DATA` and
+  `COMPILED`) are not used by the Epic backend. Instead there is a new
+  pragma `COMPILED_EPIC`. This pragma is used to give Epic code for
+  postulated definitions (Epic code can in turn call C code). The form
+  of the pragma is `{-# COMPILED_EPIC def code #-}`, where `def` is
+  the name of an Agda postulate and `code` is some Epic code which
+  should include the function arguments, return type and function
+  body. As an example the `IO` monad can be defined as follows:
+
+  ```agda
+  postulate
+    IO     : Set → Set
+    return : ∀ {A} → A → IO A
+    _>>=_  : ∀ {A B} → IO A → (A → IO B) → IO B
+
+  {-# COMPILED_EPIC return (u : Unit, a : Any) -> Any =
+                      ioreturn(a) #-}
+  {-# COMPILED_EPIC
+        _>>=_ (u1 : Unit, u2 : Unit, x : Any, f : Any) -> Any =
+          iobind(x,f) #-}
+  ```
+
+  Here `ioreturn` and `iobind` are Epic functions which are defined in
+  the file `AgdaPrelude.e` which is always included.
+
+  By default the backend will remove so-called forced constructor
+  arguments (and case-splitting on forced variables will be
+  rewritten). This optimisation can be disabled by using the flag
+  `--no-forcing`.
+
+  All data types which look like unary natural numbers after forced
+  constructor arguments have been removed (i.e. types with two
+  constructors, one nullary and one with a single recursive argument)
+  will be represented as "BigInts". This applies to the standard `Fin`
+  type, for instance.
+
+  The backend supports Agda's primitive functions and the BUILTIN
+  pragmas. If the BUILTIN pragmas for unary natural numbers are used,
+  then some operations, like addition and multiplication, will use
+  more efficient "BigInt" operations.
+
+  If you want to make use of the Epic backend you need to install some
+  dependencies, see the README.
+
+* The Emacs mode can compile using either the MAlonzo or the Epic
+  backend. The variable `agda2-backend` controls which backend is
+  used.
+
+Release notes for Agda 2 version 2.2.8
+======================================
+
+Language
+--------
+
+* Record pattern matching.
+
+  It is now possible to pattern match on named record constructors.
+  Example:
+
+  ```agda
+  record Σ (A : Set) (B : A → Set) : Set where
+    constructor _,_
+    field
+      proj₁ : A
+      proj₂ : B proj₁
+
+  map : {A B : Set} {P : A → Set} {Q : B → Set}
+        (f : A → B) → (∀ {x} → P x → Q (f x)) →
+        Σ A P → Σ B Q
+  map f g (x , y) = (f x , g y)
+  ```
+
+  The clause above is internally translated into the following one:
+
+  ```agda
+  map f g p = (f (Σ.proj₁ p) , g (Σ.proj₂ p))
+  ```
+
+  Record patterns containing data type patterns are not translated.
+  Example:
+
+  ```agda
+  add : ℕ × ℕ → ℕ
+  add (zero  , n) = n
+  add (suc m , n) = suc (add (m , n))
+  ```
+
+  Record patterns which do not contain data type patterns, but which
+  do contain dot patterns, are currently rejected. Example:
+
+  ```agda
+  Foo : {A : Set} (p₁ p₂ : A × A) → proj₁ p₁ ≡ proj₁ p₂ → Set₁
+  Foo (x , y) (.x , y′) refl = Set
+  ```
+
+* Proof irrelevant function types.
+
+  Agda now supports irrelevant non-dependent function types:
+
+  ```agda
+  f : .A → B
+  ```
+
+  This type implies that `f` does not depend computationally on its
+  argument. One intended use case is data structures with embedded
+  proofs, like sorted lists:
+
+  ```agda
+  postulate
+    _≤_ : ℕ → ℕ → Set
+    p₁  : 0 ≤ 1
+    p₂  : 0 ≤ 1
+
+  data SList (bound : ℕ) : Set where
+    []    : SList bound
+    scons : (head : ℕ) →
+            .(head ≤ bound) →
+            (tail : SList head) →
+            SList bound
+  ```
+
+  The effect of the irrelevant type in the signature of `scons` is
+  that `scons`'s second argument is never inspected after Agda has
+  ensured that it has the right type. It is even thrown away, leading
+  to smaller term sizes and hopefully some gain in efficiency. The
+  type-checker ignores irrelevant arguments when checking equality, so
+  two lists can be equal even if they contain different proofs:
+
+  ```agda
+  l₁ : SList 1
+  l₁ = scons 0 p₁ []
+
+  l₂ : SList 1
+  l₂ = scons 0 p₂ []
+
+  l₁≡l₂ : l₁ ≡ l₂
+  l₁≡l₂ = refl
+  ```
+
+  Irrelevant arguments can only be used in irrelevant contexts.
+  Consider the following subset type:
+
+  ```agda
+  data Subset (A : Set) (P : A → Set) : Set where
+    _#_ : (elem : A) → .(P elem) → Subset A P
+  ```
+
+  The following two uses are fine:
+
+  ```agda
+  elimSubset : ∀ {A C : Set} {P} →
+               Subset A P → ((a : A) → .(P a) → C) → C
+  elimSubset (a # p) k = k a p
+
+  elem : {A : Set} {P : A → Set} → Subset A P → A
+  elem (x # p) = x
+  ```
+
+  However, if we try to project out the proof component, then Agda
+  complains that `variable p is declared irrelevant, so it cannot be
+  used here`:
+
+  ```agda
+  prjProof : ∀ {A P} (x : Subset A P) → P (elem x)
+  prjProof (a # p) = p
+  ```
+
+  Matching against irrelevant arguments is also forbidden, except in
+  the case of irrefutable matches (record constructor patterns which
+  have been translated away). For instance, the match against the
+  pattern `(p , q)` here is accepted:
+
+  ```agda
+  elim₂ : ∀ {A C : Set} {P Q : A → Set} →
+          Subset A (λ x → Σ (P x) (λ _ → Q x)) →
+          ((a : A) → .(P a) → .(Q a) → C) → C
+  elim₂ (a # (p , q)) k = k a p q
+  ```
+
+  Absurd matches `()` are also allowed.
+
+  Note that record fields can also be irrelevant. Example:
+
+  ```agda
+  record Subset (A : Set) (P : A → Set) : Set where
+    constructor _#_
+    field
+      elem   : A
+      .proof : P elem
+  ```
+
+  Irrelevant fields are never in scope, neither inside nor outside the
+  record. This means that no record field can depend on an irrelevant
+  field, and furthermore projections are not defined for such fields.
+  Irrelevant fields can only be accessed using pattern matching, as in
+  `elimSubset` above.
+
+  Irrelevant function types were added very recently, and have not
+  been subjected to much experimentation yet, so do not be surprised
+  if something is changed before the next release. For instance,
+  dependent irrelevant function spaces (`.(x : A) → B`) might be added
+  in the future.
+
+* Mixfix binders.
+
+  It is now possible to declare user-defined syntax that binds
+  identifiers. Example:
+
+  ```agda
+  postulate
+    State  : Set → Set → Set
+    put    : ∀ {S} → S → State S ⊤
+    get    : ∀ {S} → State S S
+    return : ∀ {A S} → A → State S A
+    bind   : ∀ {A B S} → State S B → (B → State S A) → State S A
+
+  syntax bind e₁ (λ x → e₂) = x ← e₁ , e₂
+
+  increment : State ℕ ⊤
+  increment = x ← get ,
+              put (1 + x)
+  ```
+
+  The syntax declaration for `bind` implies that `x` is in scope in
+  `e₂`, but not in `e₁`.
+
+  You can give fixity declarations along with syntax declarations:
+
+  ```agda
+  infixr 40 bind
+  syntax bind e₁ (λ x → e₂) = x ← e₁ , e₂
+  ```
+
+  The fixity applies to the syntax, not the name; syntax declarations
+  are also restricted to ordinary, non-operator names. The following
+  declaration is disallowed:
+
+  ```agda
+  syntax _==_ x y = x === y
+  ```agda
+
+  Syntax declarations must also be linear; the following declaration
+  is disallowed:
+
+  ```agda
+  syntax wrong x = x + x
+  ```
+
+  Syntax declarations were added very recently, and have not been
+  subjected to much experimentation yet, so do not be surprised if
+  something is changed before the next release.
+
+* `Prop` has been removed from the language.
+
+  The experimental sort `Prop` has been disabled. Any program using
+  `Prop` should typecheck if `Prop` is replaced by `Set₀`. Note that
+  `Prop` is still a keyword.
+
+* Injective type constructors off by default.
+
+  Automatic injectivity of type constructors has been disabled (by
+  default). To enable it, use the flag
+  `--injective-type-constructors`, either on the command line or in an
+  OPTIONS pragma. Note that this flag makes Agda anti-classical and
+  possibly inconsistent:
+
+    Agda with excluded middle is inconsistent
+    http://thread.gmane.org/gmane.comp.lang.agda/1367
+
+  See `test/Succeed/InjectiveTypeConstructors.agda` for an example.
+
+* Termination checker can count.
+
+  There is a new flag `--termination-depth=N` accepting values `N >=
+  1` (with `N = 1` being the default) which influences the behavior of
+  the termination checker. So far, the termination checker has only
+  distinguished three cases when comparing the argument of a recursive
+  call with the formal parameter of the callee.
+
+  `<`: the argument is structurally smaller than the parameter
+
+  `=`: they are equal
+
+  `?`: the argument is bigger or unrelated to the parameter
+
+  This behavior, which is still the default (`N = 1`), will not
+  recognise the following functions as terminating.
+
+   ```agda
+   mutual
+
+      f : ℕ → ℕ
+      f zero          = zero
+      f (suc zero)    = zero
+      f (suc (suc n)) = aux n
+
+      aux : ℕ → ℕ
+      aux m = f (suc m)
+  ```
+
+  The call graph
+
+  ```
+  f --(<)--> aux --(?)--> f
+  ```
+
+  yields a recursive call from `f` to `f` via `aux` where the relation
+  of call argument to callee parameter is computed as "unrelated"
+  (composition of `<` and `?`).
+
+  Setting `N >= 2` allows a finer analysis: `n` has two constructors
+  less than `suc (suc n)`, and `suc m` has one more than `m`, so we get the
+  call graph:
+
+  ```
+  f --(-2)--> aux --(+1)--> f
+  ```
+
+  The indirect call `f --> f` is now labeled with `(-1)`, and the
+  termination checker can recognise that the call argument is
+  decreasing on this path.
+
+  Setting the termination depth to `N` means that the termination
+  checker counts decrease up to `N` and increase up to `N-1`. The
+  default, `N=1`, means that no increase is counted, every increase
+  turns to "unrelated".
+
+  In practice, examples like the one above sometimes arise when `with`
+  is used. As an example, the program
+
+  ```agda
+  f : ℕ → ℕ
+  f zero          = zero
+  f (suc zero)    = zero
+  f (suc (suc n)) with zero
+  ... | _ = f (suc n)
+  ```
+
+  is internally represented as
+
+  ```agda
+  mutual
+
+    f : ℕ → ℕ
+    f zero          = zero
+    f (suc zero)    = zero
+    f (suc (suc n)) = aux n zero
+
+    aux : ℕ → ℕ → ℕ
+    aux m k = f (suc m)
+  ```
+
+  Thus, by default, the definition of `f` using `with` is not accepted
+  by the termination checker, even though it looks structural (`suc n`
+  is a subterm of `suc suc n`). Now, the termination checker is
+  satisfied if the option `--termination-depth=2` is used.
+
+  Caveats:
+
+  - This is an experimental feature, hopefully being replaced by
+    something smarter in the near future.
+
+  - Increasing the termination depth will quickly lead to very long
+    termination checking times. So, use with care. Setting termination
+    depth to `100` by habit, just to be on the safe side, is not a good
+    idea!
+
+  - Increasing termination depth only makes sense for linear data
+    types such as `ℕ` and `Size`. For other types, increase cannot be
+    recognised. For instance, consider a similar example with lists.
+
+    ```agda
+    data List : Set where
+      nil  : List
+      cons : ℕ → List → List
+
+    mutual
+      f : List → List
+      f nil                  = nil
+      f (cons x nil)         = nil
+      f (cons x (cons y ys)) = aux y ys
+
+      aux : ℕ → List → List
+      aux z zs = f (cons z zs)
+     ```
+
+    Here the termination checker compares `cons z zs` to `z` and also
+    to `zs`. In both cases, the result will be "unrelated", no matter
+    how high we set the termination depth. This is because when
+    comparing `cons z zs` to `zs`, for instance, `z` is unrelated to
+    `zs`, thus, `cons z zs` is also unrelated to `zs`. We cannot say
+    it is just "one larger" since `z` could be a very large term. Note
+    that this points to a weakness of untyped termination checking.
+
+    To regain the benefit of increased termination depth, we need to
+    index our lists by a linear type such as `ℕ` or `Size`. With
+    termination depth `2`, the above example is accepted for vectors
+    instead of lists.
+
+* The `codata` keyword has been removed. To use coinduction, use the
+  following new builtins: `INFINITY`, `SHARP` and `FLAT`. Example:
+
+  ```agda
+  {-# OPTIONS --universe-polymorphism #-}
+
+  module Coinduction where
+
+  open import Level
+
+  infix 1000 ♯_
+
+  postulate
+    ∞  : ∀ {a} (A : Set a) → Set a
+    ♯_ : ∀ {a} {A : Set a} → A → ∞ A
+    ♭  : ∀ {a} {A : Set a} → ∞ A → A
+
+  {-# BUILTIN INFINITY ∞  #-}
+  {-# BUILTIN SHARP    ♯_ #-}
+  {-# BUILTIN FLAT     ♭  #-}
+  ```
+
+  Note that (non-dependent) pattern matching on `SHARP` is no longer
+  allowed.
+
+  Note also that strange things might happen if you try to combine the
+  pragmas above with `COMPILED_TYPE`, `COMPILED_DATA` or `COMPILED`
+  pragmas, or if the pragmas do not occur right after the postulates.
+
+  The compiler compiles the `INFINITY` builtin to nothing (more or
+  less), so that the use of coinduction does not get in the way of FFI
+  declarations:
+
+  ```agda
+  data Colist (A : Set) : Set where
+    []  : Colist A
+    _∷_ : (x : A) (xs : ∞ (Colist A)) → Colist A
+
+  {-# COMPILED_DATA Colist [] [] (:) #-}
+  ```
+
+* Infinite types.
+
+  If the new flag `--guardedness-preserving-type-constructors` is
+  used, then type constructors are treated as inductive constructors
+  when we check productivity (but only in parameters, and only if they
+  are used strictly positively or not at all). This makes examples
+  such as the following possible:
+
+  ```agda
+  data Rec (A : ∞ Set) : Set where
+    fold : ♭ A → Rec A
+
+  -- Σ cannot be a record type below.
+
+  data Σ (A : Set) (B : A → Set) : Set where
+    _,_ : (x : A) → B x → Σ A B
+
+  syntax Σ A (λ x → B) = Σ[ x ∶ A ] B
+
+  -- Corecursive definition of the W-type.
+
+  W : (A : Set) → (A → Set) → Set
+  W A B = Rec (♯ (Σ[ x ∶ A ] (B x → W A B)))
+
+  syntax W A (λ x → B) = W[ x ∶ A ] B
+
+  sup : {A : Set} {B : A → Set} (x : A) (f : B x → W A B) → W A B
+  sup x f = fold (x , f)
+
+  W-rec : {A : Set} {B : A → Set}
+          (P : W A B → Set) →
+          (∀ {x} {f : B x → W A B} → (∀ y → P (f y)) → P (sup x f)) →
+          ∀ x → P x
+  W-rec P h (fold (x , f)) = h (λ y → W-rec P h (f y))
+
+  -- Induction-recursion encoded as corecursion-recursion.
+
+  data Label : Set where
+    ′0 ′1 ′2 ′σ ′π ′w : Label
+
+  mutual
+
+    U : Set
+    U = Σ Label U′
+
+    U′ : Label → Set
+    U′ ′0 = ⊤
+    U′ ′1 = ⊤
+    U′ ′2 = ⊤
+    U′ ′σ = Rec (♯ (Σ[ a ∶ U ] (El a → U)))
+    U′ ′π = Rec (♯ (Σ[ a ∶ U ] (El a → U)))
+    U′ ′w = Rec (♯ (Σ[ a ∶ U ] (El a → U)))
+
+    El : U → Set
+    El (′0 , _)            = ⊥
+    El (′1 , _)            = ⊤
+    El (′2 , _)            = Bool
+    El (′σ , fold (a , b)) = Σ[ x ∶ El a ]  El (b x)
+    El (′π , fold (a , b)) =   (x : El a) → El (b x)
+    El (′w , fold (a , b)) = W[ x ∶ El a ]  El (b x)
+
+  U-rec : (P : ∀ u → El u → Set) →
+          P (′1 , _) tt →
+          P (′2 , _) true →
+          P (′2 , _) false →
+          (∀ {a b x y} →
+           P a x → P (b x) y → P (′σ , fold (a , b)) (x , y)) →
+          (∀ {a b f} →
+           (∀ x → P (b x) (f x)) → P (′π , fold (a , b)) f) →
+          (∀ {a b x f} →
+           (∀ y → P (′w , fold (a , b)) (f y)) →
+           P (′w , fold (a , b)) (sup x f)) →
+          ∀ u (x : El u) → P u x
+  U-rec P P1 P2t P2f Pσ Pπ Pw = rec
+    where
+    rec : ∀ u (x : El u) → P u x
+    rec (′0 , _)            ()
+    rec (′1 , _)            _              = P1
+    rec (′2 , _)            true           = P2t
+    rec (′2 , _)            false          = P2f
+    rec (′σ , fold (a , b)) (x , y)        = Pσ (rec _ x) (rec _ y)
+    rec (′π , fold (a , b)) f              = Pπ (λ x → rec _ (f x))
+    rec (′w , fold (a , b)) (fold (x , f)) = Pw (λ y → rec _ (f y))
+  ```
+
+  The `--guardedness-preserving-type-constructors` extension is based
+  on a rather operational understanding of `∞`/`♯_`; it's not yet
+  clear if this extension is consistent.
+
+* Qualified constructors.
+
+  Constructors can now be referred to qualified by their data type.
+  For instance, given
+
+  ```agda
+  data Nat : Set where
+    zero : Nat
+    suc  : Nat → Nat
+
+  data Fin : Nat → Set where
+    zero : ∀ {n} → Fin (suc n)
+    suc  : ∀ {n} → Fin n → Fin (suc n)
+  ```
+
+  you can refer to the constructors unambiguously as `Nat.zero`,
+  `Nat.suc`, `Fin.zero`, and `Fin.suc` (`Nat` and `Fin` are modules
+  containing the respective constructors). Example:
+
+  ```agda
+  inj : (n m : Nat) → Nat.suc n ≡ suc m → n ≡ m
+  inj .m m refl = refl
+  ```
+
+  Previously you had to write something like
+
+  ```agda
+  inj : (n m : Nat) → _≡_ {Nat} (suc n) (suc m) → n ≡ m
+  ```
+
+  to make the type checker able to figure out that you wanted the
+  natural number suc in this case.
+
+* Reflection.
+
+  There are two new constructs for reflection:
+
+    - `quoteGoal x in e`
+
+      In `e` the value of `x` will be a representation of the goal type
+      (the type expected of the whole expression) as an element in a
+      datatype of Agda terms (see below). For instance,
+
+      ```agda
+      example : ℕ
+      example = quoteGoal x in {! at this point x = def (quote ℕ) [] !}
+      ```
+
+    - `quote x : Name`
+
+      If `x` is the name of a definition (function, datatype, record,
+      or a constructor), `quote x` gives you the representation of `x`
+      as a value in the primitive type `Name` (see below).
+
+  Quoted terms use the following BUILTINs and primitives (available
+  from the standard library module `Reflection`):
+
+  ```agda
+  -- The type of Agda names.
+
+  postulate Name : Set
+
+  {-# BUILTIN QNAME Name #-}
+
+  primitive primQNameEquality : Name → Name → Bool
+
+  -- Arguments.
+
+  Explicit? = Bool
+
+  data Arg A : Set where
+    arg : Explicit? → A → Arg A
+
+  {-# BUILTIN ARG    Arg #-}
+  {-# BUILTIN ARGARG arg #-}
+
+  -- The type of Agda terms.
+
+  data Term : Set where
+    var     : ℕ → List (Arg Term) → Term
+    con     : Name → List (Arg Term) → Term
+    def     : Name → List (Arg Term) → Term
+    lam     : Explicit? → Term → Term
+    pi      : Arg Term → Term → Term
+    sort    : Term
+    unknown : Term
+
+  {-# BUILTIN AGDATERM            Term    #-}
+  {-# BUILTIN AGDATERMVAR         var     #-}
+  {-# BUILTIN AGDATERMCON         con     #-}
+  {-# BUILTIN AGDATERMDEF         def     #-}
+  {-# BUILTIN AGDATERMLAM         lam     #-}
+  {-# BUILTIN AGDATERMPI          pi      #-}
+  {-# BUILTIN AGDATERMSORT        sort    #-}
+  {-# BUILTIN AGDATERMUNSUPPORTED unknown #-}
+  ```
+
+  Reflection may be useful when working with internal decision
+  procedures, such as the standard library's ring solver.
+
+* Minor record definition improvement.
+
+  The definition of a record type is now available when type checking
+  record module definitions. This means that you can define things
+  like the following:
+
+  ```agda
+  record Cat : Set₁ where
+    field
+      Obj  : Set
+      _=>_ : Obj → Obj → Set
+      -- ...
+
+    -- not possible before:
+    op : Cat
+    op = record { Obj = Obj; _=>_ = λ A B → B => A }
+  ```
+
+Tools
+-----
+
+* The `Goal type and context` command now shows the goal type before
+  the context, and the context is shown in reverse order. The `Goal
+  type, context and inferred type` command has been modified in a
+  similar way.
+
+* Show module contents command.
+
+  Given a module name `M` the Emacs mode can now display all the
+  top-level modules and names inside `M`, along with types for the
+  names. The command is activated using `C-c C-o` or the menus.
+
+* Auto command.
+
+  A command which searches for type inhabitants has been added. The
+  command is invoked by pressing `C-C C-a` (or using the goal menu).
+  There are several flags and parameters, e.g. `-c` which enables
+  case-splitting in the search. For further information, see the Agda
+  wiki:
+
+    http://wiki.portal.chalmers.se/agda/pmwiki.php?n=Main.Auto
+
+* HTML generation is now possible for a module with unsolved
+  meta-variables, provided that the `--allow-unsolved-metas` flag is
+  used.
+
+Release notes for Agda 2 version 2.2.6
+======================================
+
+Language
+--------
+
+* Universe polymorphism (experimental extension).
+
+  To enable universe polymorphism give the flag
+  `--universe-polymorphism` on the command line or (recommended) as an
+  OPTIONS pragma.
+
+  When universe polymorphism is enabled `Set` takes an argument which is
+  the universe level. For instance, the type of universe polymorphic
+  identity is
+
+  ```agda
+  id : {a : Level} {A : Set a} → A → A.
+  ```
+
+  The type Level is isomorphic to the unary natural numbers and should
+  be specified using the BUILTINs `LEVEL`, `LEVELZERO`, and
+  `LEVELSUC`:
+
+  ```agda
+  data Level : Set where
+    zero : Level
+    suc  : Level → Level
+
+  {-# BUILTIN LEVEL     Level #-}
+  {-# BUILTIN LEVELZERO zero  #-}
+  {-# BUILTIN LEVELSUC  suc   #-}
+  ```
+
+  There is an additional BUILTIN `LEVELMAX` for taking the maximum of two
+  levels:
+
+  ```agda
+  max : Level → Level → Level
+  max  zero    m      = m
+  max (suc n)  zero   = suc n
+  max (suc n) (suc m) = suc (max n m)
+
+  {-# BUILTIN LEVELMAX max #-}
+  ```
+
+  The non-polymorphic universe levels `Set`, `Set₁` and so on are
+  sugar for `Set zero`, `Set (suc zero)`, etc.
+
+  At present there is no automatic lifting of types from one level to
+  another. It can still be done (rather clumsily) by defining types
+  like the following one:
+
+  ```agda
+  data Lifted {a} (A : Set a) : Set (suc a) where
+    lift : A → Lifted A
+  ```
+
+  However, it is likely that automatic lifting is introduced at some
+  point in the future.
+
+* Multiple constructors, record fields, postulates or primitives can
+  be declared using a single type signature:
+
+  ```agda
+  data Bool : Set where
+    false true : Bool
+
+  postulate
+    A B : Set
+  ```
+
+* Record fields can be implicit:
+
+  ```agda
+  record R : Set₁ where
+    field
+      {A}         : Set
+      f           : A → A
+      {B C} D {E} : Set
+      g           : B → C → E
+  ```
+
+  By default implicit fields are not printed.
+
+* Record constructors can be defined:
+
+  ```agda
+  record Σ (A : Set) (B : A → Set) : Set where
+    constructor _,_
+    field
+      proj₁ : A
+      proj₂ : B proj₁
+  ```
+
+  In this example `_,_` gets the type
+
+  ```agda
+   (proj₁ : A) → B proj₁ → Σ A B.
+  ```
+
+  For implicit fields the corresponding constructor arguments become
+  implicit.
+
+  Note that the constructor is defined in the *outer* scope, so any
+  fixity declaration has to be given outside the record definition.
+  The constructor is not in scope inside the record module.
+
+  Note also that pattern matching for records has not been implemented
+  yet.
+
+* BUILTIN hooks for equality.
+
+  The data type
+
+  ```agda
+  data _≡_ {A : Set} (x : A) : A → Set where
+    refl : x ≡ x
+  ```
+
+  can be specified as the builtin equality type using the following
+  pragmas:
+
+  ```agda
+  {-# BUILTIN EQUALITY _≡_  #-}
+  {-# BUILTIN REFL     refl #-}
+  ```
+
+  The builtin equality is used for the new rewrite construct and
+  the `primTrustMe` primitive described below.
+
+* New `rewrite` construct.
+
+  If `eqn : a ≡ b`, where `_≡_` is the builtin equality (see above) you
+  can now write
+
+  ```agda
+  f ps rewrite eqn = rhs
+  ```
+
+  instead of
+
+  ```agda
+    f ps with a | eqn
+    ... | ._ | refl = rhs
+  ```
+
+  The `rewrite` construct has the effect of rewriting the goal and the
+  context by the given equation (left to right).
+
+  You can rewrite using several equations (in sequence) by separating
+  them with vertical bars (|):
+
+  ```agda
+  f ps rewrite eqn₁ | eqn₂ | … = rhs
+  ```
+
+  It is also possible to add `with`-clauses after rewriting:
+
+  ```agda
+  f ps rewrite eqns with e
+  ... | p = rhs
+  ```
+
+  Note that pattern matching happens before rewriting—if you want to
+  rewrite and then do pattern matching you can use a with after the
+  rewrite.
+
+  See `test/Succeed/Rewrite.agda` for some examples.
+
+* A new primitive, `primTrustMe`, has been added:
+
+  ```agda
+    primTrustMe : {A : Set} {x y : A} → x ≡ y
+  ```
+
+  Here `_≡_` is the builtin equality (see BUILTIN hooks for equality,
+  above).
+
+  If `x` and `y` are definitionally equal, then
+  `primTrustMe {x = x} {y = y}` reduces to `refl`.
+
+  Note that the compiler replaces all uses of `primTrustMe` with the
+  `REFL` builtin, without any check for definitional
+  equality. Incorrect uses of `primTrustMe` can potentially lead to
+  segfaults or similar problems.
+
+  For an example of the use of `primTrustMe`, see `Data.String` in
+  version 0.3 of the standard library, where it is used to implement
+  decidable equality on strings using the primitive boolean equality.
+
+* Changes to the syntax and semantics of IMPORT pragmas, which are
+  used by the Haskell FFI. Such pragmas must now have the following
+  form:
+
+  ```agda
+  {-# IMPORT <module name> #-}
+  ```
+
+  These pragmas are interpreted as *qualified* imports, so Haskell
+  names need to be given qualified (unless they come from the Haskell
+  prelude).
+
+* The horizontal tab character (U+0009) is no longer treated as white
+  space.
+
+* Line pragmas are no longer supported.
+
+* The `--include-path` flag can no longer be used as a pragma.
+
+* The experimental and incomplete support for proof irrelevance has
+  been disabled.
+
+Tools
+-----
+
+* New `intro` command in the Emacs mode. When there is a canonical way
+  of building something of the goal type (for instance, if the goal
+  type is a pair), the goal can be refined in this way. The command
+  works for the following goal types:
+
+    - A data type where only one of its constructors can be used to
+      construct an element of the goal type. (For instance, if the
+      goal is a non-empty vector, a `cons` will be introduced.)
+
+    - A record type. A record value will be introduced. Implicit
+      fields will not be included unless showing of implicit arguments
+      is switched on.
+
+    - A function type. A lambda binding as many variables as possible
+      will be introduced. The variable names will be chosen from the
+      goal type if its normal form is a dependent function type,
+      otherwise they will be variations on `x`. Implicit lambdas will
+      only be inserted if showing of implicit arguments is switched
+      on.
+
+  This command can be invoked by using the `refine` command
+  (`C-c C-r`) when the goal is empty. (The old behaviour of the refine
+  command in this situation was to ask for an expression using the
+  minibuffer.)
+
+* The Emacs mode displays `Checked` in the mode line if the current
+  file type checked successfully without any warnings.
+
+* If a file `F` is loaded, and this file defines the module `M`, it is
+  an error if `F` is not the file which defines `M` according to the
+  include path.
+
+  Note that the command-line tool and the Emacs mode define the
+  meaning of relative include paths differently: the command-line tool
+  interprets them relative to the current working directory, whereas
+  the Emacs mode interprets them relative to the root directory of the
+  current project. (As an example, if the module `A.B.C` is loaded
+  from the file `<some-path>/A/B/C.agda`, then the root directory is
+  `<some-path>`.)
+
+* It is an error if there are several files on the include path which
+  match a given module name.
+
+* Interface files are relocatable. You can move around source trees as
+  long as the include path is updated in a corresponding way. Note
+  that a module `M` may be re-typechecked if its time stamp is
+  strictly newer than that of the corresponding interface file
+  (`M.agdai`).
+
+* Type-checking is no longer done when an up-to-date interface exists.
+  (Previously the initial module was always type-checked.)
+
+* Syntax highlighting files for Emacs (`.agda.el`) are no longer used.
+  The `--emacs` flag has been removed. (Syntax highlighting
+  information is cached in the interface files.)
+
+* The Agate and Alonzo compilers have been retired. The options
+  `--agate`, `--alonzo` and `--malonzo` have been removed.
+
+* The default directory for MAlonzo output is the project's root
+  directory. The `--malonzo-dir` flag has been renamed to
+  `--compile-dir`.
+
+* Emacs mode: `C-c C-x C-d` no longer resets the type checking state.
+  `C-c C-x C-r` can be used for a more complete reset. `C-c C-x C-s`
+  (which used to reload the syntax highlighting information) has been
+  removed. `C-c C-l` can be used instead.
+
+* The Emacs mode used to define some "abbrevs", unless the user
+  explicitly turned this feature off. The new default is *not* to add
+  any abbrevs. The old default can be obtained by customising
+  `agda2-mode-abbrevs-use-defaults` (a customisation buffer can be
+  obtained by typing `M-x customize-group agda2 RET` after an Agda
+  file has been loaded).
+
+Release notes for Agda 2 version 2.2.4
+======================================
+
+Important changes since 2.2.2:
+
+* Change to the semantics of `open import` and `open module`. The
+  declaration
+
+  ```agda
+  open import M <using/hiding/renaming>
+  ```
+
+  now translates to
+
+  ```agda
+  import A
+  open A <using/hiding/renaming>
+  ```
+
+  instead of
+
+  ```agda
+  import A <using/hiding/renaming>
+  open A
+  ```
+
+  The same translation is used for `open module M = E …`. Declarations
+  involving the keywords as or public are changed in a corresponding
+  way (`as` always goes with import, and `public` always with open).
+
+  This change means that import directives do not affect the qualified
+  names when open import/module is used. To get the old behaviour you
+  can use the expanded version above.
+
+* Names opened publicly in parameterised modules no longer inherit the
+  module parameters. Example:
+
+  ```agda
+  module A where
+    postulate X : Set
+
+  module B (Y : Set) where
+    open A public
+  ```
+
+  In Agda 2.2.2 `B.X` has type `(Y : Set) → Set`, whereas in
+  Agda 2.2.4 `B.X` has type Set.
+
+* Previously it was not possible to export a given constructor name
+  through two different `open public` statements in the same module.
+  This is now possible.
+
+* Unicode subscript digits are now allowed for the hierarchy of
+  universes (`Set₀`, `Set₁`, …): `Set₁` is equivalent to `Set1`.
+
+Release notes for Agda 2 version 2.2.2
+======================================
+
+Tools
+-----
+
+* The `--malonzodir` option has been renamed to `--malonzo-dir`.
+
+* The output of `agda --html` is by default placed in a directory
+  called `html`.
+
+Infrastructure
+--------------
+
+* The Emacs mode is included in the Agda Cabal package, and installed
+  by `cabal install`. The recommended way to enable the Emacs mode is
+  to include the following code in `.emacs`:
+
+  ```elisp
+  (load-file (let ((coding-system-for-read 'utf-8))
+                  (shell-command-to-string "agda-mode locate")))
+  ```
+
+Release notes for Agda 2 version 2.2.0
+======================================
+
+Important changes since 2.1.2 (which was released 2007-08-16):
+
+Language
+--------
+
+* Exhaustive pattern checking. Agda complains if there are missing
+  clauses in a function definition.
+
+* Coinductive types are supported. This feature is under
+  development/evaluation, and may change.
+
+  http://wiki.portal.chalmers.se/agda/agda.php?n=ReferenceManual.Codatatypes
+
+* Another experimental feature: Sized types, which can make it easier
+  to explain why your code is terminating.
+
+* Improved constraint solving for functions with constructor headed
+  right hand sides.
+
+  http://wiki.portal.chalmers.se/agda/agda.php?n=ReferenceManual.FindingTheValuesOfImplicitArguments
+
+* A simple, well-typed foreign function interface, which allows use of
+  Haskell functions in Agda code.
+
+  http://wiki.portal.chalmers.se/agda/pmwiki.php?n=Docs.FFI
+
+* The tokens `forall`, `->` and `\` can be written as `∀`, `→` and
+  `λ`.
+
+* Absurd lambdas: `λ ()` and `λ {}`.
+
+  http://thread.gmane.org/gmane.comp.lang.agda/440
+
+* Record fields whose values can be inferred can be omitted.
+
+* Agda complains if it spots an unreachable clause, or if a pattern
+  variable "shadows" a hidden constructor of matching type.
+
+  http://thread.gmane.org/gmane.comp.lang.agda/720
+
+Tools
+-----
+
+* Case-split: The user interface can replace a pattern variable with
+  the corresponding constructor patterns. You get one new left-hand
+  side for every possible constructor.
+
+  http://wiki.portal.chalmers.se/agda/pmwiki.php?n=Main.QuickGuideToEditingTypeCheckingAndCompilingAgdaCode
+
+* The MAlonzo compiler.
+
+  http://wiki.portal.chalmers.se/agda/pmwiki.php?n=Docs.MAlonzo
+
+* A new Emacs input method, which contains bindings for many Unicode
+  symbols, is by default activated in the Emacs mode.
+
+  http://wiki.portal.chalmers.se/agda/pmwiki.php?n=Docs.UnicodeInput
+
+* Highlighted, hyperlinked HTML can be generated from Agda source
+  code.
+
+  http://wiki.portal.chalmers.se/agda/pmwiki.php?n=Main.HowToGenerateWebPagesFromSourceCode
+
+* The command-line interactive mode (`agda -I`) is no longer
+  supported, but should still work.
+
+  http://thread.gmane.org/gmane.comp.lang.agda/245
+
+* Reload times when working on large projects are now considerably
+  better.
+
+  http://thread.gmane.org/gmane.comp.lang.agda/551
+
+Libraries
+---------
+
+* A standard library is under development.
+
+  http://wiki.portal.chalmers.se/agda/pmwiki.php?n=Libraries.StandardLibrary
+
+Documentation
+-------------
+
+* The Agda wiki is better organised. It should be easier for a
+  newcomer to find relevant information now.
+
+  http://wiki.portal.chalmers.se/agda/
+
+Infrastructure
+--------------
+
+* Easy-to-install packages for Windows and Debian/Ubuntu have been
+  prepared.
+
+  http://wiki.portal.chalmers.se/agda/pmwiki.php?n=Main.Download
+
+* Agda 2.2.0 is available from Hackage.
+
+  http://hackage.haskell.org/
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -1,10 +1,13 @@
 Agda 2
 ======
 
-[![Hackage](https://img.shields.io/hackage/v/Agda.svg)](http://hackage.haskell.org/package/Agda) [![Build Status](https://travis-ci.org/agda/agda.svg?branch=master)](https://travis-ci.org/agda/agda)
+[![Hackage version](https://img.shields.io/hackage/v/Agda.svg?label=Hackage)](http://hackage.haskell.org/package/Agda)
+[![Stackage version](https://www.stackage.org/package/Agda/badge/lts?label=Stackage)](https://www.stackage.org/package/Agda)
+[![Build Status](https://travis-ci.org/agda/agda.svg?branch=stable-2.5)](https://travis-ci.org/agda/agda)
 
 Table of contents:
 
+* [Documentation](#documentation)
 * [Prerequisites](#prerequisites)
 * [Installing Agda](#installing-agda)
 * [Configuring the Emacs mode](#configuring-the-emacs-mode)
@@ -13,7 +16,12 @@
 Note that this README only discusses installation of Agda, not its standard
 library. See the [Agda Wiki][agdawiki] for information about the library.
 
+Documentation
+-------------
 
+* [User manual](http://agda.readthedocs.io)
+* [CHANGELOG](https://github.com/agda/agda/blob/master/CHANGELOG.md)
+
 Prerequisites
 -------------
 
@@ -23,6 +31,7 @@
 * cabal-install: http://www.haskell.org/cabal/
 * Alex:          http://www.haskell.org/alex/
 * Happy:         http://www.haskell.org/happy/
+* cpphs:         http://projects.haskell.org/cpphs/
 * GNU Emacs:     http://www.gnu.org/software/emacs/
 
 You should also make sure that programs installed by cabal-install are
diff --git a/dist/build/Agda/Syntax/Parser/Lexer.hs b/dist/build/Agda/Syntax/Parser/Lexer.hs
--- a/dist/build/Agda/Syntax/Parser/Lexer.hs
+++ b/dist/build/Agda/Syntax/Parser/Lexer.hs
@@ -17,7 +17,7 @@
     ( -- * The main function
       lexer
       -- * Lex states
-    , normal, literate, code
+    , normal, code
     , layout, empty_layout, bol, imp_dir
       -- * Alex generated functions
     , AlexReturn(..), alexScanUser
@@ -56,25 +56,22 @@
 alex_tab_size :: Int
 alex_tab_size = 8
 alex_base :: AlexAddr
-alex_base = AlexA# "\xf7\xff\xff\xff\x6c\x00\x00\x00\xe1\x00\x00\x00\x55\x01\x00\x00\xca\x01\x00\x00\x3f\x02\x00\x00\xb5\x02\x00\x00\xab\x03\x00\x00\x88\xff\xff\xff\xd9\xff\xff\xff\x8a\x04\x00\x00\xe8\x04\x00\x00\x46\x05\x00\x00\xb6\x02\x00\x00\xa2\x05\x00\x00\x9d\x03\x00\x00\xfe\x05\x00\x00\xfd\x05\x00\x00\x7d\x06\x00\x00\xa2\xff\xff\xff\xfd\x06\x00\x00\xdc\x07\x00\x00\xdb\x07\x00\x00\x5b\x08\x00\x00\xdb\x08\x00\x00\x5b\x09\x00\x00\x3a\x0a\x00\x00\x96\x0a\x00\x00\xf2\x0a\x00\x00\xf1\x0a\x00\x00\x99\xff\xff\xff\xa6\xff\xff\xff\x8f\xff\xff\xff\x9d\xff\xff\xff\xa8\xff\xff\xff\x00\x00\x00\x00\x62\x0b\x00\x00\x00\x00\x00\x00\xd3\x0b\x00\x00\xa9\xff\xff\xff\x00\x00\x00\x00\x44\x0c\x00\x00\x00\x00\x00\x00\xb5\x0c\x00\x00\x00\x00\x00\x00\xf6\x0c\x00\x00\x00\x00\x00\x00\x37\x0d\x00\x00\x00\x00\x00\x00\x78\x0d\x00\x00\x00\x00\x00\x00\xb9\x0d\x00\x00\x98\x0e\x00\x00\x17\x0f\x00\x00\xd7\x0e\x00\x00\x00\x00\x00\x00\xd7\x0f\x00\x00\x97\x0f\x00\x00\x00\x00\x00\x00\x97\x10\x00\x00\x57\x10\x00\x00\x00\x00\x00\x00\x57\x11\x00\x00\x04\x00\x00\x00\xcd\x11\x00\x00\x2f\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc3\x12\x00\x00\xb9\x13\x00\x00\xaf\x14\x00\x00\xa5\x15\x00\x00\x9b\x16\x00\x00\x91\x17\x00\x00\x87\x18\x00\x00\x7d\x19\x00\x00\x73\x1a\x00\x00\x69\x1b\x00\x00\x5f\x1c\x00\x00\x55\x1d\x00\x00\x4b\x1e\x00\x00\x41\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x73\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x20\x00\x00\x2f\x21\x00\x00\x26\x22\x00\x00\x1d\x23\x00\x00\x14\x24\x00\x00\x0b\x25\x00\x00\x02\x26\x00\x00\xf9\x26\x00\x00\xf0\x27\x00\x00\xe7\x28\x00\x00\xde\x29\x00\x00\xd5\x2a\x00\x00\xcc\x2b\x00\x00\xc3\x2c\x00\x00\xba\x2d\x00\x00\xb1\x2e\x00\x00\xa8\x2f\x00\x00\x9f\x30\x00\x00\x96\x31\x00\x00\x8d\x32\x00\x00\x84\x33\x00\x00\x7b\x34\x00\x00\x72\x35\x00\x00\x69\x36\x00\x00\x60\x37\x00\x00\x57\x38\x00\x00\x4e\x39\x00\x00\x45\x3a\x00\x00\x3c\x3b\x00\x00\x33\x3c\x00\x00\x2a\x3d\x00\x00\x21\x3e\x00\x00\x18\x3f\x00\x00\x0f\x40\x00\x00\x06\x41\x00\x00\xfd\x41\x00\x00\xf4\x42\x00\x00\xeb\x43\x00\x00\xe2\x44\x00\x00\xd9\x45\x00\x00\xd0\x46\x00\x00\xc7\x47\x00\x00\xbe\x48\x00\x00\xb5\x49\x00\x00\xac\x4a\x00\x00\xa3\x4b\x00\x00\x9a\x4c\x00\x00\x91\x4d\x00\x00\x88\x4e\x00\x00\x7f\x4f\x00\x00\x76\x50\x00\x00\x6d\x51\x00\x00\x64\x52\x00\x00\x5b\x53\x00\x00\x52\x54\x00\x00\x49\x55\x00\x00\x40\x56\x00\x00\x37\x57\x00\x00\x2e\x58\x00\x00\x25\x59\x00\x00\x1c\x5a\x00\x00\x13\x5b\x00\x00\x0a\x5c\x00\x00\x01\x5d\x00\x00\xf8\x5d\x00\x00\xef\x5e\x00\x00\xe6\x5f\x00\x00\xdd\x60\x00\x00\xd4\x61\x00\x00\xcb\x62\x00\x00\xc2\x63\x00\x00\xb9\x64\x00\x00\xb0\x65\x00\x00\xa7\x66\x00\x00\x9e\x67\x00\x00\x95\x68\x00\x00\x8c\x69\x00\x00\x83\x6a\x00\x00\x7a\x6b\x00\x00\x71\x6c\x00\x00\x68\x6d\x00\x00\x5f\x6e\x00\x00\x56\x6f\x00\x00\x4d\x70\x00\x00\x44\x71\x00\x00\x3b\x72\x00\x00\x32\x73\x00\x00\x29\x74\x00\x00\x20\x75\x00\x00\x17\x76\x00\x00\x0e\x77\x00\x00\x05\x78\x00\x00\xfc\x78\x00\x00\xf3\x79\x00\x00\xea\x7a\x00\x00\xe1\x7b\x00\x00\xd8\x7c\x00\x00\xcf\x7d\x00\x00\xc6\x7e\x00\x00\xbd\x7f\x00\x00\xb4\x80\x00\x00\xab\x81\x00\x00\xa2\x82\x00\x00\x99\x83\x00\x00\x90\x84\x00\x00\x87\x85\x00\x00\x7e\x86\x00\x00\x75\x87\x00\x00\x6c\x88\x00\x00\x63\x89\x00\x00\x5a\x8a\x00\x00\x51\x8b\x00\x00\x48\x8c\x00\x00\x3f\x8d\x00\x00\x36\x8e\x00\x00\x2d\x8f\x00\x00\x24\x90\x00\x00\x1b\x91\x00\x00\x12\x92\x00\x00\x09\x93\x00\x00\x00\x94\x00\x00\xf7\x94\x00\x00\xee\x95\x00\x00\xe5\x96\x00\x00\xdc\x97\x00\x00\xd3\x98\x00\x00\xca\x99\x00\x00\xc1\x9a\x00\x00\xb8\x9b\x00\x00\xaf\x9c\x00\x00\xa6\x9d\x00\x00\x9d\x9e\x00\x00\x94\x9f\x00\x00\x8b\xa0\x00\x00\x82\xa1\x00\x00\x79\xa2\x00\x00\x70\xa3\x00\x00\x67\xa4\x00\x00\x5e\xa5\x00\x00\x55\xa6\x00\x00\x4c\xa7\x00\x00\x43\xa8\x00\x00\x3a\xa9\x00\x00\x31\xaa\x00\x00\x28\xab\x00\x00\x1f\xac\x00\x00\x16\xad\x00\x00\x0d\xae\x00\x00\x04\xaf\x00\x00\xfb\xaf\x00\x00\xf2\xb0\x00\x00\xe9\xb1\x00\x00\xe0\xb2\x00\x00\xd7\xb3\x00\x00\xce\xb4\x00\x00\xc5\xb5\x00\x00\xbc\xb6\x00\x00\xb3\xb7\x00\x00\xaa\xb8\x00\x00\xa1\xb9\x00\x00\x98\xba\x00\x00\x8f\xbb\x00\x00\x86\xbc\x00\x00\x7d\xbd\x00\x00\x74\xbe\x00\x00\x6b\xbf\x00\x00\x62\xc0\x00\x00\x59\xc1\x00\x00\x50\xc2\x00\x00\x47\xc3\x00\x00\x3e\xc4\x00\x00\x35\xc5\x00\x00\x2c\xc6\x00\x00\x23\xc7\x00\x00\x1a\xc8\x00\x00\x11\xc9\x00\x00\x08\xca\x00\x00\xff\xca\x00\x00\xf6\xcb\x00\x00\xed\xcc\x00\x00\xe4\xcd\x00\x00\xdb\xce\x00\x00\xd2\xcf\x00\x00\xc9\xd0\x00\x00\xc0\xd1\x00\x00\xb7\xd2\x00\x00\xae\xd3\x00\x00\xa5\xd4\x00\x00\x9c\xd5\x00\x00\x93\xd6\x00\x00\x8a\xd7\x00\x00\x81\xd8\x00\x00\x78\xd9\x00\x00\x6f\xda\x00\x00\x66\xdb\x00\x00\x5d\xdc\x00\x00\x54\xdd\x00\x00\x4b\xde\x00\x00\x42\xdf\x00\x00\x39\xe0\x00\x00\x30\xe1\x00\x00\xec\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\xe2\x00\x00\x26\xe3\x00\x00\x26\xe4\x00\x00\x1c\xe5\x00\x00\x1c\xe6\x00\x00\x12\xe7\x00\x00\x12\xe8\x00\x00\x12\xe9\x00\x00\x12\xea\x00\x00\x12\xeb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xba\x12\x00\x00\xa3\x13\x00\x00\x99\x14\x00\x00\x8f\x15\x00\x00\x7b\x17\x00\x00\x71\x18\x00\x00\x67\x19\x00\x00\x5d\x1a\x00\x00\x53\x1b\x00\x00\x35\x1e\x00\x00\x2f\x20\x00\x00\x26\x21\x00\x00\x1d\x22\x00\x00\x14\x23\x00\x00\xf9\x25\x00\x00\xf0\x26\x00\x00\xe7\x27\x00\x00\xde\x28\x00\x00\xd5\x29\x00\x00\xcc\x2a\x00\x00\xc3\x2b\x00\x00\xba\x2c\x00\x00\xb1\x2d\x00\x00\x9f\x2f\x00\x00\x96\x30\x00\x00\x8d\x31\x00\x00\x84\x32\x00\x00\x7b\x33\x00\x00\x72\x34\x00\x00\x69\x35\x00\x00\x60\x36\x00\x00\x57\x37\x00\x00\x4e\x38\x00\x00\x45\x39\x00\x00\x3c\x3a\x00\x00\x33\x3b\x00\x00\x34\x3c\x00\x00\x21\x3d\x00\x00\x22\x3e\x00\x00\x10\x40\x00\x00\x38\x57\x00\x00\x14\x5b\x00\x00\xf9\x5d\x00\x00\x3c\x72\x00\x00\xf4\x79\x00\x00\xd0\x7d\x00\x00\xbe\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe2\xff\xff\xff\xe3\xff\xff\xff\x00\x00\x00\x00\x9a\x83\x00\x00\x76\x87\x00\x00\x56\x52\x00\x00\x2e\x8f\x00\x00\xb9\x9b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\xa3\x00\x00\x85\x16\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa2\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\xe2\x00\x00\x06\xe5\x00\x00\xf1\xeb\x00\x00\x4d\xec\x00\x00\xa9\xec\x00\x00\x05\xed\x00\x00\x61\xed\x00\x00\xbd\xed\x00\x00\x19\xee\x00\x00\x75\xee\x00\x00\xd1\xee\x00\x00\x2d\xef\x00\x00\x89\xef\x00\x00\xe5\xef\x00\x00\x41\xf0\x00\x00\x9d\xf0\x00\x00\xf9\xf0\x00\x00\x55\xf1\x00\x00\xb1\xf1\x00\x00\x0d\xf2\x00\x00\x6b\xf2\x00\x00\xc9\xf2\x00\x00\x27\xf3\x00\x00\x85\xf3\x00\x00\xe3\xf3\x00\x00\x41\xf4\x00\x00\x9f\xf4\x00\x00\xfb\xf4\x00\x00\x57\xf5\x00\x00\xb3\xf5\x00\x00\x0f\xf6\x00\x00\x6b\xf6\x00\x00\xc7\xf6\x00\x00\x23\xf7\x00\x00\x7f\xf7\x00\x00\xdb\xf7\x00\x00\x37\xf8\x00\x00\x93\xf8\x00\x00\xef\xf8\x00\x00\x4b\xf9\x00\x00\xa7\xf9\x00\x00\x03\xfa\x00\x00\x5f\xfa\x00\x00\xbb\xfa\x00\x00\x17\xfb\x00\x00\x73\xfb\x00\x00\xcf\xfb\x00\x00\x2b\xfc\x00\x00\x87\xfc\x00\x00\xe3\xfc\x00\x00\x3f\xfd\x00\x00\x9b\xfd\x00\x00\xf7\xfd\x00\x00\x53\xfe\x00\x00\xaf\xfe\x00\x00\x0b\xff\x00\x00\x67\xff\x00\x00\xc3\xff\x00\x00\x1f\x00\x01\x00\x7b\x00\x01\x00\xd7\x00\x01\x00\x33\x01\x01\x00\x8f\x01\x01\x00\xeb\x01\x01\x00\x47\x02\x01\x00\xa3\x02\x01\x00\xff\x02\x01\x00\x5b\x03\x01\x00\xb7\x03\x01\x00\x13\x04\x01\x00\x6f\x04\x01\x00\xcb\x04\x01\x00\x27\x05\x01\x00\x83\x05\x01\x00\xdf\x05\x01\x00\x3b\x06\x01\x00\x97\x06\x01\x00\xf3\x06\x01\x00\x4f\x07\x01\x00\xab\x07\x01\x00\x07\x08\x01\x00\x63\x08\x01\x00\xbf\x08\x01\x00\x1b\x09\x01\x00\x77\x09\x01\x00\xd3\x09\x01\x00\x2f\x0a\x01\x00\x8b\x0a\x01\x00\xe7\x0a\x01\x00\x43\x0b\x01\x00\x9f\x0b\x01\x00\xfb\x0b\x01\x00\x57\x0c\x01\x00\xb3\x0c\x01\x00\x0f\x0d\x01\x00\x6b\x0d\x01\x00\xc7\x0d\x01\x00\x23\x0e\x01\x00\x7f\x0e\x01\x00\xdb\x0e\x01\x00\x37\x0f\x01\x00\x93\x0f\x01\x00\xef\x0f\x01\x00\x4b\x10\x01\x00\xa7\x10\x01\x00\x03\x11\x01\x00\x5f\x11\x01\x00\xbb\x11\x01\x00\x17\x12\x01\x00\x73\x12\x01\x00\xcf\x12\x01\x00\x2b\x13\x01\x00\x87\x13\x01\x00\xe3\x13\x01\x00\x3f\x14\x01\x00\x9b\x14\x01\x00\xf7\x14\x01\x00\x53\x15\x01\x00\xaf\x15\x01\x00\x0b\x16\x01\x00\x67\x16\x01\x00\xc3\x16\x01\x00\x1f\x17\x01\x00\x7b\x17\x01\x00\xd7\x17\x01\x00\x33\x18\x01\x00\x8f\x18\x01\x00\xeb\x18\x01\x00\x47\x19\x01\x00\xa3\x19\x01\x00\xff\x19\x01\x00\x5b\x1a\x01\x00\xb7\x1a\x01\x00\x13\x1b\x01\x00\x6f\x1b\x01\x00\xcb\x1b\x01\x00\x27\x1c\x01\x00\x83\x1c\x01\x00\xdf\x1c\x01\x00\x3b\x1d\x01\x00\x97\x1d\x01\x00\xf3\x1d\x01\x00\x4f\x1e\x01\x00\xab\x1e\x01\x00\x07\x1f\x01\x00\x63\x1f\x01\x00\xbf\x1f\x01\x00\x1b\x20\x01\x00\x77\x20\x01\x00\xd3\x20\x01\x00\x2f\x21\x01\x00\x8b\x21\x01\x00\xe7\x21\x01\x00\x43\x22\x01\x00\x9f\x22\x01\x00\xfb\x22\x01\x00\x57\x23\x01\x00\xb3\x23\x01\x00\x0f\x24\x01\x00\x6b\x24\x01\x00\xc7\x24\x01\x00\x23\x25\x01\x00\x7f\x25\x01\x00\xdb\x25\x01\x00\x37\x26\x01\x00\x93\x26\x01\x00\xef\x26\x01\x00\x4b\x27\x01\x00\xa7\x27\x01\x00\x03\x28\x01\x00\x5f\x28\x01\x00\xbb\x28\x01\x00\x17\x29\x01\x00\x73\x29\x01\x00\xcf\x29\x01\x00\x2b\x2a\x01\x00\x87\x2a\x01\x00\xe3\x2a\x01\x00\x3f\x2b\x01\x00\x9b\x2b\x01\x00\xf7\x2b\x01\x00\x53\x2c\x01\x00\xaf\x2c\x01\x00\x0b\x2d\x01\x00\x67\x2d\x01\x00\xc3\x2d\x01\x00\x1f\x2e\x01\x00\x7b\x2e\x01\x00\xd7\x2e\x01\x00\x33\x2f\x01\x00\x8f\x2f\x01\x00\xeb\x2f\x01\x00\x47\x30\x01\x00\xa3\x30\x01\x00\xff\x30\x01\x00\x5b\x31\x01\x00\xb7\x31\x01\x00\x13\x32\x01\x00\x6f\x32\x01\x00\xcb\x32\x01\x00\x27\x33\x01\x00\x83\x33\x01\x00\xdf\x33\x01\x00\x3b\x34\x01\x00\x97\x34\x01\x00\xf3\x34\x01\x00\x4f\x35\x01\x00\xab\x35\x01\x00\x07\x36\x01\x00\x63\x36\x01\x00\xbf\x36\x01\x00\x1b\x37\x01\x00\x77\x37\x01\x00\xd3\x37\x01\x00\x2f\x38\x01\x00\x8b\x38\x01\x00\xe7\x38\x01\x00\x43\x39\x01\x00\x9f\x39\x01\x00\xfb\x39\x01\x00\x57\x3a\x01\x00\xb3\x3a\x01\x00\x0f\x3b\x01\x00\x6b\x3b\x01\x00\xc7\x3b\x01\x00\x23\x3c\x01\x00\x7f\x3c\x01\x00"#
+alex_base = AlexA# "\xf7\xff\xff\xff\x6c\x00\x00\x00\xe1\x00\x00\x00\x55\x01\x00\x00\xca\x01\x00\x00\x3f\x02\x00\x00\xb5\x02\x00\x00\x73\x00\x00\x00\xd8\xff\xff\xff\x94\x03\x00\x00\xf2\x03\x00\x00\x50\x04\x00\x00\xb6\x02\x00\x00\xac\x04\x00\x00\x08\x05\x00\x00\x5d\x05\x00\x00\x5c\x05\x00\x00\xdc\x05\x00\x00\xbb\x06\x00\x00\xba\x06\x00\x00\x3a\x07\x00\x00\xba\x07\x00\x00\x99\x08\x00\x00\xf5\x08\x00\x00\xf4\x08\x00\x00\x00\x00\x00\x00\x65\x09\x00\x00\x00\x00\x00\x00\xd6\x09\x00\x00\x00\x00\x00\x00\x47\x0a\x00\x00\x00\x00\x00\x00\x88\x0a\x00\x00\x00\x00\x00\x00\xc9\x0a\x00\x00\x00\x00\x00\x00\x0a\x0b\x00\x00\xe9\x0b\x00\x00\x68\x0c\x00\x00\x28\x0c\x00\x00\x00\x00\x00\x00\x28\x0d\x00\x00\xe8\x0c\x00\x00\x00\x00\x00\x00\xe8\x0d\x00\x00\x5e\x0e\x00\x00\xc0\x0d\x00\x00\x00\x00\x00\x00\x7a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x0f\x00\x00\x4c\x10\x00\x00\x43\x11\x00\x00\x3a\x12\x00\x00\x31\x13\x00\x00\x28\x14\x00\x00\x1f\x15\x00\x00\x16\x16\x00\x00\x0d\x17\x00\x00\x04\x18\x00\x00\xfb\x18\x00\x00\xf2\x19\x00\x00\xe9\x1a\x00\x00\xe0\x1b\x00\x00\xd7\x1c\x00\x00\xce\x1d\x00\x00\xc5\x1e\x00\x00\xbc\x1f\x00\x00\xb3\x20\x00\x00\xaa\x21\x00\x00\xa1\x22\x00\x00\x98\x23\x00\x00\x8f\x24\x00\x00\x86\x25\x00\x00\x7d\x26\x00\x00\x74\x27\x00\x00\x6b\x28\x00\x00\x62\x29\x00\x00\x59\x2a\x00\x00\x50\x2b\x00\x00\x47\x2c\x00\x00\x3e\x2d\x00\x00\x35\x2e\x00\x00\x2c\x2f\x00\x00\x23\x30\x00\x00\x1a\x31\x00\x00\x11\x32\x00\x00\x08\x33\x00\x00\xff\x33\x00\x00\xf6\x34\x00\x00\xed\x35\x00\x00\xe4\x36\x00\x00\xdb\x37\x00\x00\xd2\x38\x00\x00\xc9\x39\x00\x00\xc0\x3a\x00\x00\xb7\x3b\x00\x00\xae\x3c\x00\x00\xa5\x3d\x00\x00\x9c\x3e\x00\x00\x93\x3f\x00\x00\x8a\x40\x00\x00\x81\x41\x00\x00\x78\x42\x00\x00\x6f\x43\x00\x00\x66\x44\x00\x00\x5d\x45\x00\x00\x54\x46\x00\x00\x4b\x47\x00\x00\x42\x48\x00\x00\x39\x49\x00\x00\x30\x4a\x00\x00\x27\x4b\x00\x00\x1e\x4c\x00\x00\x15\x4d\x00\x00\x0c\x4e\x00\x00\x03\x4f\x00\x00\xfa\x4f\x00\x00\xf1\x50\x00\x00\xe8\x51\x00\x00\xdf\x52\x00\x00\xd6\x53\x00\x00\xcd\x54\x00\x00\xc4\x55\x00\x00\xbb\x56\x00\x00\xb2\x57\x00\x00\xa9\x58\x00\x00\xa0\x59\x00\x00\x97\x5a\x00\x00\x8e\x5b\x00\x00\x85\x5c\x00\x00\x7c\x5d\x00\x00\x73\x5e\x00\x00\x6a\x5f\x00\x00\x61\x60\x00\x00\x58\x61\x00\x00\x4f\x62\x00\x00\x46\x63\x00\x00\x3d\x64\x00\x00\x34\x65\x00\x00\x2b\x66\x00\x00\x22\x67\x00\x00\x19\x68\x00\x00\x10\x69\x00\x00\x07\x6a\x00\x00\xfe\x6a\x00\x00\xf5\x6b\x00\x00\xec\x6c\x00\x00\xe3\x6d\x00\x00\xda\x6e\x00\x00\xd1\x6f\x00\x00\xc8\x70\x00\x00\xbf\x71\x00\x00\xb6\x72\x00\x00\xad\x73\x00\x00\xa4\x74\x00\x00\x9b\x75\x00\x00\x92\x76\x00\x00\x89\x77\x00\x00\x80\x78\x00\x00\x77\x79\x00\x00\x6e\x7a\x00\x00\x65\x7b\x00\x00\x5c\x7c\x00\x00\x53\x7d\x00\x00\x4a\x7e\x00\x00\x41\x7f\x00\x00\x38\x80\x00\x00\x2f\x81\x00\x00\x26\x82\x00\x00\x1d\x83\x00\x00\x14\x84\x00\x00\x0b\x85\x00\x00\x02\x86\x00\x00\xf9\x86\x00\x00\xf0\x87\x00\x00\xe7\x88\x00\x00\xde\x89\x00\x00\xd5\x8a\x00\x00\xcc\x8b\x00\x00\xc3\x8c\x00\x00\xba\x8d\x00\x00\xb1\x8e\x00\x00\xa8\x8f\x00\x00\x9f\x90\x00\x00\x96\x91\x00\x00\x8d\x92\x00\x00\x84\x93\x00\x00\x7b\x94\x00\x00\x72\x95\x00\x00\x69\x96\x00\x00\x60\x97\x00\x00\x57\x98\x00\x00\x4e\x99\x00\x00\x45\x9a\x00\x00\x3c\x9b\x00\x00\x33\x9c\x00\x00\x2a\x9d\x00\x00\x21\x9e\x00\x00\x18\x9f\x00\x00\x0f\xa0\x00\x00\x06\xa1\x00\x00\xfd\xa1\x00\x00\xf4\xa2\x00\x00\xeb\xa3\x00\x00\xe2\xa4\x00\x00\xd9\xa5\x00\x00\xd0\xa6\x00\x00\xc7\xa7\x00\x00\xbe\xa8\x00\x00\xb5\xa9\x00\x00\xac\xaa\x00\x00\xa3\xab\x00\x00\x9a\xac\x00\x00\x91\xad\x00\x00\x88\xae\x00\x00\x7f\xaf\x00\x00\x76\xb0\x00\x00\x6d\xb1\x00\x00\x64\xb2\x00\x00\x5b\xb3\x00\x00\x52\xb4\x00\x00\x49\xb5\x00\x00\x40\xb6\x00\x00\x37\xb7\x00\x00\x2e\xb8\x00\x00\x25\xb9\x00\x00\x1c\xba\x00\x00\x13\xbb\x00\x00\x0a\xbc\x00\x00\x01\xbd\x00\x00\xf8\xbd\x00\x00\xef\xbe\x00\x00\xe6\xbf\x00\x00\xdd\xc0\x00\x00\xd4\xc1\x00\x00\xcb\xc2\x00\x00\xc2\xc3\x00\x00\xb9\xc4\x00\x00\xb0\xc5\x00\x00\xa7\xc6\x00\x00\x9e\xc7\x00\x00\x95\xc8\x00\x00\x8c\xc9\x00\x00\x83\xca\x00\x00\x7a\xcb\x00\x00\x71\xcc\x00\x00\x68\xcd\x00\x00\x5f\xce\x00\x00\x56\xcf\x00\x00\x4d\xd0\x00\x00\xe3\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x43\xd1\x00\x00\x43\xd2\x00\x00\x43\xd3\x00\x00\x39\xd4\x00\x00\x39\xd5\x00\x00\x2f\xd6\x00\x00\x2f\xd7\x00\x00\x2f\xd8\x00\x00\x2f\xd9\x00\x00\x2f\xda\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x0f\x00\x00\x43\x10\x00\x00\x3a\x11\x00\x00\x31\x12\x00\x00\x16\x15\x00\x00\x0d\x16\x00\x00\x04\x17\x00\x00\xfb\x17\x00\x00\xf2\x18\x00\x00\xe9\x19\x00\x00\xe0\x1a\x00\x00\xd7\x1b\x00\x00\xce\x1c\x00\x00\xbc\x1e\x00\x00\xb3\x1f\x00\x00\xaa\x20\x00\x00\xa1\x21\x00\x00\x98\x22\x00\x00\x8f\x23\x00\x00\x86\x24\x00\x00\x7d\x25\x00\x00\x74\x26\x00\x00\x6b\x27\x00\x00\x62\x28\x00\x00\x59\x29\x00\x00\x50\x2a\x00\x00\x51\x2b\x00\x00\x3e\x2c\x00\x00\x3f\x2d\x00\x00\x2d\x2f\x00\x00\x55\x46\x00\x00\x31\x4a\x00\x00\x16\x4d\x00\x00\x59\x61\x00\x00\x11\x69\x00\x00\xf6\x6b\x00\x00\xed\x6c\x00\x00\xdb\x6e\x00\x00\xb7\x72\x00\x00\x54\x7d\x00\x00\xfa\x86\x00\x00\x9f\x8f\x00\x00\x2d\xd1\x00\x00\x23\xd4\x00\x00\x0e\xdb\x00\x00\x6a\xdb\x00\x00\xc6\xdb\x00\x00\x22\xdc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd9\xff\xff\xff\xda\xff\xff\xff\x00\x00\x00\x00\x7e\xdc\x00\x00\xda\xdc\x00\x00\x73\x41\x00\x00\x36\xdd\x00\x00\x92\xdd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8d\xff\xff\xff\x00\x00\x00\x00\xee\xdd\x00\x00\x23\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa2\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\xde\x00\x00\xa6\xde\x00\x00\x02\xdf\x00\x00\x5e\xdf\x00\x00\xba\xdf\x00\x00\x16\xe0\x00\x00\x72\xe0\x00\x00\xce\xe0\x00\x00\x2a\xe1\x00\x00\x86\xe1\x00\x00\xe2\xe1\x00\x00\x3e\xe2\x00\x00\x9a\xe2\x00\x00\xf6\xe2\x00\x00\x52\xe3\x00\x00\xae\xe3\x00\x00\x0a\xe4\x00\x00\x66\xe4\x00\x00\xc2\xe4\x00\x00\x1e\xe5\x00\x00\x7c\xe5\x00\x00\xda\xe5\x00\x00\x38\xe6\x00\x00\x96\xe6\x00\x00\xf4\xe6\x00\x00\x52\xe7\x00\x00\xb0\xe7\x00\x00\x0c\xe8\x00\x00\x68\xe8\x00\x00\xc4\xe8\x00\x00\x20\xe9\x00\x00\x7c\xe9\x00\x00\xd8\xe9\x00\x00\x34\xea\x00\x00\x90\xea\x00\x00\xec\xea\x00\x00\x48\xeb\x00\x00\xa4\xeb\x00\x00\x00\xec\x00\x00\x5c\xec\x00\x00\xb8\xec\x00\x00\x14\xed\x00\x00\x70\xed\x00\x00\xcc\xed\x00\x00\x28\xee\x00\x00\x84\xee\x00\x00\xe0\xee\x00\x00\x3c\xef\x00\x00\x98\xef\x00\x00\xf4\xef\x00\x00\x50\xf0\x00\x00\xac\xf0\x00\x00\x08\xf1\x00\x00\x64\xf1\x00\x00\xc0\xf1\x00\x00\x1c\xf2\x00\x00\x78\xf2\x00\x00\xd4\xf2\x00\x00\x30\xf3\x00\x00\x8c\xf3\x00\x00\xe8\xf3\x00\x00\x44\xf4\x00\x00\xa0\xf4\x00\x00\xfc\xf4\x00\x00\x58\xf5\x00\x00\xb4\xf5\x00\x00\x10\xf6\x00\x00\x6c\xf6\x00\x00\xc8\xf6\x00\x00\x24\xf7\x00\x00\x80\xf7\x00\x00\xdc\xf7\x00\x00\x38\xf8\x00\x00\x94\xf8\x00\x00\xf0\xf8\x00\x00\x4c\xf9\x00\x00\xa8\xf9\x00\x00\x04\xfa\x00\x00\x60\xfa\x00\x00\xbc\xfa\x00\x00\x18\xfb\x00\x00\x74\xfb\x00\x00\xd0\xfb\x00\x00\x2c\xfc\x00\x00\x88\xfc\x00\x00\xe4\xfc\x00\x00\x40\xfd\x00\x00\x9c\xfd\x00\x00\xf8\xfd\x00\x00\x54\xfe\x00\x00\xb0\xfe\x00\x00\x0c\xff\x00\x00\x68\xff\x00\x00\xc4\xff\x00\x00\x20\x00\x01\x00\x7c\x00\x01\x00\xd8\x00\x01\x00\x34\x01\x01\x00\x90\x01\x01\x00\xec\x01\x01\x00\x48\x02\x01\x00\xa4\x02\x01\x00\x00\x03\x01\x00\x5c\x03\x01\x00\xb8\x03\x01\x00\x14\x04\x01\x00\x70\x04\x01\x00\xcc\x04\x01\x00\x28\x05\x01\x00\x84\x05\x01\x00\xe0\x05\x01\x00\x3c\x06\x01\x00\x98\x06\x01\x00\xf4\x06\x01\x00\x50\x07\x01\x00\xac\x07\x01\x00\x08\x08\x01\x00\x64\x08\x01\x00\xc0\x08\x01\x00\x1c\x09\x01\x00\x78\x09\x01\x00\xd4\x09\x01\x00\x30\x0a\x01\x00\x8c\x0a\x01\x00\xe8\x0a\x01\x00\x44\x0b\x01\x00\xa0\x0b\x01\x00\xfc\x0b\x01\x00\x58\x0c\x01\x00\xb4\x0c\x01\x00\x10\x0d\x01\x00\x6c\x0d\x01\x00\xc8\x0d\x01\x00\x24\x0e\x01\x00\x80\x0e\x01\x00\xdc\x0e\x01\x00\x38\x0f\x01\x00\x94\x0f\x01\x00\xf0\x0f\x01\x00\x4c\x10\x01\x00\xa8\x10\x01\x00\x04\x11\x01\x00\x60\x11\x01\x00\xbc\x11\x01\x00\x18\x12\x01\x00\x74\x12\x01\x00\xd0\x12\x01\x00\x2c\x13\x01\x00\x88\x13\x01\x00\xe4\x13\x01\x00\x40\x14\x01\x00\x9c\x14\x01\x00\xf8\x14\x01\x00\x54\x15\x01\x00\xb0\x15\x01\x00\x0c\x16\x01\x00\x68\x16\x01\x00\xc4\x16\x01\x00\x20\x17\x01\x00\x7c\x17\x01\x00\xd8\x17\x01\x00\x34\x18\x01\x00\x90\x18\x01\x00\xec\x18\x01\x00\x48\x19\x01\x00\xa4\x19\x01\x00\x00\x1a\x01\x00\x5c\x1a\x01\x00\xb8\x1a\x01\x00\x14\x1b\x01\x00\x70\x1b\x01\x00\xcc\x1b\x01\x00\x28\x1c\x01\x00\x84\x1c\x01\x00\xe0\x1c\x01\x00\x3c\x1d\x01\x00\x98\x1d\x01\x00\xf4\x1d\x01\x00\x50\x1e\x01\x00\xac\x1e\x01\x00\x08\x1f\x01\x00\x64\x1f\x01\x00\xc0\x1f\x01\x00\x1c\x20\x01\x00\x78\x20\x01\x00\xd4\x20\x01\x00\x30\x21\x01\x00\x8c\x21\x01\x00\xe8\x21\x01\x00\x44\x22\x01\x00\xa0\x22\x01\x00\xfc\x22\x01\x00\x58\x23\x01\x00\xb4\x23\x01\x00\x10\x24\x01\x00\x6c\x24\x01\x00\xc8\x24\x01\x00\x24\x25\x01\x00\x80\x25\x01\x00\xdc\x25\x01\x00\x38\x26\x01\x00\x94\x26\x01\x00\xf0\x26\x01\x00\x4c\x27\x01\x00\xa8\x27\x01\x00\x04\x28\x01\x00\x60\x28\x01\x00\xbc\x28\x01\x00\x18\x29\x01\x00\x74\x29\x01\x00\xd0\x29\x01\x00\x2c\x2a\x01\x00\x88\x2a\x01\x00\xe4\x2a\x01\x00\x40\x2b\x01\x00\x9c\x2b\x01\x00\xf8\x2b\x01\x00\x54\x2c\x01\x00\xb0\x2c\x01\x00\x0c\x2d\x01\x00\x68\x2d\x01\x00\xc4\x2d\x01\x00\x20\x2e\x01\x00\x7c\x2e\x01\x00\xd8\x2e\x01\x00\x34\x2f\x01\x00\x90\x2f\x01\x00\xec\x2f\x01\x00\x48\x30\x01\x00\xa4\x30\x01\x00\x00\x31\x01\x00\x5c\x31\x01\x00"#
 
 alex_table :: AlexAddr
-alex_table = AlexA# "\x00\x00\x2e\x01\x54\x00\x54\x00\x54\x00\x53\x00\x21\x01\x08\x00\x27\x00\x1e\x00\x1f\x00\x22\x00\x20\x00\x13\x00\x43\x00\x56\x00\x61\x01\x62\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x00\xf9\x01\x73\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x72\x01\x6a\x01\x6b\x01\xf9\x01\xf9\x01\xf9\x01\x88\x01\x63\x01\xf9\x01\x7a\x01\x78\x01\x78\x01\x78\x01\x78\x01\x78\x01\x78\x01\x78\x01\x78\x01\x78\x01\x65\x01\x64\x01\xf9\x01\x66\x01\xf9\x01\x68\x01\x6e\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xac\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x6d\x01\xf9\x01\xf9\x01\x67\x01\xf9\x01\xfd\x01\xf9\x01\xdb\x01\xba\x01\xfb\x01\xcf\x01\xf9\x01\xe6\x01\x55\x02\xf9\x01\xf9\x01\xa5\x01\xd3\x01\xf8\x01\x1e\x02\xe8\x01\xd4\x01\xdc\x01\xe5\x01\xe4\x01\xd7\x01\xf9\x01\xb4\x01\xf9\x01\xf9\x01\xf9\x01\x70\x01\x69\x01\x71\x01\xf9\x01\x2f\x01\x54\x00\x54\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x00\x54\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x00\x15\x00\x00\x00\x15\x00\x15\x00\x15\x00\x15\x00\x54\x00\x00\x00\x00\x00\x15\x00\x15\x00\x15\x00\x0a\x00\x00\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x00\x00\x15\x00\x15\x00\x15\x00\x15\x00\x00\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x1b\x00\x15\x00\x15\x00\x1a\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x09\x00\x15\x00\x00\x00\x15\x00\x2e\x01\x54\x00\x54\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x00\xf9\x01\x73\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x72\x01\x6a\x01\x6b\x01\xf9\x01\xf9\x01\xf9\x01\x88\x01\x63\x01\xf9\x01\x7a\x01\x78\x01\x78\x01\x78\x01\x78\x01\x78\x01\x78\x01\x78\x01\x78\x01\x78\x01\x65\x01\x64\x01\xf9\x01\x66\x01\xf9\x01\x68\x01\x6e\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xac\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x6d\x01\xf9\x01\xf9\x01\x67\x01\xf9\x01\xfd\x01\xf9\x01\xdb\x01\xba\x01\xfb\x01\xcf\x01\xf9\x01\xe6\x01\x55\x02\xf9\x01\xf9\x01\xa5\x01\xd3\x01\xf8\x01\x1e\x02\xe8\x01\xd4\x01\xdc\x01\xe5\x01\xe4\x01\xd7\x01\xf9\x01\xb4\x01\xf9\x01\xf9\x01\xf9\x01\x70\x01\x69\x01\x71\x01\xf9\x01\x54\x00\x54\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x00\x15\x00\x00\x00\x15\x00\x15\x00\x15\x00\x15\x00\x00\x00\x00\x00\x00\x00\x15\x00\x15\x00\x15\x00\x0a\x00\x00\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x00\x00\x15\x00\x15\x00\x15\x00\x15\x00\x00\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x1c\x00\x15\x00\x15\x00\x1a\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x09\x00\x15\x00\x00\x00\x15\x00\x2e\x01\x54\x00\x54\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x00\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x87\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x0d\x00\xf9\x01\xf9\x01\x0c\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xa3\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x09\x00\xf9\x01\x00\x00\xf9\x01\x30\x01\x54\x00\x54\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x00\x15\x00\x00\x00\x15\x00\x15\x00\x15\x00\x15\x00\x00\x00\x00\x00\x00\x00\x15\x00\x15\x00\x15\x00\x0a\x00\x00\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x00\x00\x15\x00\x15\x00\x15\x00\x15\x00\x00\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x1b\x00\x15\x00\x15\x00\x1a\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x09\x00\x15\x00\x00\x00\x15\x00\xff\xff\x55\x00\x55\x00\x55\x00\x55\x00\x60\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\xf9\x01\x8c\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xbb\x00\xc5\x00\xbf\x00\x00\x00\x00\x00\x00\x00\xbe\x00\xb2\x00\x00\x00\x00\x00\x9e\x00\xc0\x00\xd3\x00\xed\x00\x00\x00\x00\x00\xc4\x00\xf0\x00\xd5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6f\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\x8b\x00\x00\x00\xf9\x01\x00\x00\xf9\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x52\x00\x4e\x00\x4e\x00\x4e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x02\x00\x00\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x00\x00\x00\x00\x39\x02\x39\x02\x39\x02\x39\x02\x4e\x00\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x00\x00\x39\x02\x39\x02\x39\x02\x39\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x02\x39\x02\x39\x02\x39\x02\x00\x00\x39\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x02\x00\x00\x39\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3b\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3c\x00\x12\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x31\x00\x18\x00\x28\x00\x28\x00\x28\x00\x29\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x15\x00\x00\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x00\x00\x00\x00\x15\x00\x15\x00\x15\x00\x25\x01\x00\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x00\x00\x15\x00\x15\x00\x15\x00\x15\x00\x00\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x00\x00\x15\x00\x22\x01\x15\x00\x15\x00\x00\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x00\x00\x00\x00\x15\x00\x15\x00\x15\x00\x0b\x00\x00\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x00\x00\x15\x00\x15\x00\x15\x00\x15\x00\x00\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x00\x00\x15\x00\x23\x01\x15\x00\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\x39\x02\xf9\x01\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x00\x00\x00\x00\x39\x02\x39\x02\x39\x02\x39\x02\x00\x00\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x00\x00\x39\x02\x39\x02\x39\x02\x39\x02\x00\x00\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x00\x00\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x00\x00\x00\x00\x00\x00\x39\x02\x39\x02\x39\x02\x39\x02\x00\x00\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x00\x00\x39\x02\x39\x02\x39\x02\x39\x02\x00\x00\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x0f\x00\x39\x02\x39\x02\x0e\x00\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x00\x00\x39\x02\x00\x00\x39\x02\x3e\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x3b\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x15\x00\x00\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x00\x00\x00\x00\x15\x00\x15\x00\x15\x00\x0b\x00\x00\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x00\x00\x15\x00\x15\x00\x15\x00\x15\x00\x00\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x00\x00\x15\x00\x00\x00\x15\x00\x35\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x11\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x12\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x15\x00\x00\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x00\x00\x00\x00\x15\x00\x15\x00\x15\x00\x15\x00\x00\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x00\x00\x15\x00\x15\x00\x15\x00\x15\x00\x00\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x00\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x00\x00\x00\x00\x15\x00\x15\x00\x15\x00\x15\x00\x00\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x00\x00\x15\x00\x15\x00\x15\x00\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00\x15\x00\x15\x00\x15\x00\x00\x00\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x00\x00\x00\x00\x15\x00\x15\x00\x15\x00\x15\x00\x00\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x15\x00\x00\x00\x15\x00\x15\x00\x15\x00\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00\x15\x00\x15\x00\x15\x00\x00\x00\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x00\x00\x00\x15\x00\x16\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2d\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2f\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x31\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x36\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\x39\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\x3c\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\x41\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\x39\x02\x00\x00\x39\x02\x39\x02\x39\x02\x39\x02\x00\x00\x00\x00\x00\x00\x39\x02\x39\x02\x39\x02\x39\x02\x00\x00\x39\x02\x85\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x39\x02\x00\x00\x39\x02\x39\x02\x39\x02\x39\x02\x00\x00\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x0f\x00\x39\x02\x39\x02\x0e\x00\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x00\x00\x39\x02\x00\x00\x39\x02\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x3e\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x41\x00\x11\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x32\x00\x33\x00\x17\x00\x2a\x00\x2a\x00\x2a\x00\x2b\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\x44\x00\x44\x00\x44\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x44\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\x00\x00\xf9\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x3b\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3c\x00\x12\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x31\x00\x18\x00\x28\x00\x28\x00\x28\x00\x29\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\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xe9\x01\xf9\x01\xa8\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x04\x02\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\x00\x00\xf9\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\x44\x00\x00\x00\x00\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\x3b\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3c\x00\x12\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x31\x00\x18\x00\x28\x00\x28\x00\x28\x00\x29\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\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x45\x00\xf9\x01\x00\x00\xf9\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3b\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3c\x00\x12\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x31\x00\x18\x00\x28\x00\x28\x00\x28\x00\x29\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\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\x00\x00\xf9\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x51\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x3b\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3c\x00\x12\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x31\x00\x18\x00\x28\x00\x28\x00\x28\x00\x29\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\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\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\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\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\x47\x00\x00\x00\x00\x00\xf9\x01\x00\x00\xf9\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3b\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3c\x00\x12\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x31\x00\x18\x00\x28\x00\x28\x00\x28\x00\x29\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\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\x00\x00\xf9\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\x48\x00\x00\x00\x00\x00\x00\x00\x00\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\x3b\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3c\x00\x12\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x31\x00\x18\x00\x28\x00\x28\x00\x28\x00\x29\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\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\x00\x00\xf9\x01\x50\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x3b\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3c\x00\x12\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x31\x00\x18\x00\x28\x00\x28\x00\x28\x00\x29\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\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\x4a\x00\xf9\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3b\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3c\x00\x12\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x31\x00\x18\x00\x28\x00\x28\x00\x28\x00\x29\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\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x4b\x00\xf9\x01\x00\x00\xf9\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3b\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3c\x00\x12\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x31\x00\x18\x00\x28\x00\x28\x00\x28\x00\x29\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\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\x00\x00\xf9\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3b\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3c\x00\x12\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x31\x00\x18\x00\x28\x00\x28\x00\x28\x00\x29\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\x4e\x00\x4e\x00\x4e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x3b\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3c\x00\x12\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x31\x00\x18\x00\x28\x00\x28\x00\x28\x00\x29\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x3b\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3c\x00\x12\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x31\x00\x18\x00\x28\x00\x28\x00\x28\x00\x29\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\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\x00\x00\xf9\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x49\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x3b\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3c\x00\x12\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x31\x00\x18\x00\x28\x00\x28\x00\x28\x00\x29\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x3b\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3c\x00\x12\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x30\x00\x31\x00\x18\x00\x28\x00\x28\x00\x28\x00\x29\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xff\xff\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\x00\x00\xf9\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xff\xff\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\x00\x00\xf9\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xff\xff\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\x00\x00\xf9\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xff\xff\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\x00\x00\xf9\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xff\xff\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\x00\x00\xf9\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xff\xff\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\x00\x00\xf9\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xff\xff\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\x00\x00\xf9\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xff\xff\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\x00\x00\xf9\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xff\xff\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\x00\x00\xf9\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xff\xff\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x45\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x46\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\x00\x00\xf9\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xff\xff\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\x00\x00\xf9\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xff\xff\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\x00\x00\xf9\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xff\xff\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\x00\x00\xf9\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xff\xff\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\x00\x00\xf9\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xff\xff\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\x00\x00\xf9\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xff\xff\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\x00\x00\xf9\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xff\xff\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\x00\x00\xf9\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xff\xff\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\x50\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\x00\x00\xf9\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xff\xff\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\x00\x00\xf9\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xff\xff\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\x4e\x01\x4e\x01\x4e\x01\x4e\x01\x4e\x01\x4e\x01\x4e\x01\x4e\x01\x4e\x01\x4e\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x4e\x01\x4e\x01\x4e\x01\x4e\x01\x4e\x01\x4e\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x4e\x01\x4e\x01\x4e\x01\x4e\x01\x4e\x01\x4e\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\x00\x00\xf9\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xff\xff\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\x00\x00\xf9\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xff\xff\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\x4f\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x49\x02\xf9\x01\xf9\x01\x00\x00\xf9\x01\x00\x00\xf9\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xff\xff\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\x00\x00\xf9\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xff\xff\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\x00\x00\xf9\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xff\xff\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xee\x01\xf9\x01\xf9\x01\xf9\x01\xc6\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xc9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\x00\x00\xf9\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xff\xff\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\x00\x00\xf9\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xf9\x01\x57\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xae\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\x00\x00\xf9\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xff\xff\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\x00\x00\xf9\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x5c\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\x00\x00\xf9\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x5e\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\x00\x00\xf9\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x71\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x73\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xff\xff\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x74\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\x00\x00\xf9\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\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\x75\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x79\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x7d\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\x00\x00\xf9\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x83\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x85\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x89\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x19\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\x00\x00\xf9\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x01\x00\x00\x00\x00\x00\x00\xd2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x17\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x16\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\x00\x00\xf9\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0f\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0c\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x92\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\x00\x00\xf9\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfa\x00\xf9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xaa\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\x00\x00\xf9\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf5\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\x00\x00\xf9\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf3\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\x00\x00\xf9\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xad\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xaf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xb0\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\x00\x00\xf9\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xb6\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\x00\x00\xf9\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xee\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xeb\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\x00\x00\xf9\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdd\x00\x00\x00\x00\x00\xc7\x00\xde\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xea\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xe4\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\x00\x00\xf9\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xff\xff\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\x00\x00\xf9\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xca\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xba\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xae\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xac\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x98\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x97\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x94\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x87\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x84\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x82\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x81\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1a\x01\xb3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1b\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x95\x00\x03\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\x00\x12\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x77\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1e\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x59\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x38\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x39\x00\x14\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2e\x00\x2f\x00\x19\x00\x25\x00\x25\x00\x25\x00\x26\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\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\x3e\x02\xf9\x01\x8d\x01\x34\x00\xf9\x01\x77\x01\x75\x01\x75\x01\x75\x01\x75\x01\x75\x01\x75\x01\x75\x01\x75\x01\x75\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x75\x01\x75\x01\x75\x01\x75\x01\x74\x01\x75\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x75\x01\x75\x01\x75\x01\x75\x01\x74\x01\x75\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\x00\x00\xf9\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x35\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x36\x00\x16\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2d\x00\x1d\x00\x23\x00\x23\x00\x23\x00\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\xff\xff\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x00\x00\x27\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x01\x27\x01\x00\x00\x00\x00\x00\x00\x25\x01\x27\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\x27\x01\x00\x00\x00\x00\x00\x00\x00\x00\x27\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\x27\x01\x00\x00\x24\x01\x00\x00\x27\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x35\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x36\x00\x16\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2d\x00\x1d\x00\x23\x00\x23\x00\x23\x00\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\xff\xff\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x00\x00\x27\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x01\x27\x01\x00\x00\x00\x00\x00\x00\x25\x01\x27\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\x27\x01\x00\x00\x00\x00\x00\x00\x00\x00\x27\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\x27\x01\x00\x00\x27\x01\x00\x00\x27\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x35\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x36\x00\x16\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2d\x00\x1d\x00\x23\x00\x23\x00\x23\x00\x24\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\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x34\x00\xf9\x01\x75\x01\x75\x01\x75\x01\x75\x01\x75\x01\x75\x01\x75\x01\x75\x01\x75\x01\x75\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x75\x01\x75\x01\x75\x01\x75\x01\x74\x01\x75\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x75\x01\x75\x01\x75\x01\x75\x01\x74\x01\x75\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\x00\x00\xf9\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x35\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x36\x00\x16\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2d\x00\x1d\x00\x23\x00\x23\x00\x23\x00\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\xff\xff\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x00\x00\x27\x01\x00\x00\x00\x00\x00\x00\x00\x00\x27\x01\x27\x01\x27\x01\x00\x00\x00\x00\x00\x00\x00\x00\x27\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\x27\x01\x00\x00\x00\x00\x00\x00\x00\x00\x27\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\x29\x01\x00\x00\x00\x00\x2a\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\x27\x01\x00\x00\x27\x01\x00\x00\x27\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x35\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x36\x00\x16\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2d\x00\x1d\x00\x23\x00\x23\x00\x23\x00\x24\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x01\x00\x00\x2d\x01\x2d\x01\x2d\x01\x2d\x01\x2d\x01\x00\x00\x00\x00\x2d\x01\x2d\x01\x2d\x01\x2d\x01\x00\x00\x2d\x01\x2d\x01\x2d\x01\x2d\x01\x2d\x01\x2d\x01\x2d\x01\x2d\x01\x2d\x01\x2d\x01\x2d\x01\x2d\x01\x00\x00\x2d\x01\x2d\x01\x2d\x01\x2d\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\x2d\x01\x2d\x01\x2d\x01\x2d\x01\x00\x00\x2d\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\x2d\x01\x00\x00\x2d\x01\x00\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\x35\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x36\x00\x16\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2d\x00\x1d\x00\x23\x00\x23\x00\x23\x00\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\xff\xff\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x00\x00\x27\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x01\x27\x01\x00\x00\x00\x00\x00\x00\x00\x00\x27\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\x27\x01\x00\x00\x00\x00\x00\x00\x00\x00\x27\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\x27\x01\x00\x00\x27\x01\x00\x00\x27\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x35\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x36\x00\x16\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2d\x00\x1d\x00\x23\x00\x23\x00\x23\x00\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\xff\xff\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x00\x00\x27\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x01\x27\x01\x00\x00\x00\x00\x00\x00\x2b\x01\x28\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\x27\x01\x00\x00\x00\x00\x00\x00\x00\x00\x27\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\x27\x01\x00\x00\x24\x01\x00\x00\x27\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x35\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x36\x00\x16\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2d\x00\x1d\x00\x23\x00\x23\x00\x23\x00\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\xff\xff\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x00\x00\x27\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x01\x27\x01\x00\x00\x00\x00\x00\x00\x2b\x01\x28\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\x27\x01\x00\x00\x00\x00\x00\x00\x00\x00\x27\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\x27\x01\x00\x00\x27\x01\x00\x00\x27\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x35\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x36\x00\x16\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2d\x00\x1d\x00\x23\x00\x23\x00\x23\x00\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\xff\xff\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x27\x01\x00\x00\x27\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x01\x27\x01\x00\x00\x00\x00\x00\x00\x00\x00\x28\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\x27\x01\x00\x00\x00\x00\x00\x00\x00\x00\x27\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\x27\x01\x00\x00\x27\x01\x00\x00\x27\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x35\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x36\x00\x16\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x2d\x00\x1d\x00\x23\x00\x23\x00\x23\x00\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x34\x00\xf9\x01\x76\x01\x76\x01\x76\x01\x76\x01\x76\x01\x76\x01\x76\x01\x76\x01\x76\x01\x76\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x76\x01\x76\x01\x76\x01\x76\x01\x76\x01\x76\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x76\x01\x76\x01\x76\x01\x76\x01\x76\x01\x76\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x34\x00\xf9\x01\x75\x01\x75\x01\x75\x01\x75\x01\x75\x01\x75\x01\x75\x01\x75\x01\x75\x01\x75\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x75\x01\x75\x01\x75\x01\x75\x01\x74\x01\x75\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x75\x01\x75\x01\x75\x01\x75\x01\x74\x01\x75\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x3a\x02\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x34\x00\xf9\x01\x78\x01\x78\x01\x78\x01\x78\x01\x78\x01\x78\x01\x78\x01\x78\x01\x78\x01\x78\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x3d\x02\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x3d\x02\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x34\x00\xf9\x01\x79\x01\x79\x01\x79\x01\x79\x01\x79\x01\x79\x01\x79\x01\x79\x01\x79\x01\x79\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x34\x00\xf9\x01\x78\x01\x78\x01\x78\x01\x78\x01\x78\x01\x78\x01\x78\x01\x78\x01\x78\x01\x78\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x3d\x02\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x3d\x02\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x41\x02\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x34\x00\xf9\x01\x79\x01\x79\x01\x79\x01\x79\x01\x79\x01\x79\x01\x79\x01\x79\x01\x79\x01\x79\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x42\x02\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\x7c\x01\x7c\x01\x7c\x01\x7c\x01\x7c\x01\x7c\x01\x7c\x01\x7c\x01\x7c\x01\x7c\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x7c\x01\x7c\x01\x7c\x01\x7c\x01\x7c\x01\x7c\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x7c\x01\x7c\x01\x7c\x01\x7c\x01\x7c\x01\x7c\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\x39\x02\xf9\x01\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x00\x00\x00\x00\x39\x02\x40\x02\x39\x02\x40\x02\x10\x00\x39\x02\x80\x01\x7e\x01\x7e\x01\x7e\x01\x7e\x01\x7e\x01\x7e\x01\x7e\x01\x7e\x01\x7e\x01\x39\x02\x00\x00\x39\x02\x39\x02\x39\x02\x39\x02\x00\x00\x7e\x01\x7e\x01\x7e\x01\x7e\x01\x7d\x01\x7e\x01\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x7e\x01\x7e\x01\x7e\x01\x7e\x01\x7d\x01\x7e\x01\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x00\x00\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x00\x00\x00\x00\x39\x02\x39\x02\x39\x02\x39\x02\x10\x00\x39\x02\x7e\x01\x7e\x01\x7e\x01\x7e\x01\x7e\x01\x7e\x01\x7e\x01\x7e\x01\x7e\x01\x7e\x01\x39\x02\x00\x00\x39\x02\x39\x02\x39\x02\x39\x02\x00\x00\x7e\x01\x7e\x01\x7e\x01\x7e\x01\x7d\x01\x7e\x01\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x7e\x01\x7e\x01\x7e\x01\x7e\x01\x7d\x01\x7e\x01\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x00\x00\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x00\x00\x00\x00\x39\x02\x39\x02\x39\x02\x39\x02\x10\x00\x39\x02\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x39\x02\x00\x00\x39\x02\x39\x02\x39\x02\x39\x02\x00\x00\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x00\x00\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x00\x00\x00\x00\x39\x02\x39\x02\x39\x02\x39\x02\x10\x00\x39\x02\x7e\x01\x7e\x01\x7e\x01\x7e\x01\x7e\x01\x7e\x01\x7e\x01\x7e\x01\x7e\x01\x7e\x01\x39\x02\x00\x00\x39\x02\x39\x02\x39\x02\x39\x02\x00\x00\x7e\x01\x7e\x01\x7e\x01\x7e\x01\x7d\x01\x7e\x01\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x7e\x01\x7e\x01\x7e\x01\x7e\x01\x7d\x01\x7e\x01\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x3b\x02\x39\x02\x39\x02\x00\x00\x39\x02\xf9\x01\x39\x02\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x3a\x02\xf9\x01\xf9\x01\x00\x00\xf9\x01\x39\x02\xf9\x01\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x00\x00\x00\x00\x39\x02\x39\x02\x39\x02\x39\x02\x10\x00\x39\x02\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x39\x02\x00\x00\x39\x02\x39\x02\x39\x02\x39\x02\x00\x00\x39\x02\x39\x02\x39\x02\x39\x02\x3f\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x3f\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x00\x00\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x00\x00\x00\x00\x39\x02\x39\x02\x39\x02\x39\x02\x10\x00\x39\x02\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x39\x02\x00\x00\x39\x02\x39\x02\x39\x02\x39\x02\x00\x00\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x00\x00\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x00\x00\x00\x00\x39\x02\x39\x02\x39\x02\x39\x02\x10\x00\x39\x02\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x83\x01\x39\x02\x00\x00\x39\x02\x39\x02\x39\x02\x39\x02\x00\x00\x39\x02\x39\x02\x39\x02\x39\x02\x3f\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x3f\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x3c\x02\x39\x02\x39\x02\x00\x00\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x00\x00\x00\x00\x39\x02\x39\x02\x39\x02\x39\x02\x10\x00\x39\x02\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x39\x02\x00\x00\x39\x02\x39\x02\x39\x02\x39\x02\x00\x00\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x3b\x02\x39\x02\x39\x02\x00\x00\x39\x02\xf9\x01\x39\x02\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x2b\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\x22\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x2b\x01\x10\x00\xf9\x01\x7b\x01\x79\x01\x79\x01\x79\x01\x79\x01\x79\x01\x79\x01\x79\x01\x79\x01\x79\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\x6c\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\x22\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf0\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\x23\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf1\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\x23\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xfa\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\x23\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\x23\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\x82\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\x23\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x33\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x36\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x37\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x38\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x3b\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x3c\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x3d\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x40\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x41\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x42\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x43\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x49\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x4a\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x4b\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x53\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x54\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x55\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x58\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x5b\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x5c\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x5d\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x5e\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x5f\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x56\x02\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x52\x02\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x4f\x02\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x4e\x02\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x4d\x02\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x4c\x02\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x9a\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x4b\x02\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x48\x02\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x45\x02\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x9f\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x44\x02\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xa4\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x38\x02\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x37\x02\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xb2\x01\x36\x02\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x35\x02\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x34\x02\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x33\x02\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x32\x02\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x31\x02\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x30\x02\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x2f\x02\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x2e\x02\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x2d\x02\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x2c\x02\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x2b\x02\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x2a\x02\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xa9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xaa\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x29\x02\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x28\x02\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x27\x02\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xad\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x26\x02\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x25\x02\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x24\x02\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x23\x02\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x22\x02\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x21\x02\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x20\x02\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x1f\x02\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xb3\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x0b\x02\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xbc\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xe7\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x18\x02\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x1d\x02\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x1c\x02\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xc4\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x14\x02\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x0e\x02\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xc8\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xca\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x1b\x02\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xe3\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xcc\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xce\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x17\x02\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x16\x02\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x13\x02\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xd0\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xd1\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x12\x02\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x11\x02\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x10\x02\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x0f\x02\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x0c\x02\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xd5\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xd6\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x09\x02\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x07\x02\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xd8\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x02\x02\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xef\x01\xf9\x01\xf9\x01\xe2\x01\xf9\x01\xf9\x01\x06\x02\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xde\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xdf\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xe0\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xe1\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x05\x02\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x03\x02\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x01\x02\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xeb\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xec\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xff\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x89\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8a\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf3\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf4\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8b\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf7\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf6\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf5\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xfe\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xed\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xea\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x02\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xdd\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xd9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x08\x02\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x0a\x02\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xd2\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x0d\x02\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x19\x02\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xcd\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xcb\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x1a\x02\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xc7\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xc5\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xda\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xc3\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xc2\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xc1\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xc0\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xbf\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xbe\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xbd\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xbb\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xfc\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf2\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xb9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xb8\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xb7\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xb6\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xb5\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xb1\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xb0\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xaf\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xab\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xa7\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xa6\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xa2\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xa1\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xa0\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x43\x02\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x9e\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x9d\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x9c\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x47\x02\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x4a\x02\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x9b\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x99\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x98\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x97\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x96\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x95\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x50\x02\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x94\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x93\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x92\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x51\x02\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x91\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x90\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x8f\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x53\x02\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x54\x02\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x8e\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\x39\x02\xf9\x01\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x00\x00\x00\x00\x39\x02\x39\x02\x39\x02\x39\x02\x10\x00\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x00\x00\x39\x02\x39\x02\x39\x02\x39\x02\x00\x00\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x00\x00\x39\x02\xf9\x01\x39\x02\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\x7c\x01\x7c\x01\x7c\x01\x7c\x01\x7c\x01\x7c\x01\x7c\x01\x7c\x01\x7c\x01\x7c\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x7c\x01\x7c\x01\x7c\x01\x7c\x01\x7c\x01\x7c\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x7c\x01\x7c\x01\x7c\x01\x7c\x01\x7c\x01\x7c\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\x39\x02\xf9\x01\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x00\x00\x00\x00\x39\x02\x39\x02\x39\x02\x39\x02\x10\x00\x39\x02\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x39\x02\x00\x00\x39\x02\x39\x02\x39\x02\x39\x02\x00\x00\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x7f\x01\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x00\x00\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x00\x00\x00\x00\x39\x02\x39\x02\x39\x02\x39\x02\x10\x00\x39\x02\x7e\x01\x7e\x01\x7e\x01\x7e\x01\x7e\x01\x7e\x01\x7e\x01\x7e\x01\x7e\x01\x7e\x01\x39\x02\x00\x00\x39\x02\x39\x02\x39\x02\x39\x02\x00\x00\x7e\x01\x7e\x01\x7e\x01\x7e\x01\x7e\x01\x7e\x01\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x7e\x01\x7e\x01\x7e\x01\x7e\x01\x7e\x01\x7e\x01\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x00\x00\x39\x02\xf9\x01\x39\x02\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\x3e\x02\xf9\x01\x8d\x01\x10\x00\xf9\x01\x82\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\x82\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\x81\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\x39\x02\xf9\x01\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x00\x00\x00\x00\x39\x02\x40\x02\x39\x02\x40\x02\x10\x00\x39\x02\x86\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x39\x02\x00\x00\x39\x02\x39\x02\x39\x02\x39\x02\x00\x00\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x00\x00\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x00\x00\x00\x00\x39\x02\x39\x02\x39\x02\x39\x02\x10\x00\x39\x02\x86\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x84\x01\x39\x02\x00\x00\x39\x02\x39\x02\x39\x02\x39\x02\x00\x00\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x39\x02\x00\x00\x39\x02\xf9\x01\x39\x02\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\x75\x01\x75\x01\x75\x01\x75\x01\x75\x01\x75\x01\x75\x01\x75\x01\x75\x01\x75\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x75\x01\x75\x01\x75\x01\x75\x01\x75\x01\x75\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x75\x01\x75\x01\x75\x01\x75\x01\x75\x01\x75\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\x76\x01\x76\x01\x76\x01\x76\x01\x76\x01\x76\x01\x76\x01\x76\x01\x76\x01\x76\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x76\x01\x76\x01\x76\x01\x76\x01\x76\x01\x76\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x76\x01\x76\x01\x76\x01\x76\x01\x76\x01\x76\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x5a\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x59\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x46\x02\xf9\x01\xf9\x01\x57\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x56\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x52\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x51\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\x4e\x01\x4e\x01\x4e\x01\x4e\x01\x4e\x01\x4e\x01\x4e\x01\x4e\x01\x4e\x01\x4e\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x4e\x01\x4e\x01\x4e\x01\x4e\x01\x4e\x01\x4e\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x4e\x01\x4e\x01\x4e\x01\x4e\x01\x4e\x01\x4e\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x4d\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x4c\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x48\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x47\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x44\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x3f\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x3e\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x3a\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x39\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x35\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x34\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x15\x02\x32\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\x00\x00\xf9\x01\xf9\x01\xf9\x01\x8c\x01\x10\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x31\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\xf9\x01\x00\x00\xf9\x01\x00\x00\xf9\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#
+alex_table = AlexA# "\x00\x00\x0b\x01\x30\x00\x30\x00\x30\x00\xfe\x00\x33\x00\x3f\x01\x40\x01\x48\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\x30\x00\xdb\x01\x53\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x52\x01\x4a\x01\x4b\x01\xdb\x01\xdb\x01\xdb\x01\x68\x01\x41\x01\xdb\x01\x5a\x01\x58\x01\x58\x01\x58\x01\x58\x01\x58\x01\x58\x01\x58\x01\x58\x01\x58\x01\x43\x01\x42\x01\xdb\x01\x44\x01\xdb\x01\x46\x01\x4e\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x8d\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x4d\x01\xdb\x01\xdb\x01\x45\x01\xdb\x01\xdf\x01\xdb\x01\xbc\x01\x9b\x01\xdd\x01\xb0\x01\xdb\x01\xc8\x01\x3a\x02\xdb\x01\xdb\x01\x85\x01\xb4\x01\xda\x01\x02\x02\xca\x01\xb5\x01\xbd\x01\xc7\x01\xc6\x01\xb8\x01\xdb\x01\x95\x01\xdb\x01\xdb\x01\xdb\x01\x50\x01\x47\x01\x51\x01\xdb\x01\x0c\x01\x30\x00\x30\x00\x30\x00\x00\x00\x00\x00\x31\x00\x31\x00\x31\x00\x31\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x30\x00\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x12\x00\x00\x00\x12\x00\x12\x00\x12\x00\x12\x00\x31\x00\x00\x00\x00\x00\x12\x00\x12\x00\x12\x00\x09\x00\x30\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x00\x00\x12\x00\x12\x00\x12\x00\x12\x00\x00\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x17\x00\x12\x00\x12\x00\x16\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x08\x00\x12\x00\x00\x00\x12\x00\x0b\x01\x30\x00\x30\x00\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\xdb\x01\x53\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x52\x01\x4a\x01\x4b\x01\xdb\x01\xdb\x01\xdb\x01\x68\x01\x41\x01\xdb\x01\x5a\x01\x58\x01\x58\x01\x58\x01\x58\x01\x58\x01\x58\x01\x58\x01\x58\x01\x58\x01\x43\x01\x42\x01\xdb\x01\x44\x01\xdb\x01\x46\x01\x4e\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x8d\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x4d\x01\xdb\x01\xdb\x01\x45\x01\xdb\x01\xdf\x01\xdb\x01\xbc\x01\x9b\x01\xdd\x01\xb0\x01\xdb\x01\xc8\x01\x3a\x02\xdb\x01\xdb\x01\x85\x01\xb4\x01\xda\x01\x02\x02\xca\x01\xb5\x01\xbd\x01\xc7\x01\xc6\x01\xb8\x01\xdb\x01\x95\x01\xdb\x01\xdb\x01\xdb\x01\x50\x01\x47\x01\x51\x01\xdb\x01\x30\x00\x30\x00\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x12\x00\x00\x00\x12\x00\x12\x00\x12\x00\x12\x00\x00\x00\x00\x00\x00\x00\x12\x00\x12\x00\x12\x00\x09\x00\x00\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x00\x00\x12\x00\x12\x00\x12\x00\x12\x00\x00\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x17\x00\x12\x00\x12\x00\x16\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x08\x00\x12\x00\x00\x00\x12\x00\x0b\x01\x30\x00\x30\x00\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x67\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x0c\x00\xdb\x01\xdb\x01\x0b\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x83\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x08\x00\xdb\x01\x00\x00\xdb\x01\x0d\x01\x30\x00\x30\x00\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x12\x00\x00\x00\x12\x00\x12\x00\x12\x00\x12\x00\x00\x00\x00\x00\x00\x00\x12\x00\x12\x00\x12\x00\x09\x00\x00\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x00\x00\x12\x00\x12\x00\x12\x00\x12\x00\x00\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x17\x00\x12\x00\x12\x00\x16\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x08\x00\x12\x00\x00\x00\x12\x00\xff\xff\x32\x00\x32\x00\x32\x00\x32\x00\x3e\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\xdb\x01\x69\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x98\x00\xa1\x00\x9c\x00\x00\x00\x00\x00\x00\x00\x9b\x00\x8f\x00\x00\x00\x00\x00\x7b\x00\x9d\x00\xb6\x00\xca\x00\xa4\x00\x00\x00\xa0\x00\xcd\x00\xae\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\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\x68\x00\x00\x00\xdb\x01\x00\x00\xdb\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\x00\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x00\x00\x00\x00\x12\x00\x12\x00\x12\x00\x02\x01\x00\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x00\x00\x12\x00\x12\x00\x12\x00\x12\x00\x00\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x00\x00\x12\x00\xff\x00\x12\x00\x12\x00\x00\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x00\x00\x00\x00\x12\x00\x12\x00\x12\x00\x0a\x00\x00\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x00\x00\x12\x00\x12\x00\x12\x00\x12\x00\x00\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x00\x00\x12\x00\x00\x01\x12\x00\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\x1d\x02\xdb\x01\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x00\x00\x00\x00\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x00\x00\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x00\x00\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x00\x00\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x00\x00\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x00\x00\x00\x00\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x00\x00\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x00\x00\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x00\x00\x1d\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1d\x02\x00\x00\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x00\x00\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x00\x00\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x00\x00\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x00\x00\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x0e\x00\x1d\x02\x1d\x02\x0d\x00\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x00\x00\x1d\x02\x00\x00\x1d\x02\x2c\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x12\x00\x00\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x00\x00\x00\x00\x12\x00\x12\x00\x12\x00\x0a\x00\x00\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x00\x00\x12\x00\x12\x00\x12\x00\x12\x00\x00\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x00\x00\x12\x00\x00\x00\x12\x00\x26\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x10\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x12\x00\x00\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x00\x00\x00\x00\x12\x00\x12\x00\x12\x00\x12\x00\x00\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x00\x00\x12\x00\x12\x00\x12\x00\x12\x00\x00\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x00\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x00\x00\x00\x00\x12\x00\x12\x00\x12\x00\x12\x00\x00\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x12\x00\x00\x00\x12\x00\x12\x00\x12\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x12\x00\x12\x00\x12\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x12\x00\x13\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x20\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x24\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x27\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\x2a\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\x2e\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\x1d\x02\x00\x00\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x00\x00\x00\x00\x00\x00\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x00\x00\x1d\x02\x65\x01\x63\x01\x63\x01\x63\x01\x63\x01\x63\x01\x63\x01\x63\x01\x63\x01\x63\x01\x1d\x02\x00\x00\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x00\x00\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x0e\x00\x1d\x02\x1d\x02\x0d\x00\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x00\x00\x1d\x02\x00\x00\x1d\x02\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x2c\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2e\x00\x10\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x23\x00\x24\x00\x14\x00\x1d\x00\x1d\x00\x1d\x00\x1e\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xff\xff\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\x00\x00\xdb\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xff\xff\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xcb\x01\xdb\x01\x88\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xe6\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\x00\x00\xdb\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xff\xff\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\x00\x00\xdb\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xff\xff\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\x00\x00\xdb\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xff\xff\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\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\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\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\xf1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdb\x01\x00\x00\xdb\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x73\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xff\xff\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\x00\x00\xdb\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xff\xff\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\x00\x00\xdb\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xff\xff\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\x00\x00\xdb\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xff\xff\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\x00\x00\xdb\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xff\xff\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\x00\x00\xdb\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xff\xff\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\x00\x00\xdb\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xff\xff\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\x00\x00\xdb\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xff\xff\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\x00\x00\xdb\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xff\xff\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\x00\x00\xdb\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x79\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xff\xff\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\x00\x00\xdb\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xff\xff\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\x00\x00\xdb\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xff\xff\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\x00\x00\xdb\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xff\xff\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\x00\x00\xdb\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xff\xff\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\x00\x00\xdb\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xff\xff\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\x00\x00\xdb\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xff\xff\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x22\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x23\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\x00\x00\xdb\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xff\xff\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\x00\x00\xdb\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xff\xff\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\x00\x00\xdb\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xff\xff\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\x00\x00\xdb\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xff\xff\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\x00\x00\xdb\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xff\xff\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\x00\x00\xdb\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xff\xff\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\x00\x00\xdb\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xdb\x01\x34\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\x00\x00\xdb\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xff\xff\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\x00\x00\xdb\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x35\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\x2e\x01\x2d\x01\x2d\x01\x2d\x01\x2d\x01\x2d\x01\x2d\x01\x2d\x01\x2d\x01\x2d\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x39\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\x00\x00\xdb\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x3b\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\x00\x00\xdb\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x49\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xff\xff\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x51\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\x00\x00\xdb\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\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\x52\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfa\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\x2c\x01\x2c\x01\x2c\x01\x2c\x01\x2c\x01\x2c\x01\x2c\x01\x2c\x01\x2c\x01\x2c\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x5a\x00\x2c\x01\x2c\x01\x2c\x01\x2c\x01\x2c\x01\x2c\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x2c\x01\x2c\x01\x2c\x01\x2c\x01\x2c\x01\x2c\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\x00\x00\xdb\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\x2d\x01\x2d\x01\x2d\x01\x2d\x01\x2d\x01\x2d\x01\x2d\x01\x2d\x01\x2d\x01\x2d\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xf6\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\x00\x00\xdb\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf5\x00\x00\x00\x00\x00\x00\x00\xac\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\x2d\x01\x2d\x01\x2d\x01\x2d\x01\x2d\x01\x2d\x01\x2d\x01\x2d\x01\x2d\x01\x2d\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xf3\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x2d\x02\xdb\x01\xdb\x01\x00\x00\xdb\x01\x00\x00\xdb\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xee\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xea\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x77\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xde\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdd\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\x00\x00\xdb\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x85\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd7\x00\xd6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x87\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\x00\x00\xdb\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xd3\x00\xdb\x01\xdb\x01\xd0\x01\xdb\x01\xdb\x01\xdb\x01\xa7\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xaa\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\x00\x00\xdb\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xd2\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\x00\x00\xdb\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xd0\x00\xdb\x01\xdb\x01\xdb\x01\x8f\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\x00\x00\xdb\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x8d\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\x00\x00\xdb\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x92\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xc7\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\x00\x00\xdb\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xc0\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\x00\x00\xdb\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xff\xff\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\x00\x00\xdb\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb7\x00\x00\x00\x00\x00\x00\x00\xb8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xba\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xaf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xad\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xaa\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x97\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x95\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x94\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x89\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x84\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x83\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x82\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x81\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x71\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf7\x00\x90\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x59\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x00\xe0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x76\x00\xef\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x37\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x36\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x29\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2b\x00\x2a\x00\x11\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x21\x00\x22\x00\x15\x00\x1b\x00\x1b\x00\x1b\x00\x1c\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\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\x00\x00\xdb\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x26\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x27\x00\x13\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x20\x00\x18\x00\x19\x00\x19\x00\x19\x00\x1a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\xff\xff\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x00\x00\x04\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x01\x04\x01\x00\x00\x00\x00\x00\x00\x02\x01\x04\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\x04\x01\x00\x00\x00\x00\x00\x00\x00\x00\x04\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\x04\x01\x00\x00\x01\x01\x00\x00\x04\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x26\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x27\x00\x13\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x20\x00\x18\x00\x19\x00\x19\x00\x19\x00\x1a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\xff\xff\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x00\x00\x04\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x01\x04\x01\x00\x00\x00\x00\x00\x00\x02\x01\x04\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\x04\x01\x00\x00\x00\x00\x00\x00\x00\x00\x04\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\x04\x01\x00\x00\x04\x01\x00\x00\x04\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x26\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x27\x00\x13\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x20\x00\x18\x00\x19\x00\x19\x00\x19\x00\x1a\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\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\x00\x00\xdb\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x26\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x27\x00\x13\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x20\x00\x18\x00\x19\x00\x19\x00\x19\x00\x1a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\xff\xff\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x00\x00\x04\x01\x00\x00\x00\x00\x00\x00\x00\x00\x04\x01\x04\x01\x04\x01\x00\x00\x00\x00\x00\x00\x00\x00\x04\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\x04\x01\x00\x00\x00\x00\x00\x00\x00\x00\x04\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\x06\x01\x00\x00\x00\x00\x07\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\x04\x01\x00\x00\x04\x01\x00\x00\x04\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x26\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x27\x00\x13\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x20\x00\x18\x00\x19\x00\x19\x00\x19\x00\x1a\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x01\x00\x00\x0a\x01\x0a\x01\x0a\x01\x0a\x01\x0a\x01\x00\x00\x00\x00\x0a\x01\x0a\x01\x0a\x01\x0a\x01\x00\x00\x0a\x01\x0a\x01\x0a\x01\x0a\x01\x0a\x01\x0a\x01\x0a\x01\x0a\x01\x0a\x01\x0a\x01\x0a\x01\x0a\x01\x00\x00\x0a\x01\x0a\x01\x0a\x01\x0a\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\x0a\x01\x0a\x01\x0a\x01\x0a\x01\x00\x00\x0a\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\x0a\x01\x00\x00\x0a\x01\x00\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\x26\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x27\x00\x13\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x20\x00\x18\x00\x19\x00\x19\x00\x19\x00\x1a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\xff\xff\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x00\x00\x04\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x01\x04\x01\x00\x00\x00\x00\x00\x00\x00\x00\x04\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\x04\x01\x00\x00\x00\x00\x00\x00\x00\x00\x04\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\x04\x01\x00\x00\x04\x01\x00\x00\x04\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x26\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x27\x00\x13\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x20\x00\x18\x00\x19\x00\x19\x00\x19\x00\x1a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\xff\xff\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x00\x00\x04\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x01\x04\x01\x00\x00\x00\x00\x00\x00\x08\x01\x05\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\x04\x01\x00\x00\x00\x00\x00\x00\x00\x00\x04\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\x04\x01\x00\x00\x01\x01\x00\x00\x04\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x26\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x27\x00\x13\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x20\x00\x18\x00\x19\x00\x19\x00\x19\x00\x1a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\xff\xff\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x00\x00\x04\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x01\x04\x01\x00\x00\x00\x00\x00\x00\x08\x01\x05\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\x04\x01\x00\x00\x00\x00\x00\x00\x00\x00\x04\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\x04\x01\x00\x00\x04\x01\x00\x00\x04\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x26\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x27\x00\x13\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x20\x00\x18\x00\x19\x00\x19\x00\x19\x00\x1a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\xff\xff\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x04\x01\x00\x00\x04\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x01\x04\x01\x00\x00\x00\x00\x00\x00\x00\x00\x05\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\x04\x01\x00\x00\x00\x00\x00\x00\x00\x00\x04\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\x04\x01\x00\x00\x04\x01\x00\x00\x04\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x26\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x28\x00\x27\x00\x13\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x20\x00\x18\x00\x19\x00\x19\x00\x19\x00\x1a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x49\x01\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\x22\x02\xdb\x01\x6d\x01\x25\x00\xdb\x01\x57\x01\x55\x01\x55\x01\x55\x01\x55\x01\x55\x01\x55\x01\x55\x01\x55\x01\x55\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x55\x01\x55\x01\x55\x01\x55\x01\x54\x01\x55\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x55\x01\x55\x01\x55\x01\x55\x01\x54\x01\x55\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x25\x00\xdb\x01\x55\x01\x55\x01\x55\x01\x55\x01\x55\x01\x55\x01\x55\x01\x55\x01\x55\x01\x55\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x55\x01\x55\x01\x55\x01\x55\x01\x54\x01\x55\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x55\x01\x55\x01\x55\x01\x55\x01\x54\x01\x55\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x25\x00\xdb\x01\x56\x01\x56\x01\x56\x01\x56\x01\x56\x01\x56\x01\x56\x01\x56\x01\x56\x01\x56\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x56\x01\x56\x01\x56\x01\x56\x01\x56\x01\x56\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x56\x01\x56\x01\x56\x01\x56\x01\x56\x01\x56\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x25\x00\xdb\x01\x55\x01\x55\x01\x55\x01\x55\x01\x55\x01\x55\x01\x55\x01\x55\x01\x55\x01\x55\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x55\x01\x55\x01\x55\x01\x55\x01\x54\x01\x55\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x55\x01\x55\x01\x55\x01\x55\x01\x54\x01\x55\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x1e\x02\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x25\x00\xdb\x01\x58\x01\x58\x01\x58\x01\x58\x01\x58\x01\x58\x01\x58\x01\x58\x01\x58\x01\x58\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x21\x02\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x21\x02\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x25\x00\xdb\x01\x59\x01\x59\x01\x59\x01\x59\x01\x59\x01\x59\x01\x59\x01\x59\x01\x59\x01\x59\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x25\x00\xdb\x01\x58\x01\x58\x01\x58\x01\x58\x01\x58\x01\x58\x01\x58\x01\x58\x01\x58\x01\x58\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x21\x02\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x21\x02\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x25\x02\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x25\x00\xdb\x01\x59\x01\x59\x01\x59\x01\x59\x01\x59\x01\x59\x01\x59\x01\x59\x01\x59\x01\x59\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x26\x02\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\x5c\x01\x5c\x01\x5c\x01\x5c\x01\x5c\x01\x5c\x01\x5c\x01\x5c\x01\x5c\x01\x5c\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x5c\x01\x5c\x01\x5c\x01\x5c\x01\x5c\x01\x5c\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x5c\x01\x5c\x01\x5c\x01\x5c\x01\x5c\x01\x5c\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\x1d\x02\xdb\x01\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x00\x00\x00\x00\x1d\x02\x24\x02\x1d\x02\x24\x02\x0f\x00\x1d\x02\x60\x01\x5e\x01\x5e\x01\x5e\x01\x5e\x01\x5e\x01\x5e\x01\x5e\x01\x5e\x01\x5e\x01\x1d\x02\x00\x00\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x00\x00\x5e\x01\x5e\x01\x5e\x01\x5e\x01\x5d\x01\x5e\x01\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x5e\x01\x5e\x01\x5e\x01\x5e\x01\x5d\x01\x5e\x01\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x00\x00\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x00\x00\x00\x00\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x0f\x00\x1d\x02\x5e\x01\x5e\x01\x5e\x01\x5e\x01\x5e\x01\x5e\x01\x5e\x01\x5e\x01\x5e\x01\x5e\x01\x1d\x02\x00\x00\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x00\x00\x5e\x01\x5e\x01\x5e\x01\x5e\x01\x5d\x01\x5e\x01\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x5e\x01\x5e\x01\x5e\x01\x5e\x01\x5d\x01\x5e\x01\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x00\x00\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x00\x00\x00\x00\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x0f\x00\x1d\x02\x5f\x01\x5f\x01\x5f\x01\x5f\x01\x5f\x01\x5f\x01\x5f\x01\x5f\x01\x5f\x01\x5f\x01\x1d\x02\x00\x00\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x00\x00\x5f\x01\x5f\x01\x5f\x01\x5f\x01\x5f\x01\x5f\x01\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x5f\x01\x5f\x01\x5f\x01\x5f\x01\x5f\x01\x5f\x01\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x00\x00\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x00\x00\x00\x00\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x0f\x00\x1d\x02\x5e\x01\x5e\x01\x5e\x01\x5e\x01\x5e\x01\x5e\x01\x5e\x01\x5e\x01\x5e\x01\x5e\x01\x1d\x02\x00\x00\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x00\x00\x5e\x01\x5e\x01\x5e\x01\x5e\x01\x5d\x01\x5e\x01\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x5e\x01\x5e\x01\x5e\x01\x5e\x01\x5d\x01\x5e\x01\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1f\x02\x1d\x02\x1d\x02\x00\x00\x1d\x02\xdb\x01\x1d\x02\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\x61\x01\x61\x01\x61\x01\x61\x01\x61\x01\x61\x01\x61\x01\x61\x01\x61\x01\x61\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\x61\x01\x61\x01\x61\x01\x61\x01\x61\x01\x61\x01\x61\x01\x61\x01\x61\x01\x61\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x1e\x02\xdb\x01\xdb\x01\x00\x00\xdb\x01\x1d\x02\xdb\x01\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x00\x00\x00\x00\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x0f\x00\x1d\x02\x63\x01\x63\x01\x63\x01\x63\x01\x63\x01\x63\x01\x63\x01\x63\x01\x63\x01\x63\x01\x1d\x02\x00\x00\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x00\x00\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x23\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x23\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x00\x00\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x00\x00\x00\x00\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x0f\x00\x1d\x02\x64\x01\x64\x01\x64\x01\x64\x01\x64\x01\x64\x01\x64\x01\x64\x01\x64\x01\x64\x01\x1d\x02\x00\x00\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x00\x00\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x00\x00\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x00\x00\x00\x00\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x0f\x00\x1d\x02\x63\x01\x63\x01\x63\x01\x63\x01\x63\x01\x63\x01\x63\x01\x63\x01\x63\x01\x63\x01\x1d\x02\x00\x00\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x00\x00\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x23\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x23\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x20\x02\x1d\x02\x1d\x02\x00\x00\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x00\x00\x00\x00\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x0f\x00\x1d\x02\x64\x01\x64\x01\x64\x01\x64\x01\x64\x01\x64\x01\x64\x01\x64\x01\x64\x01\x64\x01\x1d\x02\x00\x00\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x00\x00\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1f\x02\x1d\x02\x1d\x02\x00\x00\x1d\x02\xdb\x01\x1d\x02\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x08\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xff\x00\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x08\x01\x0f\x00\xdb\x01\x5b\x01\x59\x01\x59\x01\x59\x01\x59\x01\x59\x01\x59\x01\x59\x01\x59\x01\x59\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\x4c\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xff\x00\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xd2\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\x00\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xd3\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\x00\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdc\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\x00\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\x00\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\x62\x01\x61\x01\x61\x01\x61\x01\x61\x01\x61\x01\x61\x01\x61\x01\x61\x01\x61\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\x00\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x10\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x13\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x14\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x15\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x18\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x19\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x1a\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x1d\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x1e\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x1f\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x20\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x26\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x27\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x29\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x31\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x32\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x33\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x36\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x39\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x3a\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x3b\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x3c\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x3d\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x3b\x02\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x37\x02\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x34\x02\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x33\x02\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x32\x02\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x31\x02\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x7a\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x30\x02\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x2f\x02\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x2c\x02\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x29\x02\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x7f\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x28\x02\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x84\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x1c\x02\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x1b\x02\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x93\x01\x1a\x02\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x19\x02\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x18\x02\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x17\x02\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x16\x02\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x15\x02\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x14\x02\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x13\x02\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x12\x02\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x11\x02\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x10\x02\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x0f\x02\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x0e\x02\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x89\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x8a\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x0d\x02\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x0c\x02\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x0b\x02\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x8e\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x0a\x02\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x09\x02\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x08\x02\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x07\x02\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x06\x02\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x05\x02\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x04\x02\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x03\x02\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x94\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xed\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x9d\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xc9\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xfb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x01\x02\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x02\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xa5\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xf7\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xf1\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xa9\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xab\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xfe\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xc5\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xad\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xaf\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xfa\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xf9\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xf6\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xb1\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xb2\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xf5\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xf4\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xf3\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xf2\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xef\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xee\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xb6\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xb7\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xeb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xe9\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xb9\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xe4\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xd1\x01\xdb\x01\xdb\x01\xc3\x01\xdb\x01\xdb\x01\xe8\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xbf\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xc0\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xc1\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xc2\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xe7\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xe5\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xe3\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xcd\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xce\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xe1\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x69\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6a\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xd5\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xd6\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6b\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xd9\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xd8\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xd7\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xe0\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xcf\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xcc\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xe2\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xbe\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xba\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xea\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xec\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xb3\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xf0\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xfc\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xae\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xac\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xfd\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xa8\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xa6\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xff\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xbb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xa4\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xa3\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xa2\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xa1\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xa0\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x9f\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x9e\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x9c\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xde\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xd4\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x9a\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x99\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x98\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x97\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x96\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x92\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x91\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x90\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x8c\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x8b\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x87\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x86\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xc4\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x82\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x81\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x80\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x27\x02\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x7e\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x7d\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x7c\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x2b\x02\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x2e\x02\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x7b\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x79\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x78\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x77\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x76\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x75\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x35\x02\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x74\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x73\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x72\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x36\x02\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x71\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x70\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x6f\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x38\x02\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x39\x02\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x6e\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\x1d\x02\xdb\x01\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x00\x00\x00\x00\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x0f\x00\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x00\x00\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x00\x00\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x00\x00\x1d\x02\xdb\x01\x1d\x02\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\x5c\x01\x5c\x01\x5c\x01\x5c\x01\x5c\x01\x5c\x01\x5c\x01\x5c\x01\x5c\x01\x5c\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x5c\x01\x5c\x01\x5c\x01\x5c\x01\x5c\x01\x5c\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x5c\x01\x5c\x01\x5c\x01\x5c\x01\x5c\x01\x5c\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\x1d\x02\xdb\x01\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x00\x00\x00\x00\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x0f\x00\x1d\x02\x5f\x01\x5f\x01\x5f\x01\x5f\x01\x5f\x01\x5f\x01\x5f\x01\x5f\x01\x5f\x01\x5f\x01\x1d\x02\x00\x00\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x00\x00\x5f\x01\x5f\x01\x5f\x01\x5f\x01\x5f\x01\x5f\x01\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x5f\x01\x5f\x01\x5f\x01\x5f\x01\x5f\x01\x5f\x01\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x00\x00\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x00\x00\x00\x00\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x0f\x00\x1d\x02\x5e\x01\x5e\x01\x5e\x01\x5e\x01\x5e\x01\x5e\x01\x5e\x01\x5e\x01\x5e\x01\x5e\x01\x1d\x02\x00\x00\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x00\x00\x5e\x01\x5e\x01\x5e\x01\x5e\x01\x5e\x01\x5e\x01\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x5e\x01\x5e\x01\x5e\x01\x5e\x01\x5e\x01\x5e\x01\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x00\x00\x1d\x02\xdb\x01\x1d\x02\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\x22\x02\xdb\x01\x6d\x01\x0f\x00\xdb\x01\x62\x01\x61\x01\x61\x01\x61\x01\x61\x01\x61\x01\x61\x01\x61\x01\x61\x01\x61\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\x62\x01\x61\x01\x61\x01\x61\x01\x61\x01\x61\x01\x61\x01\x61\x01\x61\x01\x61\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\x1d\x02\xdb\x01\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x00\x00\x00\x00\x1d\x02\x24\x02\x1d\x02\x24\x02\x0f\x00\x1d\x02\x66\x01\x64\x01\x64\x01\x64\x01\x64\x01\x64\x01\x64\x01\x64\x01\x64\x01\x64\x01\x1d\x02\x00\x00\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x00\x00\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x00\x00\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x00\x00\x00\x00\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x0f\x00\x1d\x02\x66\x01\x64\x01\x64\x01\x64\x01\x64\x01\x64\x01\x64\x01\x64\x01\x64\x01\x64\x01\x1d\x02\x00\x00\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x00\x00\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x1d\x02\x00\x00\x1d\x02\xdb\x01\x1d\x02\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\x55\x01\x55\x01\x55\x01\x55\x01\x55\x01\x55\x01\x55\x01\x55\x01\x55\x01\x55\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x55\x01\x55\x01\x55\x01\x55\x01\x55\x01\x55\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x55\x01\x55\x01\x55\x01\x55\x01\x55\x01\x55\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\x56\x01\x56\x01\x56\x01\x56\x01\x56\x01\x56\x01\x56\x01\x56\x01\x56\x01\x56\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x56\x01\x56\x01\x56\x01\x56\x01\x56\x01\x56\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x56\x01\x56\x01\x56\x01\x56\x01\x56\x01\x56\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x38\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x37\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x2a\x02\xdb\x01\xdb\x01\x35\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x34\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x30\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x2f\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\x2c\x01\x2c\x01\x2c\x01\x2c\x01\x2c\x01\x2c\x01\x2c\x01\x2c\x01\x2c\x01\x2c\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x2c\x01\x2c\x01\x2c\x01\x2c\x01\x2c\x01\x2c\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x2c\x01\x2c\x01\x2c\x01\x2c\x01\x2c\x01\x2c\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x2b\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x2a\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x28\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x25\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x24\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x21\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x1c\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x1b\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x17\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x16\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x12\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x11\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xf8\x01\x0f\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\x00\x00\xdb\x01\xdb\x01\xdb\x01\x6c\x01\x0f\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x0e\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\xdb\x01\x00\x00\xdb\x01\x00\x00\xdb\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#
 
 alex_check :: AlexAddr
-alex_check = AlexA# "\xff\xff\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x7d\x00\x2d\x00\x65\x00\x6f\x00\x63\x00\x7b\x00\x6e\x00\x64\x00\x64\x00\x0a\x00\x23\x00\x2e\x00\x2e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x20\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7e\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\x0b\x00\x0c\x00\x0d\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\x20\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\xff\xff\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7e\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\xff\xff\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7e\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\xff\xff\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7e\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x21\x00\x23\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\xff\xff\xff\xff\x48\x00\x49\x00\xff\xff\xff\xff\x4c\x00\x4d\x00\x4e\x00\x4f\x00\xff\xff\xff\xff\x52\x00\x53\x00\x54\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5b\x00\x5c\x00\x5d\x00\x5e\x00\xff\xff\x60\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7b\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\x7b\x00\xff\xff\x7c\x00\xff\xff\x7e\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x20\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\xff\xff\x60\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5c\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\x7c\x00\xff\xff\x7e\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x7d\x00\x7e\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x7d\x00\x7e\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\xff\xff\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\xff\xff\x60\x00\xff\xff\xff\xff\xff\xff\xff\xff\x65\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\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\xff\xff\x60\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\x7c\x00\xff\xff\x7e\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\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\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\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\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\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\xff\xff\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\x00\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\x7f\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\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\x7f\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\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\x7f\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\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\x7f\x00\x0a\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\x21\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\x20\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x0a\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\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\x7d\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x0a\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\x65\x00\x7c\x00\xff\xff\x7e\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x0a\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x6f\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x0a\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\xff\xff\x60\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\x63\x00\xff\xff\xff\xff\x7c\x00\xff\xff\x7e\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x0a\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\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\x7b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x0a\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\x69\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x0a\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x67\x00\x7e\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x0a\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\x65\x00\x7c\x00\xff\xff\x7e\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x0a\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x5c\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x0a\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\x62\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x0a\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x6e\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x0a\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\x64\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\x20\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\x20\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\x20\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\x20\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x5f\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x5f\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\x20\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\x20\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\x20\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\x20\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\x20\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\x20\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\x20\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\x20\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\x20\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x5f\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\x20\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\x20\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\x20\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\x20\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\x20\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\x20\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\x20\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\x20\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\x20\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\x20\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\x20\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\x20\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\x20\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\x00\xff\xff\x21\x00\x23\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\x20\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7d\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\x00\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x41\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x43\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\x00\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x41\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x43\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x53\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x45\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x43\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x59\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x43\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x45\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x45\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x45\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x45\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x4b\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x47\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x4b\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x47\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x53\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x45\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x43\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x47\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x20\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\x2d\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x2d\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x49\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x45\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x49\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\x00\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x41\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x43\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x43\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x49\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\x00\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x41\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x41\x00\xff\xff\xff\xff\xff\xff\x45\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x55\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\x00\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x41\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x4f\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x59\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x45\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x4f\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x55\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x49\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x49\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x55\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x45\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x49\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x45\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x49\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x4f\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x49\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x49\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x49\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x4b\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x49\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x53\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x49\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\x00\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x41\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x49\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x43\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x5f\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x53\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x53\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x4d\x00\x4e\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x53\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\x00\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x41\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x43\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x53\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x43\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\x00\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x41\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x57\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\x00\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x41\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x55\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x4d\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x45\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\x00\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x41\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x49\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x45\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x5f\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\x00\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x41\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x5f\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x45\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x41\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\x4f\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x59\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x4d\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x49\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x49\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\x00\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x41\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x50\x00\xff\xff\xff\xff\x53\x00\x54\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x4f\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x4d\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x4d\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x49\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x4e\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\x5f\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x49\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x43\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x4f\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x45\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x45\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x49\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\x00\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x41\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x5f\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x49\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x49\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x53\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x4d\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x4f\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x45\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\x20\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x52\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x4e\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x54\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x54\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x54\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x56\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x52\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x52\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x4c\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x54\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x4e\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x52\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x4e\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x50\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x4e\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x54\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x54\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x54\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x50\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x54\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x52\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x54\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x48\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x48\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x48\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x4c\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x50\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x50\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x50\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x44\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x48\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x4c\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x54\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x42\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x4c\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x50\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x4c\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x54\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x4e\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x54\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x4e\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x4e\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x4e\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x52\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x4e\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x4e\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x4c\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x48\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x52\x00\x53\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x4c\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x48\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x50\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x44\x00\x45\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x54\x00\x55\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x52\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x54\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x48\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x54\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x4c\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x54\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x4c\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x54\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x44\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x4c\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x4e\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x0a\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\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\xff\xff\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\xff\xff\x2d\x00\x2e\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\x3b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x40\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\x7b\x00\xff\xff\x7d\x00\xff\xff\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\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\xff\xff\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\xff\xff\x2d\x00\x2e\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\x3b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x40\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\x7b\x00\xff\xff\x7d\x00\xff\xff\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x0a\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\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\xff\xff\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\x27\x00\x28\x00\x29\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2e\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\x3b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x40\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\x5c\x00\xff\xff\xff\xff\x5f\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\x7b\x00\xff\xff\x7d\x00\xff\xff\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x0a\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\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\xff\xff\x60\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\x7c\x00\xff\xff\x7e\x00\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\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\xff\xff\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2e\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\x3b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x40\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\x7b\x00\xff\xff\x7d\x00\xff\xff\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\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\xff\xff\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\xff\xff\x2d\x00\x2e\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\x3b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x40\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\x7b\x00\xff\xff\x7d\x00\xff\xff\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\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\xff\xff\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\xff\xff\x2d\x00\x2e\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\x3b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x40\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\x7b\x00\xff\xff\x7d\x00\xff\xff\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\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\xff\xff\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2e\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\x3b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x40\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\x7b\x00\xff\xff\x7d\x00\xff\xff\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x7d\x00\x7e\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x7d\x00\x7e\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x7d\x00\x7e\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x7d\x00\x7e\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x7d\x00\x7e\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x7d\x00\x7e\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x7d\x00\x7e\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"#
+alex_check = AlexA# "\xff\xff\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x2d\x00\x23\x00\x2e\x00\x2e\x00\x7c\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\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x20\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x20\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7e\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\x0b\x00\x0c\x00\x0d\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\x20\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\xff\xff\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7e\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\xff\xff\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7e\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\xff\xff\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7e\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x21\x00\x23\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\xff\xff\xff\xff\x48\x00\x49\x00\xff\xff\xff\xff\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\xff\xff\x52\x00\x53\x00\x54\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5b\x00\x5c\x00\x5d\x00\x5e\x00\xff\xff\x60\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7b\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\x7b\x00\xff\xff\x7c\x00\xff\xff\x7e\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x7d\x00\x7e\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x7d\x00\x7e\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\xff\xff\x60\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\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x7c\x00\xff\xff\x7e\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\xff\xff\x60\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\x7c\x00\xff\xff\x7e\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\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\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\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\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\xff\xff\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\x00\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\x7f\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\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\x7f\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\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\x7f\x00\x0a\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\x21\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\x20\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\x20\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\x20\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\x20\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x20\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\xff\xff\x60\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\x5f\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\x7c\x00\xff\xff\x7e\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x5f\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\x20\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\x20\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\x20\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\x20\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\x20\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\x20\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\x20\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\x20\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\x20\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x5f\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\x20\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\x20\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\x20\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\x20\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\x20\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\x20\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\x20\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\x20\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\x20\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\x20\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\x20\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\x20\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\x20\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\x00\xff\xff\x21\x00\x23\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\x20\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7d\x00\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\x00\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x41\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x43\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\x00\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x41\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x43\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x53\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x45\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x43\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x59\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x43\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x45\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x45\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x45\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x45\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x4b\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x4b\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x47\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x53\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x59\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x45\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x43\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x47\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x20\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\x2d\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x2d\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x49\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x45\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x49\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\x00\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x41\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x43\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x43\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x49\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\x00\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x41\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x41\x00\xff\xff\xff\xff\xff\xff\x45\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x55\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\x00\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x41\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x4f\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x59\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x45\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x4f\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x55\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x49\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x49\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x55\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x45\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x45\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x49\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x4f\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x49\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x49\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x49\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x49\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x4b\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x49\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x53\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x49\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\x00\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x41\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x49\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x43\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x5f\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x53\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x53\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x4d\x00\x4e\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x53\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\x00\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x41\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x43\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x43\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\x00\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x41\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\x00\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x41\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x57\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\x00\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x41\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x55\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x4d\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x45\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\x00\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x41\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x49\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x45\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x5f\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x5f\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x45\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x41\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\x4f\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x59\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x49\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x4f\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x49\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\x00\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x41\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x4f\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x4d\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x4d\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x49\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x49\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x43\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x45\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x45\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x49\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\x00\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x41\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x5f\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x49\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x49\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x53\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x4d\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x4f\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x4f\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x45\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\x20\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x50\x00\xff\xff\xff\xff\xff\xff\x54\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x52\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x4e\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\x5f\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x4e\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x54\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x54\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x54\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x56\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x52\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x52\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x4c\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x54\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x4e\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x52\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x4e\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x4c\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x50\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x4e\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x54\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x54\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x54\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x50\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x54\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x52\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x52\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x54\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x48\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x48\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x4c\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x50\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x50\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x50\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x44\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x48\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x4c\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x54\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x42\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x4c\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x50\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x4c\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x54\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x4e\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x54\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x54\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x4e\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x4e\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x52\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x4e\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x4e\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x4c\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x48\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x52\x00\x53\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x4c\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x48\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x50\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x44\x00\x45\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x54\x00\x55\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x52\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x54\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x48\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x54\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x4c\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x54\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x4c\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x54\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x44\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x4c\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\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\x20\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\x4e\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x0a\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\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\xff\xff\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\xff\xff\x2d\x00\x2e\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\x3b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x40\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\x7b\x00\xff\xff\x7d\x00\xff\xff\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\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\xff\xff\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\xff\xff\x2d\x00\x2e\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\x3b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x40\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\x7b\x00\xff\xff\x7d\x00\xff\xff\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x0a\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\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\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\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\xff\xff\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\x27\x00\x28\x00\x29\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2e\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\x3b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x40\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\x5c\x00\xff\xff\xff\xff\x5f\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\x7b\x00\xff\xff\x7d\x00\xff\xff\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x0a\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\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\xff\xff\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\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\x5b\x00\x5c\x00\x5d\x00\x5e\x00\xff\xff\x60\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\x7c\x00\xff\xff\x7e\x00\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\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\xff\xff\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2e\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\x3b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x40\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\x7b\x00\xff\xff\x7d\x00\xff\xff\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\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\xff\xff\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\xff\xff\x2d\x00\x2e\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\x3b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x40\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\x7b\x00\xff\xff\x7d\x00\xff\xff\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\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\xff\xff\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\xff\xff\x2d\x00\x2e\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\x3b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x40\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\x7b\x00\xff\xff\x7d\x00\xff\xff\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\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\xff\xff\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2e\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\x3b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x40\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\x7b\x00\xff\xff\x7d\x00\xff\xff\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\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\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x7d\x00\x7e\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x7d\x00\x7e\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x7d\x00\x7e\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x7d\x00\x7e\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x7d\x00\x7e\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x7d\x00\x7e\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x7d\x00\x7e\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\x21\x00\x7e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\xff\xff\xff\xff\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\xff\xff\x3c\x00\x3d\x00\x3e\x00\x3f\x00\xff\xff\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\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\xff\xff\x7c\x00\xff\xff\x7e\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"#
 
 alex_deflt :: AlexAddr
-alex_deflt = AlexA# "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xdf\x00\x4d\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\x2c\x00\x2c\x00\x2e\x00\x2e\x00\xff\xff\x30\x00\x30\x00\x32\x00\x32\x00\x37\x00\x37\x00\x3a\x00\x3a\x00\x3d\x00\x3d\x00\x42\x00\x42\x00\xff\xff\x27\x01\x27\x01\x27\x01\xdf\x00\xdf\x00\xdf\x00\x4d\x00\x4d\x00\x4d\x00\x43\x00\xff\xff\x43\x00\x43\x00\x43\x00\xff\xff\x4d\x00\x4d\x00\x4d\x00\x4d\x00\x4d\x00\x4d\x00\x4d\x00\x4d\x00\x4d\x00\x4d\x00\x4d\x00\x4d\x00\x4d\x00\x4d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xdf\x00\xff\xff\xff\xff\xff\xff\xff\xff\x27\x01\x26\x01\x26\x01\x27\x01\x2d\x01\x27\x01\x2d\x01\x2c\x01\x2c\x01\x2d\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"#
+alex_deflt = AlexA# "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb9\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\x1f\x00\x1f\x00\x21\x00\x21\x00\x23\x00\x23\x00\x28\x00\x28\x00\x2b\x00\x2b\x00\x2f\x00\x2f\x00\xff\xff\x04\x01\x04\x01\x04\x01\xb9\x00\xb9\x00\xb9\x00\x31\x00\x31\x00\x31\x00\x31\x00\xff\xff\xff\xff\xff\xff\xff\xff\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\x04\x01\x03\x01\x03\x01\x04\x01\x0a\x01\x04\x01\x0a\x01\x09\x01\x09\x01\x0a\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"#
 
-alex_accept = listArray (0::Int,598) [AlexAccNone,AlexAccPred  (alex_action_46) ( not' eof )(AlexAccNone),AlexAccNone,AlexAcc (alex_action_49),AlexAccNone,AlexAcc (alex_action_48),AlexAccNone,AlexAccPred  (alex_action_4) ( eof )(AlexAccNone),AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccSkip,AlexAccPred  (alex_action_0) (alexRightContext 63)(AlexAccPred  (alex_action_1) ( keepComments )(AlexAccSkip)),AlexAccPred  (alex_action_1) ( keepComments )(AlexAccSkip),AlexAccPred  (alex_action_1) ( keepComments )(AlexAccSkip),AlexAccPred  (alex_action_1) ( keepComments )(AlexAccSkip),AlexAccPred  (alex_action_1) ( keepComments )(AlexAccSkip),AlexAccPred  (alex_action_1) ( keepComments )(AlexAccSkip),AlexAccPred  (alex_action_1) ( keepComments )(AlexAccSkip),AlexAccPred  (alex_action_1) ( keepComments )(AlexAccSkip),AlexAccPred  (alex_action_1) ( keepComments )(AlexAccSkip),AlexAccPred  (alex_action_1) ( keepComments )(AlexAccSkip),AlexAccPred  (alex_action_1) ( keepComments )(AlexAccSkip),AlexAccPred  (alex_action_1) ( keepComments )(AlexAccSkip),AlexAccPred  (alex_action_1) ( keepComments )(AlexAccSkip),AlexAccPred  (alex_action_1) ( keepComments )(AlexAccSkip),AlexAccSkip,AlexAccPred  (alex_action_5) ( inState code )(AlexAccNone),AlexAccSkip,AlexAccSkip,AlexAcc (alex_action_8),AlexAcc (alex_action_9),AlexAcc (alex_action_10),AlexAcc (alex_action_11),AlexAcc (alex_action_12),AlexAcc (alex_action_13),AlexAcc (alex_action_14),AlexAcc (alex_action_15),AlexAcc (alex_action_16),AlexAcc (alex_action_17),AlexAcc (alex_action_18),AlexAcc (alex_action_19),AlexAcc (alex_action_20),AlexAcc (alex_action_21),AlexAcc (alex_action_22),AlexAcc (alex_action_23),AlexAcc (alex_action_24),AlexAcc (alex_action_25),AlexAcc (alex_action_26),AlexAcc (alex_action_27),AlexAcc (alex_action_28),AlexAcc (alex_action_29),AlexAcc (alex_action_30),AlexAcc (alex_action_31),AlexAcc (alex_action_32),AlexAcc (alex_action_33),AlexAcc (alex_action_34),AlexAcc (alex_action_35),AlexAcc (alex_action_36),AlexAcc (alex_action_37),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAcc (alex_action_38),AlexAccPred  (alex_action_39) ( not' (followedBy '#') )(AlexAccNone),AlexAccPred  (alex_action_39) ( not' (followedBy '#') )(AlexAccNone),AlexAcc (alex_action_40),AlexAcc (alex_action_41),AlexAcc (alex_action_41),AlexAccPred  (alex_action_42) ( keepComments .&&. (followedBy '\n' .||. eof) )(AlexAccSkipPred  ( followedBy '\n' .||. eof )(AlexAccNone)),AlexAccPred  (alex_action_42) ( keepComments .&&. (followedBy '\n' .||. eof) )(AlexAccSkipPred  ( followedBy '\n' .||. eof )(AlexAccNone)),AlexAccPred  (alex_action_42) ( keepComments .&&. (followedBy '\n' .||. eof) )(AlexAccSkipPred  ( followedBy '\n' .||. eof )(AlexAccNone)),AlexAccPred  (alex_action_42) ( keepComments .&&. (followedBy '\n' .||. eof) )(AlexAccSkipPred  ( followedBy '\n' .||. eof )(AlexAccNone)),AlexAccPred  (alex_action_42) ( keepComments .&&. (followedBy '\n' .||. eof) )(AlexAccSkipPred  ( followedBy '\n' .||. eof )(AlexAccNone)),AlexAccPred  (alex_action_42) ( keepComments .&&. (followedBy '\n' .||. eof) )(AlexAccSkipPred  ( followedBy '\n' .||. eof )(AlexAccNone)),AlexAccPred  (alex_action_42) ( keepComments .&&. (followedBy '\n' .||. eof) )(AlexAccSkipPred  ( followedBy '\n' .||. eof )(AlexAcc (alex_action_117))),AlexAccPred  (alex_action_42) ( keepComments .&&. (followedBy '\n' .||. eof) )(AlexAccSkipPred  ( followedBy '\n' .||. eof )(AlexAcc (alex_action_117))),AlexAccPred  (alex_action_42) ( keepComments .&&. (followedBy '\n' .||. eof) )(AlexAccSkipPred  ( followedBy '\n' .||. eof )(AlexAcc (alex_action_117))),AlexAcc (alex_action_44),AlexAccSkip,AlexAccSkip,AlexAcc (alex_action_50),AlexAcc (alex_action_51),AlexAcc (alex_action_52),AlexAcc (alex_action_53),AlexAcc (alex_action_54),AlexAcc (alex_action_55),AlexAcc (alex_action_56),AlexAcc (alex_action_57),AlexAcc (alex_action_58),AlexAcc (alex_action_59),AlexAcc (alex_action_60),AlexAcc (alex_action_61),AlexAcc (alex_action_62),AlexAcc (alex_action_63),AlexAcc (alex_action_64),AlexAcc (alex_action_65),AlexAcc (alex_action_66),AlexAcc (alex_action_67),AlexAcc (alex_action_68),AlexAcc (alex_action_69),AlexAcc (alex_action_70),AlexAcc (alex_action_71),AlexAcc (alex_action_72),AlexAcc (alex_action_73),AlexAcc (alex_action_74),AlexAcc (alex_action_75),AlexAcc (alex_action_76),AlexAcc (alex_action_77),AlexAcc (alex_action_78),AlexAcc (alex_action_79),AlexAcc (alex_action_79),AlexAcc (alex_action_79),AlexAcc (alex_action_80),AlexAcc (alex_action_81),AlexAcc (alex_action_82),AlexAcc (alex_action_83),AlexAcc (alex_action_84),AlexAcc (alex_action_85),AlexAcc (alex_action_86),AlexAcc (alex_action_87),AlexAcc (alex_action_88),AlexAcc (alex_action_89),AlexAcc (alex_action_90),AlexAcc (alex_action_91),AlexAcc (alex_action_92),AlexAcc (alex_action_93),AlexAcc (alex_action_94),AlexAcc (alex_action_95),AlexAcc (alex_action_96),AlexAcc (alex_action_97),AlexAcc (alex_action_98),AlexAcc (alex_action_99),AlexAcc (alex_action_100),AlexAcc (alex_action_101),AlexAcc (alex_action_102),AlexAcc (alex_action_103),AlexAcc (alex_action_104),AlexAcc (alex_action_105),AlexAcc (alex_action_106),AlexAcc (alex_action_107),AlexAcc (alex_action_108),AlexAcc (alex_action_109),AlexAccPred  (alex_action_110) (alexRightContext 64)(AlexAccNone),AlexAcc (alex_action_111),AlexAcc (alex_action_112),AlexAcc (alex_action_113),AlexAcc (alex_action_114),AlexAcc (alex_action_115),AlexAcc (alex_action_115),AlexAcc (alex_action_115),AlexAcc (alex_action_115),AlexAcc (alex_action_115),AlexAcc (alex_action_115),AlexAcc (alex_action_115),AlexAcc (alex_action_115),AlexAcc (alex_action_116),AlexAcc (alex_action_116),AlexAcc (alex_action_116),AlexAcc (alex_action_116),AlexAcc (alex_action_116),AlexAcc (alex_action_116),AlexAcc (alex_action_116),AlexAcc (alex_action_116),AlexAcc (alex_action_116),AlexAcc (alex_action_116),AlexAcc (alex_action_116),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117),AlexAcc (alex_action_117)]
-{-# LINE 249 "src/full/Agda/Syntax/Parser/Lexer.x" #-}
+alex_accept = listArray (0::Int,571) [AlexAccNone,AlexAccPred 524 ( not' eof )(AlexAccNone),AlexAccNone,AlexAcc 523,AlexAccNone,AlexAcc 522,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccSkip,AlexAccSkip,AlexAccSkip,AlexAcc 521,AlexAcc 520,AlexAcc 519,AlexAcc 518,AlexAcc 517,AlexAcc 516,AlexAcc 515,AlexAcc 514,AlexAcc 513,AlexAcc 512,AlexAcc 511,AlexAcc 510,AlexAcc 509,AlexAcc 508,AlexAcc 507,AlexAcc 506,AlexAcc 505,AlexAcc 504,AlexAcc 503,AlexAcc 502,AlexAcc 501,AlexAcc 500,AlexAcc 499,AlexAcc 498,AlexAcc 497,AlexAcc 496,AlexAcc 495,AlexAcc 494,AlexAcc 493,AlexAcc 492,AlexAcc 491,AlexAcc 490,AlexAcc 489,AlexAcc 488,AlexAcc 487,AlexAcc 486,AlexAcc 485,AlexAcc 484,AlexAcc 483,AlexAcc 482,AlexAcc 481,AlexAcc 480,AlexAcc 479,AlexAcc 478,AlexAcc 477,AlexAcc 476,AlexAcc 475,AlexAcc 474,AlexAcc 473,AlexAcc 472,AlexAcc 471,AlexAcc 470,AlexAcc 469,AlexAcc 468,AlexAcc 467,AlexAcc 466,AlexAcc 465,AlexAcc 464,AlexAcc 463,AlexAcc 462,AlexAcc 461,AlexAcc 460,AlexAcc 459,AlexAcc 458,AlexAcc 457,AlexAcc 456,AlexAcc 455,AlexAcc 454,AlexAcc 453,AlexAcc 452,AlexAcc 451,AlexAcc 450,AlexAcc 449,AlexAcc 448,AlexAcc 447,AlexAcc 446,AlexAcc 445,AlexAcc 444,AlexAcc 443,AlexAcc 442,AlexAcc 441,AlexAcc 440,AlexAcc 439,AlexAcc 438,AlexAcc 437,AlexAcc 436,AlexAcc 435,AlexAcc 434,AlexAcc 433,AlexAcc 432,AlexAcc 431,AlexAcc 430,AlexAcc 429,AlexAcc 428,AlexAcc 427,AlexAcc 426,AlexAcc 425,AlexAcc 424,AlexAcc 423,AlexAcc 422,AlexAcc 421,AlexAcc 420,AlexAcc 419,AlexAcc 418,AlexAcc 417,AlexAcc 416,AlexAcc 415,AlexAcc 414,AlexAcc 413,AlexAcc 412,AlexAcc 411,AlexAcc 410,AlexAcc 409,AlexAcc 408,AlexAcc 407,AlexAcc 406,AlexAcc 405,AlexAcc 404,AlexAcc 403,AlexAcc 402,AlexAcc 401,AlexAcc 400,AlexAcc 399,AlexAcc 398,AlexAcc 397,AlexAcc 396,AlexAcc 395,AlexAcc 394,AlexAcc 393,AlexAcc 392,AlexAcc 391,AlexAcc 390,AlexAcc 389,AlexAcc 388,AlexAcc 387,AlexAcc 386,AlexAcc 385,AlexAcc 384,AlexAcc 383,AlexAcc 382,AlexAcc 381,AlexAcc 380,AlexAcc 379,AlexAcc 378,AlexAcc 377,AlexAcc 376,AlexAcc 375,AlexAcc 374,AlexAcc 373,AlexAcc 372,AlexAcc 371,AlexAcc 370,AlexAcc 369,AlexAcc 368,AlexAcc 367,AlexAcc 366,AlexAcc 365,AlexAcc 364,AlexAcc 363,AlexAcc 362,AlexAcc 361,AlexAcc 360,AlexAcc 359,AlexAcc 358,AlexAcc 357,AlexAcc 356,AlexAcc 355,AlexAcc 354,AlexAcc 353,AlexAcc 352,AlexAcc 351,AlexAcc 350,AlexAcc 349,AlexAcc 348,AlexAcc 347,AlexAcc 346,AlexAcc 345,AlexAcc 344,AlexAcc 343,AlexAcc 342,AlexAcc 341,AlexAcc 340,AlexAcc 339,AlexAcc 338,AlexAcc 337,AlexAcc 336,AlexAcc 335,AlexAcc 334,AlexAcc 333,AlexAcc 332,AlexAcc 331,AlexAcc 330,AlexAcc 329,AlexAcc 328,AlexAcc 327,AlexAcc 326,AlexAcc 325,AlexAcc 324,AlexAcc 323,AlexAcc 322,AlexAcc 321,AlexAcc 320,AlexAccPred 319 ( not' (followedBy '#') )(AlexAccNone),AlexAccPred 318 ( not' (followedBy '#') )(AlexAccNone),AlexAcc 317,AlexAcc 316,AlexAcc 315,AlexAccPred 314 ( keepComments .&&. (followedBy '\n' .||. eof) )(AlexAccSkipPred ( followedBy '\n' .||. eof )(AlexAccNone)),AlexAccPred 313 ( keepComments .&&. (followedBy '\n' .||. eof) )(AlexAccSkipPred ( followedBy '\n' .||. eof )(AlexAccNone)),AlexAccPred 312 ( keepComments .&&. (followedBy '\n' .||. eof) )(AlexAccSkipPred ( followedBy '\n' .||. eof )(AlexAccNone)),AlexAccPred 311 ( keepComments .&&. (followedBy '\n' .||. eof) )(AlexAccSkipPred ( followedBy '\n' .||. eof )(AlexAccNone)),AlexAccPred 310 ( keepComments .&&. (followedBy '\n' .||. eof) )(AlexAccSkipPred ( followedBy '\n' .||. eof )(AlexAccNone)),AlexAccPred 309 ( keepComments .&&. (followedBy '\n' .||. eof) )(AlexAccSkipPred ( followedBy '\n' .||. eof )(AlexAccNone)),AlexAccPred 308 ( keepComments .&&. (followedBy '\n' .||. eof) )(AlexAccSkipPred ( followedBy '\n' .||. eof )(AlexAcc 307)),AlexAccPred 306 ( keepComments .&&. (followedBy '\n' .||. eof) )(AlexAccSkipPred ( followedBy '\n' .||. eof )(AlexAcc 305)),AlexAccPred 304 ( keepComments .&&. (followedBy '\n' .||. eof) )(AlexAccSkipPred ( followedBy '\n' .||. eof )(AlexAcc 303)),AlexAcc 302,AlexAccSkip,AlexAccSkip,AlexAcc 301,AlexAcc 300,AlexAcc 299,AlexAcc 298,AlexAcc 297,AlexAcc 296,AlexAcc 295,AlexAcc 294,AlexAcc 293,AlexAcc 292,AlexAcc 291,AlexAcc 290,AlexAcc 289,AlexAcc 288,AlexAcc 287,AlexAcc 286,AlexAcc 285,AlexAcc 284,AlexAcc 283,AlexAcc 282,AlexAcc 281,AlexAcc 280,AlexAcc 279,AlexAcc 278,AlexAcc 277,AlexAcc 276,AlexAcc 275,AlexAcc 274,AlexAcc 273,AlexAcc 272,AlexAcc 271,AlexAcc 270,AlexAcc 269,AlexAcc 268,AlexAcc 267,AlexAcc 266,AlexAcc 265,AlexAcc 264,AlexAcc 263,AlexAcc 262,AlexAcc 261,AlexAcc 260,AlexAcc 259,AlexAcc 258,AlexAcc 257,AlexAcc 256,AlexAcc 255,AlexAcc 254,AlexAcc 253,AlexAcc 252,AlexAcc 251,AlexAcc 250,AlexAcc 249,AlexAcc 248,AlexAcc 247,AlexAcc 246,AlexAcc 245,AlexAcc 244,AlexAccPred 243 (alexRightContext 7)(AlexAccNone),AlexAcc 242,AlexAcc 241,AlexAcc 240,AlexAcc 239,AlexAcc 238,AlexAcc 237,AlexAccPred 236 (alexRightContext 45)(AlexAccNone),AlexAcc 235,AlexAcc 234,AlexAcc 233,AlexAcc 232,AlexAcc 231,AlexAcc 230,AlexAcc 229,AlexAcc 228,AlexAcc 227,AlexAcc 226,AlexAcc 225,AlexAcc 224,AlexAcc 223,AlexAcc 222,AlexAcc 221,AlexAcc 220,AlexAcc 219,AlexAcc 218,AlexAcc 217,AlexAcc 216,AlexAcc 215,AlexAcc 214,AlexAcc 213,AlexAcc 212,AlexAcc 211,AlexAcc 210,AlexAcc 209,AlexAcc 208,AlexAcc 207,AlexAcc 206,AlexAcc 205,AlexAcc 204,AlexAcc 203,AlexAcc 202,AlexAcc 201,AlexAcc 200,AlexAcc 199,AlexAcc 198,AlexAcc 197,AlexAcc 196,AlexAcc 195,AlexAcc 194,AlexAcc 193,AlexAcc 192,AlexAcc 191,AlexAcc 190,AlexAcc 189,AlexAcc 188,AlexAcc 187,AlexAcc 186,AlexAcc 185,AlexAcc 184,AlexAcc 183,AlexAcc 182,AlexAcc 181,AlexAcc 180,AlexAcc 179,AlexAcc 178,AlexAcc 177,AlexAcc 176,AlexAcc 175,AlexAcc 174,AlexAcc 173,AlexAcc 172,AlexAcc 171,AlexAcc 170,AlexAcc 169,AlexAcc 168,AlexAcc 167,AlexAcc 166,AlexAcc 165,AlexAcc 164,AlexAcc 163,AlexAcc 162,AlexAcc 161,AlexAcc 160,AlexAcc 159,AlexAcc 158,AlexAcc 157,AlexAcc 156,AlexAcc 155,AlexAcc 154,AlexAcc 153,AlexAcc 152,AlexAcc 151,AlexAcc 150,AlexAcc 149,AlexAcc 148,AlexAcc 147,AlexAcc 146,AlexAcc 145,AlexAcc 144,AlexAcc 143,AlexAcc 142,AlexAcc 141,AlexAcc 140,AlexAcc 139,AlexAcc 138,AlexAcc 137,AlexAcc 136,AlexAcc 135,AlexAcc 134,AlexAcc 133,AlexAcc 132,AlexAcc 131,AlexAcc 130,AlexAcc 129,AlexAcc 128,AlexAcc 127,AlexAcc 126,AlexAcc 125,AlexAcc 124,AlexAcc 123,AlexAcc 122,AlexAcc 121,AlexAcc 120,AlexAcc 119,AlexAcc 118,AlexAcc 117,AlexAcc 116,AlexAcc 115,AlexAcc 114,AlexAcc 113,AlexAcc 112,AlexAcc 111,AlexAcc 110,AlexAcc 109,AlexAcc 108,AlexAcc 107,AlexAcc 106,AlexAcc 105,AlexAcc 104,AlexAcc 103,AlexAcc 102,AlexAcc 101,AlexAcc 100,AlexAcc 99,AlexAcc 98,AlexAcc 97,AlexAcc 96,AlexAcc 95,AlexAcc 94,AlexAcc 93,AlexAcc 92,AlexAcc 91,AlexAcc 90,AlexAcc 89,AlexAcc 88,AlexAcc 87,AlexAcc 86,AlexAcc 85,AlexAcc 84,AlexAcc 83,AlexAcc 82,AlexAcc 81,AlexAcc 80,AlexAcc 79,AlexAcc 78,AlexAcc 77,AlexAcc 76,AlexAcc 75,AlexAcc 74,AlexAcc 73,AlexAcc 72,AlexAcc 71,AlexAcc 70,AlexAcc 69,AlexAcc 68,AlexAcc 67,AlexAcc 66,AlexAcc 65,AlexAcc 64,AlexAcc 63,AlexAcc 62,AlexAcc 61,AlexAcc 60,AlexAcc 59,AlexAcc 58,AlexAcc 57,AlexAcc 56,AlexAcc 55,AlexAcc 54,AlexAcc 53,AlexAcc 52,AlexAcc 51,AlexAcc 50,AlexAcc 49,AlexAcc 48,AlexAcc 47,AlexAcc 46,AlexAcc 45,AlexAcc 44,AlexAcc 43,AlexAcc 42,AlexAcc 41,AlexAcc 40,AlexAcc 39,AlexAcc 38,AlexAcc 37,AlexAcc 36,AlexAcc 35,AlexAcc 34,AlexAcc 33,AlexAcc 32,AlexAcc 31,AlexAcc 30,AlexAcc 29,AlexAcc 28,AlexAcc 27,AlexAcc 26,AlexAcc 25,AlexAcc 24,AlexAcc 23,AlexAcc 22,AlexAcc 21,AlexAcc 20,AlexAcc 19,AlexAcc 18,AlexAcc 17,AlexAcc 16,AlexAcc 15,AlexAcc 14,AlexAcc 13,AlexAcc 12,AlexAcc 11,AlexAcc 10,AlexAcc 9,AlexAcc 8,AlexAcc 7,AlexAcc 6,AlexAcc 5,AlexAcc 4,AlexAcc 3,AlexAcc 2,AlexAcc 1,AlexAcc 0]
 
+alex_actions = array (0::Int,525) [(524,alex_action_40),(523,alex_action_43),(522,alex_action_42),(521,alex_action_2),(520,alex_action_3),(519,alex_action_4),(518,alex_action_5),(517,alex_action_6),(516,alex_action_7),(515,alex_action_8),(514,alex_action_9),(513,alex_action_10),(512,alex_action_11),(511,alex_action_12),(510,alex_action_13),(509,alex_action_14),(508,alex_action_15),(507,alex_action_16),(506,alex_action_17),(505,alex_action_18),(504,alex_action_19),(503,alex_action_20),(502,alex_action_21),(501,alex_action_22),(500,alex_action_23),(499,alex_action_24),(498,alex_action_25),(497,alex_action_26),(496,alex_action_27),(495,alex_action_28),(494,alex_action_29),(493,alex_action_30),(492,alex_action_31),(491,alex_action_32),(490,alex_action_32),(489,alex_action_32),(488,alex_action_32),(487,alex_action_32),(486,alex_action_32),(485,alex_action_32),(484,alex_action_32),(483,alex_action_32),(482,alex_action_32),(481,alex_action_32),(480,alex_action_32),(479,alex_action_32),(478,alex_action_32),(477,alex_action_32),(476,alex_action_32),(475,alex_action_32),(474,alex_action_32),(473,alex_action_32),(472,alex_action_32),(471,alex_action_32),(470,alex_action_32),(469,alex_action_32),(468,alex_action_32),(467,alex_action_32),(466,alex_action_32),(465,alex_action_32),(464,alex_action_32),(463,alex_action_32),(462,alex_action_32),(461,alex_action_32),(460,alex_action_32),(459,alex_action_32),(458,alex_action_32),(457,alex_action_32),(456,alex_action_32),(455,alex_action_32),(454,alex_action_32),(453,alex_action_32),(452,alex_action_32),(451,alex_action_32),(450,alex_action_32),(449,alex_action_32),(448,alex_action_32),(447,alex_action_32),(446,alex_action_32),(445,alex_action_32),(444,alex_action_32),(443,alex_action_32),(442,alex_action_32),(441,alex_action_32),(440,alex_action_32),(439,alex_action_32),(438,alex_action_32),(437,alex_action_32),(436,alex_action_32),(435,alex_action_32),(434,alex_action_32),(433,alex_action_32),(432,alex_action_32),(431,alex_action_32),(430,alex_action_32),(429,alex_action_32),(428,alex_action_32),(427,alex_action_32),(426,alex_action_32),(425,alex_action_32),(424,alex_action_32),(423,alex_action_32),(422,alex_action_32),(421,alex_action_32),(420,alex_action_32),(419,alex_action_32),(418,alex_action_32),(417,alex_action_32),(416,alex_action_32),(415,alex_action_32),(414,alex_action_32),(413,alex_action_32),(412,alex_action_32),(411,alex_action_32),(410,alex_action_32),(409,alex_action_32),(408,alex_action_32),(407,alex_action_32),(406,alex_action_32),(405,alex_action_32),(404,alex_action_32),(403,alex_action_32),(402,alex_action_32),(401,alex_action_32),(400,alex_action_32),(399,alex_action_32),(398,alex_action_32),(397,alex_action_32),(396,alex_action_32),(395,alex_action_32),(394,alex_action_32),(393,alex_action_32),(392,alex_action_32),(391,alex_action_32),(390,alex_action_32),(389,alex_action_32),(388,alex_action_32),(387,alex_action_32),(386,alex_action_32),(385,alex_action_32),(384,alex_action_32),(383,alex_action_32),(382,alex_action_32),(381,alex_action_32),(380,alex_action_32),(379,alex_action_32),(378,alex_action_32),(377,alex_action_32),(376,alex_action_32),(375,alex_action_32),(374,alex_action_32),(373,alex_action_32),(372,alex_action_32),(371,alex_action_32),(370,alex_action_32),(369,alex_action_32),(368,alex_action_32),(367,alex_action_32),(366,alex_action_32),(365,alex_action_32),(364,alex_action_32),(363,alex_action_32),(362,alex_action_32),(361,alex_action_32),(360,alex_action_32),(359,alex_action_32),(358,alex_action_32),(357,alex_action_32),(356,alex_action_32),(355,alex_action_32),(354,alex_action_32),(353,alex_action_32),(352,alex_action_32),(351,alex_action_32),(350,alex_action_32),(349,alex_action_32),(348,alex_action_32),(347,alex_action_32),(346,alex_action_32),(345,alex_action_32),(344,alex_action_32),(343,alex_action_32),(342,alex_action_32),(341,alex_action_32),(340,alex_action_32),(339,alex_action_32),(338,alex_action_32),(337,alex_action_32),(336,alex_action_32),(335,alex_action_32),(334,alex_action_32),(333,alex_action_32),(332,alex_action_32),(331,alex_action_32),(330,alex_action_32),(329,alex_action_32),(328,alex_action_32),(327,alex_action_32),(326,alex_action_32),(325,alex_action_32),(324,alex_action_32),(323,alex_action_32),(322,alex_action_32),(321,alex_action_32),(320,alex_action_32),(319,alex_action_33),(318,alex_action_33),(317,alex_action_34),(316,alex_action_35),(315,alex_action_35),(314,alex_action_36),(313,alex_action_36),(312,alex_action_36),(311,alex_action_36),(310,alex_action_36),(309,alex_action_36),(308,alex_action_36),(307,alex_action_114),(306,alex_action_36),(305,alex_action_114),(304,alex_action_36),(303,alex_action_114),(302,alex_action_38),(301,alex_action_44),(300,alex_action_45),(299,alex_action_46),(298,alex_action_47),(297,alex_action_48),(296,alex_action_49),(295,alex_action_50),(294,alex_action_51),(293,alex_action_52),(292,alex_action_53),(291,alex_action_54),(290,alex_action_55),(289,alex_action_56),(288,alex_action_57),(287,alex_action_58),(286,alex_action_59),(285,alex_action_60),(284,alex_action_61),(283,alex_action_62),(282,alex_action_63),(281,alex_action_64),(280,alex_action_65),(279,alex_action_66),(278,alex_action_67),(277,alex_action_68),(276,alex_action_69),(275,alex_action_70),(274,alex_action_71),(273,alex_action_72),(272,alex_action_73),(271,alex_action_74),(270,alex_action_74),(269,alex_action_74),(268,alex_action_75),(267,alex_action_76),(266,alex_action_77),(265,alex_action_78),(264,alex_action_79),(263,alex_action_80),(262,alex_action_81),(261,alex_action_82),(260,alex_action_83),(259,alex_action_84),(258,alex_action_85),(257,alex_action_86),(256,alex_action_87),(255,alex_action_88),(254,alex_action_89),(253,alex_action_90),(252,alex_action_91),(251,alex_action_92),(250,alex_action_93),(249,alex_action_94),(248,alex_action_95),(247,alex_action_96),(246,alex_action_97),(245,alex_action_98),(244,alex_action_99),(243,alex_action_100),(242,alex_action_101),(241,alex_action_102),(240,alex_action_103),(239,alex_action_104),(238,alex_action_105),(237,alex_action_106),(236,alex_action_107),(235,alex_action_108),(234,alex_action_109),(233,alex_action_110),(232,alex_action_111),(231,alex_action_112),(230,alex_action_112),(229,alex_action_112),(228,alex_action_112),(227,alex_action_112),(226,alex_action_112),(225,alex_action_112),(224,alex_action_112),(223,alex_action_113),(222,alex_action_113),(221,alex_action_113),(220,alex_action_113),(219,alex_action_113),(218,alex_action_113),(217,alex_action_113),(216,alex_action_113),(215,alex_action_113),(214,alex_action_113),(213,alex_action_113),(212,alex_action_114),(211,alex_action_114),(210,alex_action_114),(209,alex_action_114),(208,alex_action_114),(207,alex_action_114),(206,alex_action_114),(205,alex_action_114),(204,alex_action_114),(203,alex_action_114),(202,alex_action_114),(201,alex_action_114),(200,alex_action_114),(199,alex_action_114),(198,alex_action_114),(197,alex_action_114),(196,alex_action_114),(195,alex_action_114),(194,alex_action_114),(193,alex_action_114),(192,alex_action_114),(191,alex_action_114),(190,alex_action_114),(189,alex_action_114),(188,alex_action_114),(187,alex_action_114),(186,alex_action_114),(185,alex_action_114),(184,alex_action_114),(183,alex_action_114),(182,alex_action_114),(181,alex_action_114),(180,alex_action_114),(179,alex_action_114),(178,alex_action_114),(177,alex_action_114),(176,alex_action_114),(175,alex_action_114),(174,alex_action_114),(173,alex_action_114),(172,alex_action_114),(171,alex_action_114),(170,alex_action_114),(169,alex_action_114),(168,alex_action_114),(167,alex_action_114),(166,alex_action_114),(165,alex_action_114),(164,alex_action_114),(163,alex_action_114),(162,alex_action_114),(161,alex_action_114),(160,alex_action_114),(159,alex_action_114),(158,alex_action_114),(157,alex_action_114),(156,alex_action_114),(155,alex_action_114),(154,alex_action_114),(153,alex_action_114),(152,alex_action_114),(151,alex_action_114),(150,alex_action_114),(149,alex_action_114),(148,alex_action_114),(147,alex_action_114),(146,alex_action_114),(145,alex_action_114),(144,alex_action_114),(143,alex_action_114),(142,alex_action_114),(141,alex_action_114),(140,alex_action_114),(139,alex_action_114),(138,alex_action_114),(137,alex_action_114),(136,alex_action_114),(135,alex_action_114),(134,alex_action_114),(133,alex_action_114),(132,alex_action_114),(131,alex_action_114),(130,alex_action_114),(129,alex_action_114),(128,alex_action_114),(127,alex_action_114),(126,alex_action_114),(125,alex_action_114),(124,alex_action_114),(123,alex_action_114),(122,alex_action_114),(121,alex_action_114),(120,alex_action_114),(119,alex_action_114),(118,alex_action_114),(117,alex_action_114),(116,alex_action_114),(115,alex_action_114),(114,alex_action_114),(113,alex_action_114),(112,alex_action_114),(111,alex_action_114),(110,alex_action_114),(109,alex_action_114),(108,alex_action_114),(107,alex_action_114),(106,alex_action_114),(105,alex_action_114),(104,alex_action_114),(103,alex_action_114),(102,alex_action_114),(101,alex_action_114),(100,alex_action_114),(99,alex_action_114),(98,alex_action_114),(97,alex_action_114),(96,alex_action_114),(95,alex_action_114),(94,alex_action_114),(93,alex_action_114),(92,alex_action_114),(91,alex_action_114),(90,alex_action_114),(89,alex_action_114),(88,alex_action_114),(87,alex_action_114),(86,alex_action_114),(85,alex_action_114),(84,alex_action_114),(83,alex_action_114),(82,alex_action_114),(81,alex_action_114),(80,alex_action_114),(79,alex_action_114),(78,alex_action_114),(77,alex_action_114),(76,alex_action_114),(75,alex_action_114),(74,alex_action_114),(73,alex_action_114),(72,alex_action_114),(71,alex_action_114),(70,alex_action_114),(69,alex_action_114),(68,alex_action_114),(67,alex_action_114),(66,alex_action_114),(65,alex_action_114),(64,alex_action_114),(63,alex_action_114),(62,alex_action_114),(61,alex_action_114),(60,alex_action_114),(59,alex_action_114),(58,alex_action_114),(57,alex_action_114),(56,alex_action_114),(55,alex_action_114),(54,alex_action_114),(53,alex_action_114),(52,alex_action_114),(51,alex_action_114),(50,alex_action_114),(49,alex_action_114),(48,alex_action_114),(47,alex_action_114),(46,alex_action_114),(45,alex_action_114),(44,alex_action_114),(43,alex_action_114),(42,alex_action_114),(41,alex_action_114),(40,alex_action_114),(39,alex_action_114),(38,alex_action_114),(37,alex_action_114),(36,alex_action_114),(35,alex_action_114),(34,alex_action_114),(33,alex_action_114),(32,alex_action_114),(31,alex_action_114),(30,alex_action_114),(29,alex_action_114),(28,alex_action_114),(27,alex_action_114),(26,alex_action_114),(25,alex_action_114),(24,alex_action_114),(23,alex_action_114),(22,alex_action_114),(21,alex_action_114),(20,alex_action_114),(19,alex_action_114),(18,alex_action_114),(17,alex_action_114),(16,alex_action_114),(15,alex_action_114),(14,alex_action_114),(13,alex_action_114),(12,alex_action_114),(11,alex_action_114),(10,alex_action_114),(9,alex_action_114),(8,alex_action_114),(7,alex_action_114),(6,alex_action_114),(5,alex_action_114),(4,alex_action_114),(3,alex_action_114),(2,alex_action_114),(1,alex_action_114),(0,alex_action_114)]
 
--- | This is the initial state for parsing a literate file. Code blocks
---   should be enclosed in @\\begin{code}@ @\\end{code}@ pairs.
-literate :: LexState
-literate = tex
+{-# LINE 242 "src/full/Agda/Syntax/Parser/Lexer.x" #-}
 
 
 -- | This is the initial state for parsing a regular, non-literate file.
@@ -144,462 +141,129 @@
 
 
 
-bol_,code,empty_layout_,imp_dir_,layout_,pragma_,tex :: Int
+bol_,code,empty_layout_,imp_dir_,layout_,pragma_ :: Int
 bol_ = 1
 code = 2
 empty_layout_ = 3
 imp_dir_ = 4
 layout_ = 5
 pragma_ = 6
-tex = 7
-alex_action_0 =  end_ 
-alex_action_1 =  withInterval TokTeX 
-alex_action_4 =  end_ 
-alex_action_5 =  begin_ tex 
-alex_action_8 =  begin pragma 
-alex_action_9 =  symbol SymOpenPragma 
-alex_action_10 =  endWith $ symbol SymClosePragma 
-alex_action_11 =  keyword KwBUILTIN 
-alex_action_12 =  keyword KwCATCHALL 
-alex_action_13 =  keyword KwCOMPILED 
-alex_action_14 =  keyword KwCOMPILED_DATA 
-alex_action_15 =  keyword KwCOMPILED_DATA_UHC 
-alex_action_16 =  keyword KwCOMPILED_DECLARE_DATA 
-alex_action_17 =  keyword KwCOMPILED_EPIC 
-alex_action_18 =  keyword KwCOMPILED_EXPORT 
-alex_action_19 =  keyword KwCOMPILED_JS 
-alex_action_20 =  keyword KwCOMPILED_TYPE 
-alex_action_21 =  keyword KwCOMPILED_UHC 
-alex_action_22 =  keyword KwHASKELL 
-alex_action_23 =  keyword KwDISPLAY 
-alex_action_24 =  keyword KwIMPORT 
-alex_action_25 =  keyword KwIMPORT_UHC 
-alex_action_26 =  keyword KwIMPOSSIBLE 
-alex_action_27 =  keyword KwINLINE 
-alex_action_28 =  keyword KwLINE 
-alex_action_29 =  keyword KwMEASURE 
-alex_action_30 =  keyword KwNO_POSITIVITY_CHECK 
-alex_action_31 =  keyword KwNO_SMASHING 
-alex_action_32 =  keyword KwNO_TERMINATION_CHECK 
-alex_action_33 =  keyword KwNON_TERMINATING 
-alex_action_34 =  keyword KwOPTIONS 
-alex_action_35 =  keyword KwREWRITE 
-alex_action_36 =  keyword KwSTATIC 
-alex_action_37 =  keyword KwTERMINATING 
-alex_action_38 =  withInterval $ TokString 
-alex_action_39 =  nestedComment 
-alex_action_40 =  symbol SymEndComment 
-alex_action_41 =  symbol SymEndComment 
-alex_action_42 =  withInterval TokComment 
-alex_action_44 =  begin bol_ 
-alex_action_46 =  offsideRule 
-alex_action_48 =  endWith newLayoutContext 
-alex_action_49 =  emptyLayout 
-alex_action_50 =  keyword KwLet 
-alex_action_51 =  keyword KwIn 
-alex_action_52 =  keyword KwWhere 
-alex_action_53 =  keyword KwField 
-alex_action_54 =  keyword KwWith 
-alex_action_55 =  keyword KwRewrite 
-alex_action_56 =  keyword KwPostulate 
-alex_action_57 =  keyword KwPrimitive 
-alex_action_58 =  keyword KwOpen 
-alex_action_59 =  keyword KwImport 
-alex_action_60 =  keyword KwModule 
-alex_action_61 =  keyword KwData 
-alex_action_62 =  keyword KwCoData 
-alex_action_63 =  keyword KwRecord 
-alex_action_64 =  keyword KwConstructor 
-alex_action_65 =  keyword KwInductive 
-alex_action_66 =  keyword KwCoInductive 
-alex_action_67 =  keyword KwEta 
-alex_action_68 =  keyword KwNoEta 
-alex_action_69 =  keyword KwInfix 
-alex_action_70 =  keyword KwInfixL 
-alex_action_71 =  keyword KwInfixR 
-alex_action_72 =  keyword KwMutual 
-alex_action_73 =  keyword KwAbstract 
-alex_action_74 =  keyword KwPrivate 
-alex_action_75 =  keyword KwInstance 
-alex_action_76 =  keyword KwMacro 
-alex_action_77 =  keyword KwSet 
-alex_action_78 =  keyword KwForall 
-alex_action_79 =  withInterval' (read . drop 3) TokSetN 
-alex_action_80 =  keyword KwQuoteGoal 
-alex_action_81 =  keyword KwQuoteContext 
-alex_action_82 =  keyword KwQuote 
-alex_action_83 =  keyword KwQuoteTerm 
-alex_action_84 =  keyword KwUnquote 
-alex_action_85 =  keyword KwUnquoteDecl 
-alex_action_86 =  keyword KwUnquoteDef  
-alex_action_87 =  keyword KwTactic 
-alex_action_88 =  keyword KwSyntax 
-alex_action_89 =  keyword KwPatternSyn 
-alex_action_90 =  keyword KwUsing 
-alex_action_91 =  keyword KwHiding 
-alex_action_92 =  keyword KwRenaming 
-alex_action_93 =  endWith $ keyword KwTo 
-alex_action_94 =  keyword KwPublic 
-alex_action_95 =  hole 
-alex_action_96 =  symbol SymEllipsis 
-alex_action_97 =  symbol SymDotDot 
-alex_action_98 =  symbol SymDot 
-alex_action_99 =  symbol SymSemi 
-alex_action_100 =  symbol SymColon 
-alex_action_101 =  symbol SymEqual 
-alex_action_102 =  symbol SymUnderscore 
-alex_action_103 =  symbol SymQuestionMark 
-alex_action_104 =  symbol SymBar 
-alex_action_105 =  symbol SymOpenParen 
-alex_action_106 =  symbol SymCloseParen 
-alex_action_107 =  symbol SymArrow 
-alex_action_108 =  symbol SymLambda 
-alex_action_109 =  symbol SymAs 
-alex_action_110 =  symbol SymDoubleOpenBrace 
-alex_action_111 =  symbol SymOpenBrace 
-alex_action_112 =  symbol SymCloseBrace 
-alex_action_113 =  litChar 
-alex_action_114 =  litString 
-alex_action_115 =  literal LitNat 
-alex_action_116 =  literal LitFloat 
-alex_action_117 =  identifier 
+alex_action_2 =  begin pragma 
+alex_action_3 =  symbol SymOpenPragma 
+alex_action_4 =  endWith $ symbol SymClosePragma 
+alex_action_5 =  keyword KwBUILTIN 
+alex_action_6 =  keyword KwCATCHALL 
+alex_action_7 =  keyword KwCOMPILED 
+alex_action_8 =  keyword KwCOMPILED_DATA 
+alex_action_9 =  keyword KwCOMPILED_DATA_UHC 
+alex_action_10 =  keyword KwCOMPILED_DECLARE_DATA 
+alex_action_11 =  keyword KwCOMPILED_EPIC 
+alex_action_12 =  keyword KwCOMPILED_EXPORT 
+alex_action_13 =  keyword KwCOMPILED_JS 
+alex_action_14 =  keyword KwCOMPILED_TYPE 
+alex_action_15 =  keyword KwCOMPILED_UHC 
+alex_action_16 =  keyword KwHASKELL 
+alex_action_17 =  keyword KwDISPLAY 
+alex_action_18 =  keyword KwIMPORT 
+alex_action_19 =  keyword KwIMPORT_UHC 
+alex_action_20 =  keyword KwIMPOSSIBLE 
+alex_action_21 =  keyword KwINLINE 
+alex_action_22 =  keyword KwLINE 
+alex_action_23 =  keyword KwMEASURE 
+alex_action_24 =  keyword KwNO_POSITIVITY_CHECK 
+alex_action_25 =  keyword KwNO_TERMINATION_CHECK 
+alex_action_26 =  keyword KwNON_TERMINATING 
+alex_action_27 =  keyword KwOPTIONS 
+alex_action_28 =  keyword KwPOLARITY 
+alex_action_29 =  keyword KwREWRITE 
+alex_action_30 =  keyword KwSTATIC 
+alex_action_31 =  keyword KwTERMINATING 
+alex_action_32 =  withInterval $ TokString 
+alex_action_33 =  nestedComment 
+alex_action_34 =  symbol SymEndComment 
+alex_action_35 =  symbol SymEndComment 
+alex_action_36 =  withInterval TokComment 
+alex_action_38 =  begin bol_ 
+alex_action_40 =  offsideRule 
+alex_action_42 =  endWith newLayoutContext 
+alex_action_43 =  emptyLayout 
+alex_action_44 =  keyword KwLet 
+alex_action_45 =  keyword KwIn 
+alex_action_46 =  keyword KwWhere 
+alex_action_47 =  keyword KwField 
+alex_action_48 =  keyword KwWith 
+alex_action_49 =  keyword KwRewrite 
+alex_action_50 =  keyword KwPostulate 
+alex_action_51 =  keyword KwPrimitive 
+alex_action_52 =  keyword KwOpen 
+alex_action_53 =  keyword KwImport 
+alex_action_54 =  keyword KwModule 
+alex_action_55 =  keyword KwData 
+alex_action_56 =  keyword KwCoData 
+alex_action_57 =  keyword KwRecord 
+alex_action_58 =  keyword KwConstructor 
+alex_action_59 =  keyword KwInductive 
+alex_action_60 =  keyword KwCoInductive 
+alex_action_61 =  keyword KwEta 
+alex_action_62 =  keyword KwNoEta 
+alex_action_63 =  keyword KwInfix 
+alex_action_64 =  keyword KwInfixL 
+alex_action_65 =  keyword KwInfixR 
+alex_action_66 =  keyword KwMutual 
+alex_action_67 =  keyword KwAbstract 
+alex_action_68 =  keyword KwPrivate 
+alex_action_69 =  keyword KwInstance 
+alex_action_70 =  keyword KwOverlap 
+alex_action_71 =  keyword KwMacro 
+alex_action_72 =  keyword KwSet 
+alex_action_73 =  keyword KwForall 
+alex_action_74 =  withInterval' (read . drop 3) TokSetN 
+alex_action_75 =  keyword KwQuoteGoal 
+alex_action_76 =  keyword KwQuoteContext 
+alex_action_77 =  keyword KwQuote 
+alex_action_78 =  keyword KwQuoteTerm 
+alex_action_79 =  keyword KwUnquote 
+alex_action_80 =  keyword KwUnquoteDecl 
+alex_action_81 =  keyword KwUnquoteDef  
+alex_action_82 =  keyword KwTactic 
+alex_action_83 =  keyword KwSyntax 
+alex_action_84 =  keyword KwPatternSyn 
+alex_action_85 =  keyword KwUsing 
+alex_action_86 =  keyword KwHiding 
+alex_action_87 =  keyword KwRenaming 
+alex_action_88 =  endWith $ keyword KwTo 
+alex_action_89 =  keyword KwPublic 
+alex_action_90 =  hole 
+alex_action_91 =  symbol SymEllipsis 
+alex_action_92 =  symbol SymDotDot 
+alex_action_93 =  symbol SymDot 
+alex_action_94 =  symbol SymSemi 
+alex_action_95 =  symbol SymColon 
+alex_action_96 =  symbol SymEqual 
+alex_action_97 =  symbol SymUnderscore 
+alex_action_98 =  symbol SymQuestionMark 
+alex_action_99 =  symbol SymBar 
+alex_action_100 =  symbol SymOpenIdiomBracket 
+alex_action_101 =  symbol SymCloseIdiomBracket 
+alex_action_102 =  symbol SymOpenParen 
+alex_action_103 =  symbol SymCloseParen 
+alex_action_104 =  symbol SymArrow 
+alex_action_105 =  symbol SymLambda 
+alex_action_106 =  symbol SymAs 
+alex_action_107 =  symbol SymDoubleOpenBrace 
+alex_action_108 =  symbol SymOpenBrace 
+alex_action_109 =  symbol SymCloseBrace 
+alex_action_110 =  litChar 
+alex_action_111 =  litString 
+alex_action_112 =  literal LitNat 
+alex_action_113 =  literal LitFloat 
+alex_action_114 =  identifier 
 {-# LINE 1 "templates/GenericTemplate.hs" #-}
 {-# LINE 1 "templates/GenericTemplate.hs" #-}
 {-# LINE 1 "<built-in>" #-}
 {-# LINE 1 "<command-line>" #-}
-{-# LINE 12 "<command-line>" #-}
-{-# LINE 1 "/usr/local/Cellar/ghc/8.0.1/lib/ghc-8.0.1/include/ghcversion.h" #-}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-{-# LINE 12 "<command-line>" #-}
-{-# LINE 1 "/var/folders/vh/5xdrm2c941q4v68c8rr_9c5m0000gn/T/ghc93933_0/ghc_2.h" #-}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+{-# LINE 9 "<command-line>" #-}
+{-# LINE 1 "/usr/local/stow/ghc-8.0.2-rc2/lib/ghc-8.0.1.20161213/include/ghcversion.h" #-}
 
 
 
@@ -618,6 +282,8 @@
 
 
 
+{-# LINE 9 "<command-line>" #-}
+{-# LINE 1 "/tmp/ghc18762_0/ghc_2.h" #-}
 
 
 
@@ -1200,7 +866,7 @@
 
 
 
-{-# LINE 12 "<command-line>" #-}
+{-# LINE 9 "<command-line>" #-}
 {-# LINE 1 "templates/GenericTemplate.hs" #-}
 -- -----------------------------------------------------------------------------
 -- ALEX TEMPLATE
@@ -1252,7 +918,7 @@
 
 
 {-# INLINE alexIndexInt32OffAddr #-}
-alexIndexInt32OffAddr (AlexA# arr) off = 
+alexIndexInt32OffAddr (AlexA# arr) off =
 #ifdef WORDS_BIGENDIAN
   narrow32Int# i
   where
@@ -1298,30 +964,30 @@
 
 alexScanUser user input (I# (sc))
   = case alex_scan_tkn user input 0# input sc AlexNone of
-        (AlexNone, input') ->
-                case alexGetByte input of
-                        Nothing -> 
+  (AlexNone, input') ->
+    case alexGetByte input of
+      Nothing ->
 
 
 
                                    AlexEOF
-                        Just _ ->
+      Just _ ->
 
 
 
                                    AlexError input'
 
-        (AlexLastSkip input'' len, _) ->
+  (AlexLastSkip input'' len, _) ->
 
 
 
-                AlexSkip input'' len
+    AlexSkip input'' len
 
-        (AlexLastAcc k input''' len, _) ->
+  (AlexLastAcc k input''' len, _) ->
 
 
 
-                AlexToken input''' len k
+    AlexToken input''' len (alex_actions ! k)
 
 
 -- Push the input through the DFA, remembering the most recent accepting
@@ -1329,13 +995,13 @@
 
 alex_scan_tkn user orig_input len input s last_acc =
   input `seq` -- strict in the input
-  let 
-        new_acc = (check_accs (alex_accept `quickIndex` (I# (s))))
+  let
+  new_acc = (check_accs (alex_accept `quickIndex` (I# (s))))
   in
   new_acc `seq`
   case alexGetByte input of
      Nothing -> (new_acc, input)
-     Just (c, new_input) -> 
+     Just (c, new_input) ->
 
 
 
@@ -1344,7 +1010,7 @@
                 base   = alexIndexInt32OffAddr alex_base s
                 offset = (base +# ord_c)
                 check  = alexIndexInt16OffAddr alex_check offset
-                
+
                 new_s = if GTE(offset,0#) && EQ(check,ord_c)
                           then alexIndexInt16OffAddr alex_table offset
                           else alexIndexInt16OffAddr alex_deflt s
@@ -1374,23 +1040,18 @@
            = check_accs rest
 
 
-data AlexLastAcc a
+data AlexLastAcc
   = AlexNone
-  | AlexLastAcc a !AlexInput !Int
-  | AlexLastSkip  !AlexInput !Int
-
-instance Functor AlexLastAcc where
-    fmap _ AlexNone = AlexNone
-    fmap f (AlexLastAcc x y z) = AlexLastAcc (f x) y z
-    fmap _ (AlexLastSkip x y) = AlexLastSkip x y
+  | AlexLastAcc !Int !AlexInput !Int
+  | AlexLastSkip     !AlexInput !Int
 
-data AlexAcc a user
+data AlexAcc user
   = AlexAccNone
-  | AlexAcc a
+  | AlexAcc Int
   | AlexAccSkip
 
-  | AlexAccPred a   (AlexAccPred user) (AlexAcc a user)
-  | AlexAccSkipPred (AlexAccPred user) (AlexAcc a user)
+  | AlexAccPred Int (AlexAccPred user) (AlexAcc user)
+  | AlexAccSkipPred (AlexAccPred user) (AlexAcc user)
 
 type AlexAccPred user = user -> AlexInput -> Int -> AlexInput -> Bool
 
@@ -1400,16 +1061,16 @@
 alexAndPred p1 p2 user in1 len in2
   = p1 user in1 len in2 && p2 user in1 len in2
 
---alexPrevCharIsPred :: Char -> AlexAccPred _ 
+--alexPrevCharIsPred :: Char -> AlexAccPred _
 alexPrevCharIs c _ input _ _ = c == alexInputPrevChar input
 
 alexPrevCharMatches f _ input _ _ = f (alexInputPrevChar input)
 
---alexPrevCharIsOneOfPred :: Array Char Bool -> AlexAccPred _ 
+--alexPrevCharIsOneOfPred :: Array Char Bool -> AlexAccPred _
 alexPrevCharIsOneOf arr _ input _ _ = arr ! alexInputPrevChar input
 
 --alexRightContext :: Int -> AlexAccPred _
-alexRightContext (I# (sc)) user _ _ input = 
+alexRightContext (I# (sc)) user _ _ input =
      case alex_scan_tkn user input 0# input sc AlexNone of
           (AlexNone, _) -> False
           _ -> True
diff --git a/dist/build/Agda/Syntax/Parser/Parser.hs b/dist/build/Agda/Syntax/Parser/Parser.hs
--- a/dist/build/Agda/Syntax/Parser/Parser.hs
+++ b/dist/build/Agda/Syntax/Parser/Parser.hs
@@ -21,6307 +21,7051 @@
     , exprParser
     , exprWhereParser
     , tokensParser
-    , tests
-    ) where
-
-import Control.Monad
-
-import Data.Char
-import Data.Functor
-import Data.List
-import Data.Maybe
-import Data.Monoid
-import qualified Data.Traversable as T
-
-import Debug.Trace
-
-import Agda.Syntax.Position hiding (tests)
-import Agda.Syntax.Parser.Monad
-import Agda.Syntax.Parser.Lexer
-import Agda.Syntax.Parser.Tokens
-import Agda.Syntax.Concrete as C
-import Agda.Syntax.Concrete.Pretty ()
-import Agda.Syntax.Common
-import Agda.Syntax.Fixity
-import Agda.Syntax.Notation
-import Agda.Syntax.Literal
-
-import Agda.Utils.Either hiding (tests)
-import Agda.Utils.Hash
-import Agda.Utils.List (spanJust)
-import Agda.Utils.Monad
-import Agda.Utils.Pretty
-import Agda.Utils.QuickCheck
-import Agda.Utils.Singleton
-import Agda.Utils.TestHelpers
-import Agda.Utils.Tuple
-
-import Agda.Utils.Impossible
-#include "undefined.h"
-import qualified Data.Array as Happy_Data_Array
-import qualified GHC.Exts as Happy_GHC_Exts
-import Control.Applicative(Applicative(..))
-
--- parser produced by Happy Version 1.19.4
-
-newtype HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83 = HappyAbsSyn HappyAny
-#if __GLASGOW_HASKELL__ >= 607
-type HappyAny = Happy_GHC_Exts.Any
-#else
-type HappyAny = forall a . a
-#endif
-happyIn9 :: ([Token]) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn9 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn9 #-}
-happyOut9 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> ([Token])
-happyOut9 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut9 #-}
-happyIn10 :: ([Token]) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn10 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn10 #-}
-happyOut10 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> ([Token])
-happyOut10 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut10 #-}
-happyIn11 :: (Token) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn11 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn11 #-}
-happyOut11 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (Token)
-happyOut11 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut11 #-}
-happyIn12 :: (([Pragma], [Declaration])) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn12 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn12 #-}
-happyOut12 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (([Pragma], [Declaration]))
-happyOut12 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut12 #-}
-happyIn13 :: t13 -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn13 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn13 #-}
-happyOut13 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> t13
-happyOut13 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut13 #-}
-happyIn14 :: t14 -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn14 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn14 #-}
-happyOut14 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> t14
-happyOut14 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut14 #-}
-happyIn15 :: t15 -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn15 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn15 #-}
-happyOut15 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> t15
-happyOut15 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut15 #-}
-happyIn16 :: (()) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn16 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn16 #-}
-happyOut16 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (())
-happyOut16 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut16 #-}
-happyIn17 :: (Integer) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn17 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn17 #-}
-happyOut17 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (Integer)
-happyOut17 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut17 #-}
-happyIn18 :: (Name) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn18 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn18 #-}
-happyOut18 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (Name)
-happyOut18 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut18 #-}
-happyIn19 :: ([Name]) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn19 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn19 #-}
-happyOut19 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> ([Name])
-happyOut19 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut19 #-}
-happyIn20 :: (Range) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn20 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn20 #-}
-happyOut20 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (Range)
-happyOut20 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut20 #-}
-happyIn21 :: (Arg Name) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn21 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn21 #-}
-happyOut21 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (Arg Name)
-happyOut21 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut21 #-}
-happyIn22 :: ([Arg Name]) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn22 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn22 #-}
-happyOut22 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> ([Arg Name])
-happyOut22 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut22 #-}
-happyIn23 :: ([Arg Name]) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn23 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn23 #-}
-happyOut23 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> ([Arg Name])
-happyOut23 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut23 #-}
-happyIn24 :: (QName) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn24 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn24 #-}
-happyOut24 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (QName)
-happyOut24 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut24 #-}
-happyIn25 :: (QName) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn25 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn25 #-}
-happyOut25 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (QName)
-happyOut25 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut25 #-}
-happyIn26 :: (Name) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn26 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn26 #-}
-happyOut26 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (Name)
-happyOut26 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut26 #-}
-happyIn27 :: ([Name]) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn27 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn27 #-}
-happyOut27 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> ([Name])
-happyOut27 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut27 #-}
-happyIn28 :: ([Name]) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn28 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn28 #-}
-happyOut28 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> ([Name])
-happyOut28 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut28 #-}
-happyIn29 :: (Either [Name] [Expr]) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn29 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn29 #-}
-happyOut29 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (Either [Name] [Expr])
-happyOut29 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut29 #-}
-happyIn30 :: ([WithHiding Name]) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn30 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn30 #-}
-happyOut30 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> ([WithHiding Name])
-happyOut30 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut30 #-}
-happyIn31 :: ([String]) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn31 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn31 #-}
-happyOut31 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> ([String])
-happyOut31 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut31 #-}
-happyIn32 :: (String) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn32 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn32 #-}
-happyOut32 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (String)
-happyOut32 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut32 #-}
-happyIn33 :: ([(Interval, String)]) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn33 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn33 #-}
-happyOut33 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> ([(Interval, String)])
-happyOut33 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut33 #-}
-happyIn34 :: (Name) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn34 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn34 #-}
-happyOut34 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (Name)
-happyOut34 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut34 #-}
-happyIn35 :: (QName) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn35 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn35 #-}
-happyOut35 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (QName)
-happyOut35 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut35 #-}
-happyIn36 :: (Expr) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn36 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn36 #-}
-happyOut36 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (Expr)
-happyOut36 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut36 #-}
-happyIn37 :: t37 -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn37 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn37 #-}
-happyOut37 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> t37
-happyOut37 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut37 #-}
-happyIn38 :: ([Expr]) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn38 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn38 #-}
-happyOut38 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> ([Expr])
-happyOut38 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut38 #-}
-happyIn39 :: ([Expr]) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn39 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn39 #-}
-happyOut39 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> ([Expr])
-happyOut39 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut39 #-}
-happyIn40 :: t40 -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn40 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn40 #-}
-happyOut40 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> t40
-happyOut40 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut40 #-}
-happyIn41 :: (Expr) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn41 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn41 #-}
-happyOut41 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (Expr)
-happyOut41 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut41 #-}
-happyIn42 :: ([Expr]) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn42 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn42 #-}
-happyOut42 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> ([Expr])
-happyOut42 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut42 #-}
-happyIn43 :: t43 -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn43 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn43 #-}
-happyOut43 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> t43
-happyOut43 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut43 #-}
-happyIn44 :: t44 -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn44 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn44 #-}
-happyOut44 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> t44
-happyOut44 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut44 #-}
-happyIn45 :: t45 -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn45 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn45 #-}
-happyOut45 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> t45
-happyOut45 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut45 #-}
-happyIn46 :: (RecordAssignments) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn46 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn46 #-}
-happyOut46 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (RecordAssignments)
-happyOut46 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut46 #-}
-happyIn47 :: (RecordAssignments) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn47 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn47 #-}
-happyOut47 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (RecordAssignments)
-happyOut47 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut47 #-}
-happyIn48 :: (RecordAssignment) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn48 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn48 #-}
-happyOut48 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (RecordAssignment)
-happyOut48 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut48 #-}
-happyIn49 :: (ModuleAssignment) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn49 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn49 #-}
-happyOut49 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (ModuleAssignment)
-happyOut49 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut49 #-}
-happyIn50 :: ([FieldAssignment]) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn50 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn50 #-}
-happyOut50 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> ([FieldAssignment])
-happyOut50 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut50 #-}
-happyIn51 :: ([FieldAssignment]) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn51 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn51 #-}
-happyOut51 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> ([FieldAssignment])
-happyOut51 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut51 #-}
-happyIn52 :: (FieldAssignment) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn52 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn52 #-}
-happyOut52 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (FieldAssignment)
-happyOut52 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut52 #-}
-happyIn53 :: t53 -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn53 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn53 #-}
-happyOut53 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> t53
-happyOut53 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut53 #-}
-happyIn54 :: t54 -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn54 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn54 #-}
-happyOut54 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> t54
-happyOut54 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut54 #-}
-happyIn55 :: ([TypedBindings]) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn55 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn55 #-}
-happyOut55 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> ([TypedBindings])
-happyOut55 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut55 #-}
-happyIn56 :: (TypedBindings) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn56 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn56 #-}
-happyOut56 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (TypedBindings)
-happyOut56 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut56 #-}
-happyIn57 :: (TypedBindings) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn57 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn57 #-}
-happyOut57 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (TypedBindings)
-happyOut57 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut57 #-}
-happyIn58 :: (TypedBindings) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn58 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn58 #-}
-happyOut58 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (TypedBindings)
-happyOut58 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut58 #-}
-happyIn59 :: ([LamBinding]) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn59 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn59 #-}
-happyOut59 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> ([LamBinding])
-happyOut59 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut59 #-}
-happyIn60 :: (Either ([LamBinding], Hiding) [Expr]) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn60 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn60 #-}
-happyOut60 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (Either ([LamBinding], Hiding) [Expr])
-happyOut60 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut60 #-}
-happyIn61 :: ([Either Hiding LamBinding]) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn61 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn61 #-}
-happyOut61 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> ([Either Hiding LamBinding])
-happyOut61 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut61 #-}
-happyIn62 :: (Either [Either Hiding LamBinding] [Expr]) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn62 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn62 #-}
-happyOut62 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (Either [Either Hiding LamBinding] [Expr])
-happyOut62 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut62 #-}
-happyIn63 :: ((LHS,RHS,WhereClause,Bool)) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn63 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn63 #-}
-happyOut63 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> ((LHS,RHS,WhereClause,Bool))
-happyOut63 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut63 #-}
-happyIn64 :: ((LHS,RHS,WhereClause,Bool)) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn64 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn64 #-}
-happyOut64 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> ((LHS,RHS,WhereClause,Bool))
-happyOut64 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut64 #-}
-happyIn65 :: ((LHS,RHS,WhereClause,Bool)) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn65 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn65 #-}
-happyOut65 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> ((LHS,RHS,WhereClause,Bool))
-happyOut65 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut65 #-}
-happyIn66 :: ([(LHS,RHS,WhereClause,Bool)]) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn66 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn66 #-}
-happyOut66 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> ([(LHS,RHS,WhereClause,Bool)])
-happyOut66 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut66 #-}
-happyIn67 :: ([LamBinding]) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn67 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn67 #-}
-happyOut67 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> ([LamBinding])
-happyOut67 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut67 #-}
-happyIn68 :: ([LamBinding]) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn68 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn68 #-}
-happyOut68 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> ([LamBinding])
-happyOut68 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut68 #-}
-happyIn69 :: ([LamBinding]) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn69 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn69 #-}
-happyOut69 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> ([LamBinding])
-happyOut69 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut69 #-}
-happyIn70 :: ([LamBinding]) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn70 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn70 #-}
-happyOut70 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> ([LamBinding])
-happyOut70 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut70 #-}
-happyIn71 :: (Either [LamBinding] [Expr]) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn71 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn71 #-}
-happyOut71 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (Either [LamBinding] [Expr])
-happyOut71 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut71 #-}
-happyIn72 :: (ImportDirective) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn72 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn72 #-}
-happyOut72 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (ImportDirective)
-happyOut72 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut72 #-}
-happyIn73 :: ([ImportDirective]) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn73 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn73 #-}
-happyOut73 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> ([ImportDirective])
-happyOut73 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut73 #-}
-happyIn74 :: (ImportDirective) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn74 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn74 #-}
-happyOut74 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (ImportDirective)
-happyOut74 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut74 #-}
-happyIn75 :: ((Using, Range)) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn75 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn75 #-}
-happyOut75 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> ((Using, Range))
-happyOut75 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut75 #-}
-happyIn76 :: (([ImportedName], Range)) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn76 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn76 #-}
-happyOut76 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (([ImportedName], Range))
-happyOut76 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut76 #-}
-happyIn77 :: (([Renaming] , Range)) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn77 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn77 #-}
-happyOut77 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (([Renaming] , Range))
-happyOut77 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut77 #-}
-happyIn78 :: ([Renaming]) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn78 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn78 #-}
-happyOut78 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> ([Renaming])
-happyOut78 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut78 #-}
-happyIn79 :: (Renaming) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn79 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn79 #-}
-happyOut79 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (Renaming)
-happyOut79 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut79 #-}
-happyIn80 :: (ImportedName) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn80 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn80 #-}
-happyOut80 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (ImportedName)
-happyOut80 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut80 #-}
-happyIn81 :: (ImportedName) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn81 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn81 #-}
-happyOut81 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (ImportedName)
-happyOut81 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut81 #-}
-happyIn82 :: ([ImportedName]) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn82 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn82 #-}
-happyOut82 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> ([ImportedName])
-happyOut82 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut82 #-}
-happyIn83 :: t83 -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn83 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn83 #-}
-happyOut83 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> t83
-happyOut83 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut83 #-}
-happyIn84 :: (LHS) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn84 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn84 #-}
-happyOut84 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (LHS)
-happyOut84 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut84 #-}
-happyIn85 :: ([Pattern]) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn85 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn85 #-}
-happyOut85 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> ([Pattern])
-happyOut85 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut85 #-}
-happyIn86 :: ([Expr]) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn86 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn86 #-}
-happyOut86 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> ([Expr])
-happyOut86 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut86 #-}
-happyIn87 :: ([Expr]) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn87 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn87 #-}
-happyOut87 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> ([Expr])
-happyOut87 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut87 #-}
-happyIn88 :: (WhereClause) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn88 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn88 #-}
-happyOut88 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (WhereClause)
-happyOut88 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut88 #-}
-happyIn89 :: (ExprWhere) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn89 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn89 #-}
-happyOut89 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (ExprWhere)
-happyOut89 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut89 #-}
-happyIn90 :: ([Declaration]) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn90 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn90 #-}
-happyOut90 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> ([Declaration])
-happyOut90 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut90 #-}
-happyIn91 :: ([Declaration]) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn91 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn91 #-}
-happyOut91 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> ([Declaration])
-happyOut91 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut91 #-}
-happyIn92 :: ([Arg Declaration]) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn92 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn92 #-}
-happyOut92 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> ([Arg Declaration])
-happyOut92 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut92 #-}
-happyIn93 :: ([Declaration]) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn93 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn93 #-}
-happyOut93 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> ([Declaration])
-happyOut93 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut93 #-}
-happyIn94 :: (RHSOrTypeSigs) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn94 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn94 #-}
-happyOut94 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (RHSOrTypeSigs)
-happyOut94 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut94 #-}
-happyIn95 :: (Declaration) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn95 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn95 #-}
-happyOut95 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (Declaration)
-happyOut95 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut95 #-}
-happyIn96 :: (Declaration) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn96 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn96 #-}
-happyOut96 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (Declaration)
-happyOut96 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut96 #-}
-happyIn97 :: (Declaration) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn97 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn97 #-}
-happyOut97 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (Declaration)
-happyOut97 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut97 #-}
-happyIn98 :: (Declaration) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn98 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn98 #-}
-happyOut98 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (Declaration)
-happyOut98 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut98 #-}
-happyIn99 :: ((Name, IsInstance)) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn99 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn99 #-}
-happyOut99 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> ((Name, IsInstance))
-happyOut99 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut99 #-}
-happyIn100 :: (Declaration) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn100 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn100 #-}
-happyOut100 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (Declaration)
-happyOut100 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut100 #-}
-happyIn101 :: ([Declaration]) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn101 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn101 #-}
-happyOut101 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> ([Declaration])
-happyOut101 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut101 #-}
-happyIn102 :: (Declaration) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn102 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn102 #-}
-happyOut102 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (Declaration)
-happyOut102 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut102 #-}
-happyIn103 :: (Declaration) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn103 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn103 #-}
-happyOut103 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (Declaration)
-happyOut103 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut103 #-}
-happyIn104 :: (Declaration) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn104 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn104 #-}
-happyOut104 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (Declaration)
-happyOut104 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut104 #-}
-happyIn105 :: (Declaration) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn105 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn105 #-}
-happyOut105 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (Declaration)
-happyOut105 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut105 #-}
-happyIn106 :: (Declaration) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn106 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn106 #-}
-happyOut106 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (Declaration)
-happyOut106 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut106 #-}
-happyIn107 :: (Declaration) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn107 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn107 #-}
-happyOut107 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (Declaration)
-happyOut107 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut107 #-}
-happyIn108 :: (Declaration) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn108 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn108 #-}
-happyOut108 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (Declaration)
-happyOut108 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut108 #-}
-happyIn109 :: (Declaration) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn109 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn109 #-}
-happyOut109 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (Declaration)
-happyOut109 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut109 #-}
-happyIn110 :: (Declaration) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn110 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn110 #-}
-happyOut110 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (Declaration)
-happyOut110 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut110 #-}
-happyIn111 :: (Declaration) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn111 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn111 #-}
-happyOut111 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (Declaration)
-happyOut111 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut111 #-}
-happyIn112 :: ([Arg Name]) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn112 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn112 #-}
-happyOut112 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> ([Arg Name])
-happyOut112 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut112 #-}
-happyIn113 :: ([RString]) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn113 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn113 #-}
-happyOut113 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> ([RString])
-happyOut113 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut113 #-}
-happyIn114 :: ([NamedArg HoleName]) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn114 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn114 #-}
-happyOut114 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> ([NamedArg HoleName])
-happyOut114 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut114 #-}
-happyIn115 :: (NamedArg HoleName) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn115 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn115 #-}
-happyOut115 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (NamedArg HoleName)
-happyOut115 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut115 #-}
-happyIn116 :: (HoleName) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn116 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn116 #-}
-happyOut116 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (HoleName)
-happyOut116 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut116 #-}
-happyIn117 :: (HoleName) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn117 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn117 #-}
-happyOut117 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (HoleName)
-happyOut117 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut117 #-}
-happyIn118 :: (RString) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn118 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn118 #-}
-happyOut118 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (RString)
-happyOut118 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut118 #-}
-happyIn119 :: (Maybe Range) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn119 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn119 #-}
-happyOut119 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (Maybe Range)
-happyOut119 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut119 #-}
-happyIn120 :: ([Declaration]) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn120 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn120 #-}
-happyOut120 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> ([Declaration])
-happyOut120 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut120 #-}
-happyIn121 :: ([Expr]) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn121 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn121 #-}
-happyOut121 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> ([Expr])
-happyOut121 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut121 #-}
-happyIn122 :: ([TypedBindings] -> Parser ModuleApplication) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn122 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn122 #-}
-happyOut122 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> ([TypedBindings] -> Parser ModuleApplication)
-happyOut122 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut122 #-}
-happyIn123 :: (Declaration) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn123 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn123 #-}
-happyOut123 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (Declaration)
-happyOut123 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut123 #-}
-happyIn124 :: (Declaration) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn124 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn124 #-}
-happyOut124 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (Declaration)
-happyOut124 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut124 #-}
-happyIn125 :: (Name) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn125 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn125 #-}
-happyOut125 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (Name)
-happyOut125 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut125 #-}
-happyIn126 :: ([Declaration]) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn126 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn126 #-}
-happyOut126 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> ([Declaration])
-happyOut126 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut126 #-}
-happyIn127 :: (Declaration) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn127 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn127 #-}
-happyOut127 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (Declaration)
-happyOut127 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut127 #-}
-happyIn128 :: (Pragma) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn128 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn128 #-}
-happyOut128 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (Pragma)
-happyOut128 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut128 #-}
-happyIn129 :: (Pragma) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn129 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn129 #-}
-happyOut129 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (Pragma)
-happyOut129 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut129 #-}
-happyIn130 :: (Pragma) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn130 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn130 #-}
-happyOut130 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (Pragma)
-happyOut130 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut130 #-}
-happyIn131 :: (Pragma) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn131 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn131 #-}
-happyOut131 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (Pragma)
-happyOut131 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut131 #-}
-happyIn132 :: (Pragma) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn132 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn132 #-}
-happyOut132 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (Pragma)
-happyOut132 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut132 #-}
-happyIn133 :: (Pragma) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn133 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn133 #-}
-happyOut133 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (Pragma)
-happyOut133 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut133 #-}
-happyIn134 :: (Pragma) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn134 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn134 #-}
-happyOut134 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (Pragma)
-happyOut134 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut134 #-}
-happyIn135 :: (Pragma) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn135 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn135 #-}
-happyOut135 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (Pragma)
-happyOut135 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut135 #-}
-happyIn136 :: (Pragma) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn136 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn136 #-}
-happyOut136 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (Pragma)
-happyOut136 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut136 #-}
-happyIn137 :: (Pragma) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn137 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn137 #-}
-happyOut137 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (Pragma)
-happyOut137 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut137 #-}
-happyIn138 :: (Pragma) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn138 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn138 #-}
-happyOut138 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (Pragma)
-happyOut138 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut138 #-}
-happyIn139 :: (Pragma) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn139 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn139 #-}
-happyOut139 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (Pragma)
-happyOut139 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut139 #-}
-happyIn140 :: (Pragma) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn140 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn140 #-}
-happyOut140 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (Pragma)
-happyOut140 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut140 #-}
-happyIn141 :: (Pragma) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn141 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn141 #-}
-happyOut141 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (Pragma)
-happyOut141 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut141 #-}
-happyIn142 :: (Pragma) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn142 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn142 #-}
-happyOut142 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (Pragma)
-happyOut142 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut142 #-}
-happyIn143 :: (Pragma) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn143 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn143 #-}
-happyOut143 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (Pragma)
-happyOut143 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut143 #-}
-happyIn144 :: (Pragma) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn144 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn144 #-}
-happyOut144 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (Pragma)
-happyOut144 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut144 #-}
-happyIn145 :: (Pragma) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn145 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn145 #-}
-happyOut145 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (Pragma)
-happyOut145 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut145 #-}
-happyIn146 :: (Pragma) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn146 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn146 #-}
-happyOut146 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (Pragma)
-happyOut146 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut146 #-}
-happyIn147 :: (Pragma) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn147 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn147 #-}
-happyOut147 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (Pragma)
-happyOut147 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut147 #-}
-happyIn148 :: (Pragma) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn148 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn148 #-}
-happyOut148 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (Pragma)
-happyOut148 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut148 #-}
-happyIn149 :: (Pragma) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn149 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn149 #-}
-happyOut149 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (Pragma)
-happyOut149 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut149 #-}
-happyIn150 :: (Pragma) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn150 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn150 #-}
-happyOut150 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (Pragma)
-happyOut150 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut150 #-}
-happyIn151 :: (Pragma) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn151 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn151 #-}
-happyOut151 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (Pragma)
-happyOut151 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut151 #-}
-happyIn152 :: (Pragma) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn152 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn152 #-}
-happyOut152 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (Pragma)
-happyOut152 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut152 #-}
-happyIn153 :: (Pragma) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn153 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn153 #-}
-happyOut153 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (Pragma)
-happyOut153 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut153 #-}
-happyIn154 :: (Pragma) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn154 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn154 #-}
-happyOut154 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (Pragma)
-happyOut154 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut154 #-}
-happyIn155 :: ([TypeSignature]) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn155 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn155 #-}
-happyOut155 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> ([TypeSignature])
-happyOut155 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut155 #-}
-happyIn156 :: ([TypeSignature]) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn156 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn156 #-}
-happyOut156 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> ([TypeSignature])
-happyOut156 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut156 #-}
-happyIn157 :: ([Arg TypeSignature]) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn157 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn157 #-}
-happyOut157 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> ([Arg TypeSignature])
-happyOut157 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut157 #-}
-happyIn158 :: ([Arg TypeSignature]) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn158 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn158 #-}
-happyOut158 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> ([Arg TypeSignature])
-happyOut158 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut158 #-}
-happyIn159 :: (((Maybe (Ranged Induction), Maybe Bool, Maybe (Name, IsInstance)), [Declaration])) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn159 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn159 #-}
-happyOut159 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (((Maybe (Ranged Induction), Maybe Bool, Maybe (Name, IsInstance)), [Declaration]))
-happyOut159 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut159 #-}
-happyIn160 :: ([RecordDirective]) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn160 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn160 #-}
-happyOut160 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> ([RecordDirective])
-happyOut160 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut160 #-}
-happyIn161 :: (RecordDirective) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn161 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn161 #-}
-happyOut161 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (RecordDirective)
-happyOut161 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut161 #-}
-happyIn162 :: (Ranged Bool) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn162 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn162 #-}
-happyOut162 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (Ranged Bool)
-happyOut162 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut162 #-}
-happyIn163 :: (Ranged Induction) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn163 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn163 #-}
-happyOut163 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (Ranged Induction)
-happyOut163 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut163 #-}
-happyIn164 :: ([Declaration]) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn164 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn164 #-}
-happyOut164 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> ([Declaration])
-happyOut164 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut164 #-}
-happyIn165 :: ([Declaration]) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn165 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn165 #-}
-happyOut165 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> ([Declaration])
-happyOut165 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut165 #-}
-happyIn166 :: ([Declaration]) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn166 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn166 #-}
-happyOut166 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> ([Declaration])
-happyOut166 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut166 #-}
-happyIn167 :: ([Declaration]) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyIn167 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn167 #-}
-happyOut167 :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> ([Declaration])
-happyOut167 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut167 #-}
-happyInTok :: (Token) -> (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83)
-happyInTok x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyInTok #-}
-happyOutTok :: (HappyAbsSyn t13 t14 t15 t37 t40 t43 t44 t45 t53 t54 t83) -> (Token)
-happyOutTok x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOutTok #-}
-
-
-happyActOffsets :: HappyAddr
-happyActOffsets = HappyA# "\x00\x00\x5c\x0b\x5c\x0b\x34\x07\xef\x04\x11\x0b\x00\x00\xbe\x04\x37\x07\x00\x00\x65\x07\x00\x00\x00\x00\x00\x00\x00\x00\x31\x07\x00\x00\x00\x00\x65\x09\xff\x04\x25\x07\xd0\x09\x2c\x07\x00\x00\x00\x00\x00\x00\x23\x07\x00\x00\xfb\x0c\x00\x00\xe4\x0c\x00\x00\x00\x00\x2a\x07\xe4\x0c\x00\x00\x00\x00\x92\x09\x46\x09\x4a\x07\xf9\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1b\x07\x1b\x07\x58\x04\x87\x00\x2e\x07\x5a\x01\xf2\x0a\x28\x07\x00\x00\x1b\x02\x14\x07\xf2\x03\x9b\x0c\x2b\x07\xdd\x06\xf9\x08\x14\x07\x14\x07\x26\x07\x00\x00\x1d\x07\x8a\x01\x1a\x07\x00\x00\x00\x00\xde\x01\xde\x01\x00\x00\x18\x07\x1e\x07\x19\x07\x65\x00\x17\x07\x5c\x07\x08\x07\x06\x07\xe3\x04\x00\x00\x00\x00\xda\x08\xdd\x06\x8d\x08\x7b\x0b\x7b\x0b\x7b\x0b\x00\x00\x1a\x03\xa7\x0a\x7b\x0b\x7b\x0b\x00\x00\x00\x00\x88\x0a\x7b\x0b\x88\x0a\x00\x00\x4f\x01\x05\x07\xe7\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x07\xfc\x06\xfc\x06\xf0\x06\xeb\x06\xeb\x06\xeb\x06\xea\x06\xea\x06\xdd\xff\xea\x06\x2f\x00\xe2\x06\xe8\x06\xe6\x06\xe1\x06\x84\x0c\xdb\x06\x8f\x00\xdb\x06\xee\x11\x00\x00\x00\x00\x4e\x08\x88\x0a\x00\x00\xe7\x06\x00\x00\x26\x09\xe1\x07\xd0\x03\x29\x03\x00\x00\x6e\x08\x20\x08\x01\x08\x12\x07\x3b\x0c\xe5\x06\x3b\x0c\xd7\x06\xe3\x04\x22\x07\x21\x07\x52\x06\xba\x08\x88\x0a\xd8\x06\xba\x08\x00\x00\x7b\x0b\x7b\x0b\x87\x00\x88\x0a\x88\x0a\x00\x00\x00\x00\xfa\x06\x7b\x0b\x3b\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x0a\x00\x00\x00\x00\x00\x00\xca\x06\x00\x00\x7b\x0b\xe1\x01\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x88\x0a\x88\x0a\xd4\x06\x3b\x0c\xc6\x06\x00\x00\xd1\x06\x00\x00\x00\x00\xbc\x06\x7b\x0b\xc5\x06\xe4\x06\x26\x01\xc3\x06\x00\x00\xe7\xff\x02\x01\x7b\x0b\xc1\x06\xde\x06\xb9\x06\x00\x00\xb4\x06\x00\x00\x7b\x0b\x7b\x0b\x7b\x0b\x00\x00\x7b\x0b\x7b\x0b\x00\x08\x9a\x06\x00\x08\xb6\x07\x97\x07\x3b\x0a\x00\x00\x00\x00\x98\x06\xe8\xff\xa7\x06\xa0\x06\xa0\x06\xa0\x06\xa0\x06\xa0\x06\xa0\x06\xa0\x06\xa0\x06\xa0\x06\x9e\x06\x9c\x06\x9b\x06\x95\x06\x91\x06\x93\x06\x90\x06\x8d\x06\x8e\x06\x8b\x06\x89\x06\x85\x06\x7f\x06\x7f\x06\x80\x06\x7e\x06\x8a\x06\x87\x06\x1c\x0a\xf7\x01\xe0\x05\x00\x00\x00\x00\x76\x06\x00\x00\xc3\x05\x24\x0c\x76\x06\x00\x00\x46\x04\x46\x04\x00\x00\x00\x00\x00\x00\xf2\x00\x00\x00\xf2\x00\xf2\x00\x00\x00\x66\x01\x46\x04\x46\x04\x00\x00\x00\x00\x00\x00\x52\x06\x00\x00\x00\x00\x00\x00\x00\x00\xf3\x03\xa9\x06\xa6\x06\x00\x00\x00\x00\x00\x00\x7b\x0b\x7b\x0b\x75\x06\xde\x01\x78\x06\x72\x06\xde\x01\x6f\x06\x61\x00\x00\x00\xe3\x04\x00\x00\x00\x00\x1c\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x0a\x00\x00\x00\x00\xdb\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x06\x67\x06\x00\x00\x00\x00\x00\x00\x00\x00\x46\x04\xea\xff\x46\x04\xe4\xff\x00\x00\x17\x03\x6c\x06\x00\x00\x68\x00\x5d\x06\xcc\x00\xa8\x01\xd6\xff\xd6\xff\xf2\x00\x00\x00\x00\x00\x00\x00\x8c\x06\xdc\xff\x46\x04\xdb\x0b\x35\x01\xbe\x06\x00\x00\x63\x06\x61\x06\x00\x00\x68\x00\xe0\xff\x7b\x0b\x75\x01\x00\x00\x00\x00\x00\x00\x5b\x06\xaf\xff\xaf\xff\x00\x00\x00\x00\x1c\x0a\x1c\x0a\x00\x00\x00\x00\x4d\x06\x00\x00\x49\x06\x47\x06\x48\x06\x00\x00\x00\x00\x00\x00\x46\x06\x44\x06\x00\x00\x41\x06\x00\x00\x40\x06\x3f\x06\x3a\x06\x3b\x06\x37\x06\x34\x06\x34\x06\x34\x06\x32\x06\x30\x06\x30\x06\x29\x06\x26\x06\x11\x06\x00\x00\x03\x06\x03\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf3\x00\xe1\x01\x9d\x00\xe1\x01\x00\x00\x0a\x06\xd1\x09\x00\x00\xd1\x09\xb2\x09\x00\x00\x00\x00\x00\x00\x0e\x06\x00\x06\x00\x00\x0d\x06\xe3\x04\x00\x00\x35\x01\xb2\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x35\x01\x00\x00\x00\x00\x00\x00\x01\x06\x00\x00\xfa\x05\xf4\x05\x00\x00\xec\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb2\x09\x00\x00\x00\x00\x00\x00\x00\x00\xe9\x05\xe8\x05\xe4\x05\xdf\x05\xdf\x05\xdc\x05\xdb\x05\xd5\x05\x00\x00\xca\x05\xc9\x05\xc7\x05\x00\x00\x00\x00\x86\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcb\x05\xd6\x05\xec\x00\x8c\x05\xd2\x05\xb5\xff\x00\x00\xbe\x05\xa0\x00\xc0\x05\xb2\x09\x00\x00\xb6\x05\xb2\x09\xb2\x09\xe5\x00\x00\x00\x00\x00\xb2\x05\x96\x05\xe3\x04\x96\x05\x00\x00\xd6\xff\xad\x05\x97\x05\xe5\x00\x00\x00\x97\x05\x97\x05\x97\x05\x97\x05\x00\x00\x00\x00\x66\x01\xb2\x09\x00\x00\x93\x05\xb2\x09\x00\x00\x93\x05\xb2\x09\x00\x00\x00\x00\x00\x00\x35\x01\x00\x00\xb8\x05\x00\x00\xb4\x05\x00\x00\x00\x00\x00\x00\x90\x05\xe5\x00\x89\x05\xe5\x00\x17\x03\x17\x03\x00\x00\x00\x00\xc4\x0b\x35\x01\x00\x00\xe3\x04\x35\x01\x00\x00\x00\x00\x00\x00\xaf\x05\x00\x00\x23\x05\x80\x05\x00\x00\x8b\x05\x8a\x05\xaf\xff\x00\x00\x85\x05\x84\x05\xaf\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x73\x05\x71\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\xf7\xff\x01\x00\x00\x00\x00\x00\x81\x05\x79\x05\x00\x00\x6c\x05\x6c\x05\x75\x05\x7e\x05\x91\x05\x00\x00\x00\x00\x69\x05\x00\x00\x00\x00\x5b\x05\x00\x00\x65\x05\x65\x05\x5c\x05\x60\x05\x60\x05\x00\x00\x00\x00\x68\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x52\x05\x00\x00\x00\x00\x56\x05\x00\x00\x4e\x05\x00\x00\x35\x01\x00\x00\x00\x00\x71\x06\x00\x00\x00\x00\x17\x03\x17\x03\x17\x03\x17\x03\x4d\x05\x4d\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe5\x00\x00\x00\x00\x00\xed\x05\x00\x00\x00\x00\x00\x00\x88\x05\x4c\x05\x2f\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x05\x20\x05\x6e\x05\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x1d\x05\x00\x00\x1f\x05\x00\x00\x00\x00\x00\x00"#
-
-happyGotoOffsets :: HappyAddr
-happyGotoOffsets = HappyA# "\xb4\x04\xd0\x11\xb9\x02\x7d\x05\xb6\x02\x42\x02\x7a\x05\x77\x05\x00\x00\x00\x00\x2a\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x06\x21\x05\x00\x00\x18\x01\xd7\x04\x00\x00\x00\x00\x00\x00\x66\x05\x00\x00\x37\x01\x00\x00\x3c\x03\x00\x00\x00\x00\x27\x05\x7e\x03\x00\x00\x00\x00\x39\x03\xb4\x11\xdc\x0e\x98\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x85\x00\x1e\x05\x00\x00\x00\x00\x7c\x11\x00\x00\x00\x00\x7f\x04\x00\x00\x00\x00\x7e\x03\xc1\x03\x95\x0d\xd9\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x05\x5f\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xce\x04\xa5\x01\x00\x00\x00\x00\x46\x0d\x6d\x0d\xb7\x0d\x76\x04\xc0\x0e\xb9\x0e\x00\x00\x00\x00\xbe\x01\xa1\x0e\x9a\x0e\x00\x00\x00\x00\x60\x11\xf7\x11\x44\x11\x00\x00\xf9\xff\x00\x04\x62\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\x63\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc7\x04\x54\x05\x53\x05\xbf\x04\x37\x05\x26\x05\xaa\x04\x91\x04\x21\x04\x22\x00\x1e\x04\xa5\x01\xa7\x04\x1c\x04\x19\x04\x0b\x04\xb2\x00\x9b\x04\x7a\x04\x71\x04\x00\x00\x00\x00\x00\x00\x5b\x07\x28\x11\x00\x00\x00\x00\x00\x00\xdf\x06\x00\x00\x60\x00\x38\x00\x00\x00\xbe\x01\x1e\x0e\x8c\x00\x54\x04\xda\x02\x00\x00\x4b\x02\x00\x00\x30\x02\x00\x00\x00\x00\x38\x03\x1f\x07\x0c\x11\x00\x00\xb8\x06\x00\x00\x82\x0e\x7b\x0e\x4f\x04\xf0\x10\xd4\x10\x00\x00\x00\x00\x3c\x04\xec\x11\x6c\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb8\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa2\x07\x69\x04\x00\x00\x00\x00\x00\x00\x00\x00\x68\x04\x9c\x10\x80\x10\x00\x00\xcb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x01\xd5\x02\x18\x04\x11\x04\x00\x00\x00\x00\x00\x00\x2b\x04\x14\x04\xc8\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x15\x04\x63\x0e\x5c\x0e\x00\x00\x44\x0e\x3d\x0e\x82\x06\x00\x00\x18\x06\xbe\x01\x10\x06\x25\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x04\x38\x04\x2e\x04\x29\x04\x22\x04\x0e\x04\x0c\x04\x08\x04\x05\x04\xf7\x03\x00\x00\x00\x00\x00\x00\x00\x00\xee\x03\xc2\x03\xe5\x03\x00\x00\x00\x00\x00\x00\xb8\x03\xd7\x03\xb9\x03\x00\x00\x52\x04\x00\x00\x00\x00\x64\x10\x1d\x04\xba\x05\x00\x00\x00\x00\x04\x00\x00\x00\x9b\x01\xaf\x00\xa3\x03\x00\x00\x55\x05\x25\x04\x00\x00\x00\x00\x00\x00\x67\x02\x00\x00\xc0\x01\x33\x01\x00\x00\xfb\xff\x9c\x03\x40\x03\x00\x00\x00\x00\x00\x00\xaf\x02\x00\x00\x00\x00\x00\x00\x00\x00\xfc\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa6\x05\x41\x05\x00\x00\x94\x03\x00\x00\x00\x00\x87\x03\x00\x00\x00\x00\x00\x00\x6f\x01\x00\x00\x00\x00\x48\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x10\x00\x00\x00\x00\xab\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb4\x03\xa6\x03\x00\x00\x00\x00\x00\x00\x00\x00\xb3\x02\x00\x00\xb0\x02\x00\x00\x00\x00\x31\x04\x00\x00\x00\x00\x27\x04\xf2\x02\x00\x00\x78\x03\x13\x03\x8e\x02\xb7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x02\xa8\x00\x8b\x08\xdc\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x10\x04\x00\x00\xfb\x0d\xe2\x01\x00\x00\x00\x00\x00\x00\x00\x00\x8a\x03\x60\x03\x00\x00\x00\x00\x10\x10\xf4\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\x03\x00\x00\x63\x03\x5e\x03\x53\x03\x3d\x03\x2f\x03\xeb\x02\xb1\x02\x00\x00\x00\x00\xaa\x02\x00\x00\xa3\x02\x79\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\x02\x00\x00\x68\x02\x00\x00\x00\x00\x15\x01\x00\x00\x06\x00\xd8\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3f\x03\x00\x00\x15\x07\xbc\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa0\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x02\x3d\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd4\x01\x00\x00\x00\x00\xc4\x01\x00\x00\x57\x00\x00\x00\xa6\x01\x84\x0f\x00\x00\xce\x00\x68\x0f\x4c\x0f\x23\x02\x00\x00\x00\x00\x00\x00\x0d\x03\x2b\x00\x88\x02\x00\x00\x02\x02\x00\x00\xfe\x01\xdc\x01\x00\x00\x9a\x03\x58\x03\x3a\x03\xe1\x02\x00\x00\x00\x00\x3c\x00\x30\x0f\x00\x00\x45\x02\x14\x0f\x00\x00\x2e\x02\xf8\x0e\x00\x00\x00\x00\x00\x00\x7c\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd8\x01\x00\x00\xd0\x01\x17\x04\xf0\x03\x00\x00\x00\x00\x42\x00\x17\x05\x00\x00\x27\x00\x4d\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x01\x72\x01\x00\x00\x00\x00\x00\x00\x4e\x02\x00\x00\x00\x00\x00\x00\x25\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x31\x01\xbf\x01\x13\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcd\x01\xc2\x01\x00\x00\x00\x00\x00\x00\xb9\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x01\x42\x01\x00\x00\x34\x01\xf6\x00\x00\x00\x00\x00\xe7\x01\x00\x00\x00\x00\x00\x00\x53\x01\x00\x00\x6e\x01\x00\x00\x00\x00\x8b\x00\x00\x00\x84\x00\x00\x00\xd7\x02\x00\x00\x00\x00\xdc\x0e\x00\x00\x00\x00\xc6\x03\x7c\x03\x44\x03\xf6\x02\x39\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xeb\x00\x00\x00\x00\x00\x26\x02\x00\x00\x00\x00\x00\x00\x9a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe9\x00\x5e\x00\xa3\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#
-
-happyDefActions :: HappyAddr
-happyDefActions = HappyA# "\xf7\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf9\xff\x70\xff\x49\xff\xd0\xfe\x5c\xff\x5a\xff\x59\xff\x56\xff\x00\x00\x36\xff\x35\xff\x53\xff\xae\xfe\x00\x00\x00\x00\x00\x00\x45\xff\x43\xff\x41\xff\x00\x00\x42\xff\x00\x00\x44\xff\x00\x00\x40\xff\x3f\xff\xd4\xfe\x00\x00\x46\xff\x47\xff\x00\x00\x00\x00\x00\x00\x00\x00\x88\xff\x71\xff\x48\xff\x70\xff\x6f\xff\x00\x00\x00\x00\x80\xfe\xce\xfe\x5d\xff\x00\x00\x00\x00\x00\x00\x27\xff\x25\xff\x00\x00\x00\x00\x00\x00\x80\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\xff\x00\x00\x69\xff\x00\x00\x4a\xff\x3b\xff\x00\x00\x00\x00\x85\xff\x00\x00\x00\x00\x00\x00\x68\xff\x00\x00\x00\x00\x00\x00\x00\x00\x81\xfe\x3c\xff\x39\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\xff\x00\x00\x80\xfe\x00\x00\x00\x00\x28\xff\x60\xff\x00\x00\x00\x00\x00\x00\xca\xfe\x00\x00\x00\x00\x25\xfe\xc8\xfe\xc7\xfe\xc6\xfe\xc5\xfe\xc4\xfe\xc3\xfe\xc9\xfe\xc2\xfe\xc1\xfe\xc0\xfe\xbf\xfe\xbe\xfe\xbd\xfe\xbc\xfe\xb5\xfe\xb7\xfe\xb6\xfe\xbb\xfe\xba\xfe\xb9\xfe\x90\xff\xb8\xfe\x72\xfe\x58\xfe\x71\xfe\x70\xfe\x6f\xfe\x6e\xfe\x6c\xfe\x6b\xfe\x6d\xfe\x6a\xfe\x69\xfe\x68\xfe\x67\xfe\x66\xfe\x65\xfe\x64\xfe\x63\xfe\x5a\xfe\x5d\xfe\x5e\xfe\x5f\xfe\x5c\xfe\x5b\xfe\x62\xfe\x61\xfe\x60\xfe\x59\xfe\x23\xfe\x73\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x81\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\xff\xf5\xfe\x0b\xff\x00\x00\x4e\xff\x00\x00\x16\xff\x13\xff\x0c\xff\x00\x00\x00\x00\x6d\xff\x80\xfe\x00\x00\x00\x00\xd0\xfe\x00\x00\x51\xff\x4d\xff\x00\x00\x34\xff\x00\x00\x00\x00\x80\xfe\xfa\xfe\x00\x00\x00\x00\xfb\xfe\xf6\xfe\x00\x00\x00\x00\xce\xfe\x00\x00\x00\x00\x58\xff\x4c\xff\xd2\xfe\x00\x00\x00\x00\xf8\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\xd3\xff\xd2\xff\xd1\xff\xd0\xff\xcf\xff\xce\xff\xcd\xff\xcc\xff\xcb\xff\xca\xff\xc9\xff\xc8\xff\xc7\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\xa1\xff\xa0\xff\x9f\xff\x9e\xff\x9d\xff\x9c\xff\x9b\xff\x9a\xff\x99\xff\x98\xff\x97\xff\x96\xff\x95\xff\x94\xff\x93\xff\x92\xff\x3a\xff\xcf\xfe\xd6\xfe\x00\x00\xb0\xfe\xaf\xfe\xb1\xfe\x6a\xff\x69\xff\x53\xff\x00\x00\xfd\xfe\xfe\xfe\x55\xff\xfc\xfe\x00\x00\x00\x00\x00\x00\x70\xff\x7c\xfe\x00\x00\x33\xff\x32\xff\x2f\xff\x30\xff\x2d\xff\x00\x00\xd4\xfe\xd2\xfe\x05\xff\x00\x00\xff\xfe\x00\x00\x00\x00\x00\x00\x09\xff\x00\x00\x08\xff\x68\xff\x0a\xff\xf4\xfe\x00\x00\x00\x00\x00\x00\xf3\xfe\x00\x00\x00\x00\x12\xff\x0e\xff\x13\xff\x80\xfe\x00\x00\x00\x00\x17\xff\x57\xff\x0d\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x64\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\xff\x00\x00\x00\x00\x00\x00\x86\xff\x00\x00\x00\x00\x00\x00\x00\x00\xf7\xfe\x9d\xfe\x99\xfe\x00\x00\x9a\xfe\x93\xfe\x7c\xfe\x00\x00\x9f\xfe\xf7\xfe\xf7\xfe\x74\xfe\x9b\xfe\x9c\xfe\x00\x00\x89\xff\x00\x00\x00\x00\xa0\xfe\x00\x00\xf7\xfe\xf7\xfe\x9e\xfe\x91\xff\x8f\xff\x80\xfe\x8c\xff\x8b\xff\x27\xfe\xcd\xfe\x00\x00\x00\x00\x00\x00\x5e\xff\x5b\xff\x5f\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1b\xff\x00\x00\x1e\xff\x3d\xff\x00\x00\x84\xff\x1d\xff\x3e\xff\x1c\xff\x4b\xff\x00\x00\x19\xff\x18\xff\x7c\xfe\x1a\xff\x24\xff\x22\xff\x23\xff\x21\xff\x1f\xff\x20\xff\x00\x00\x00\x00\x28\xfe\x8d\xff\x8e\xff\x26\xfe\xf7\xfe\x00\x00\xf7\xfe\x00\x00\x82\xff\x7e\xff\x00\x00\x37\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\xff\xa3\xfe\xa2\xfe\xa1\xfe\x00\x00\x00\x00\xf7\xfe\x7c\xfe\xea\xfe\x00\x00\x92\xfe\x00\x00\x00\x00\x3a\xfe\x00\x00\x00\x00\x2d\xff\x00\x00\x8f\xfe\x8d\xfe\x88\xfe\x00\x00\x00\x00\x00\x00\x82\xfe\x98\xfe\x00\x00\x00\x00\x87\xff\x43\xfe\x00\x00\x61\xff\x00\x00\x00\x00\x67\xff\x44\xfe\x3d\xfe\x45\xfe\x00\x00\x00\x00\x62\xff\x00\x00\x3e\xfe\x00\x00\x00\x00\x67\xff\x00\x00\x64\xff\x67\xff\x67\xff\x67\xff\x00\x00\x67\xff\x67\xff\x00\x00\x00\x00\x67\xff\x41\xfe\x00\x00\x00\x00\x10\xff\x0f\xff\x11\xff\x15\xff\x14\xff\x00\x00\x00\x00\x00\x00\x00\x00\x04\xff\x00\x00\x00\x00\x4f\xff\x00\x00\x00\x00\xd5\xfe\xd3\xfe\x50\xff\x00\x00\x00\x00\x2c\xff\x2b\xff\x00\x00\x38\xff\xea\xfe\x00\x00\x52\xff\x54\xff\x29\xfe\xf1\xfe\xf2\xfe\xd1\xfe\x29\xff\x2e\xff\xec\xfe\xea\xfe\xe8\xfe\xe7\xfe\xe6\xfe\x00\x00\xe9\xfe\x00\x00\x00\x00\x31\xff\x00\x00\x37\xff\x07\xff\x05\xff\x03\xff\x02\xff\x00\xff\x01\xff\x00\x00\xef\xfe\xf0\xfe\xed\xfe\xee\xfe\x00\x00\x00\x00\x00\x00\x67\xff\x67\xff\x00\x00\x00\x00\x00\x00\x65\xff\x00\x00\x00\x00\x00\x00\x63\xff\x4a\xfe\x00\x00\x40\xfe\x3f\xfe\x47\xfe\x42\xfe\x49\xfe\x66\xff\x57\xfe\x54\xfe\x48\xfe\x96\xfe\x97\xfe\x00\x00\x85\xfe\x00\x00\x00\x00\x85\xfe\x00\x00\x8e\xfe\x00\x00\x70\xff\x00\x00\x00\x00\x3c\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x7e\xfe\x7b\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x6c\xff\x80\xff\x00\x00\x00\x00\x00\x00\x83\xff\x00\x00\x00\x00\x00\x00\x00\x00\xb2\xfe\x39\xfe\x00\x00\x00\x00\x7f\xff\x00\x00\x00\x00\xf9\xfe\x00\x00\x00\x00\xf8\xfe\xcc\xfe\xcb\xfe\xea\xfe\x7f\xfe\x00\x00\xaa\xfe\xa9\xfe\xab\xfe\xb3\xfe\x38\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x7c\xff\x7a\xff\x81\xff\x75\xfe\x7c\xfe\xea\xfe\x76\xfe\x00\x00\xea\xfe\x94\xfe\xb4\xfe\x3b\xfe\xa6\xfe\xa7\xfe\x33\xfe\x95\xfe\x91\xfe\x00\x00\x00\x00\x00\x00\x8b\xfe\x00\x00\x00\x00\x00\x00\x8c\xfe\x46\xfe\x4c\xfe\x50\xfe\x4d\xfe\x52\xfe\x4e\xfe\x51\xfe\x00\x00\x00\x00\x53\xfe\x55\xfe\x56\xfe\x06\xff\x2a\xff\xda\xfe\x8a\xff\xda\xfe\xeb\xfe\xdc\xfe\xd8\xfe\x00\x00\xd9\xfe\x00\x00\x00\x00\x00\x00\xe0\xfe\x00\x00\x8a\xff\xe2\xfe\x00\x00\x4f\xfe\x4b\xfe\x00\x00\x85\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\xfe\x30\xfe\x00\x00\x31\xfe\x2e\xfe\x2f\xfe\x00\x00\x2a\xfe\x00\x00\x2d\xfe\x2b\xfe\x00\x00\x2c\xfe\x00\x00\x7d\xfe\xea\xfe\x78\xfe\x79\xfe\x00\x00\x7b\xff\x7d\xff\x76\xff\x78\xff\x72\xff\x74\xff\x00\x00\x00\x00\xac\xfe\xad\xfe\x75\xff\x73\xff\x79\xff\x77\xff\x00\x00\x77\xfe\xa8\xfe\x80\xfe\xa5\xfe\x34\xfe\x36\xfe\x80\xfe\x00\x00\x00\x00\x89\xfe\x84\xfe\x83\xfe\x8a\xfe\xe5\xfe\x00\x00\x00\x00\x8a\xff\xe3\xfe\xde\xfe\xdb\xfe\xe4\xfe\x00\x00\xd7\xfe\xe1\xfe\xdf\xfe\xdd\xfe\x86\xfe\x87\xfe\x32\xfe\x00\x00\x00\x00\x7a\xfe\x00\x00\x35\xfe\xa4\xfe"#
-
-happyCheck :: HappyAddr
-happyCheck = HappyA# "\xff\xff\x05\x00\x09\x00\x54\x00\x09\x00\x09\x00\x51\x00\x0c\x00\x2c\x00\x0e\x00\x13\x00\x0f\x00\x2c\x00\x09\x00\x0a\x00\x09\x00\x2c\x00\x62\x00\x00\x00\x09\x00\x13\x00\x0f\x00\x2c\x00\x62\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x05\x00\x09\x00\x4d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x09\x00\x50\x00\x45\x00\x51\x00\x4f\x00\x09\x00\x0f\x00\x10\x00\x4f\x00\x09\x00\x4e\x00\x0f\x00\x10\x00\x62\x00\x4f\x00\x0f\x00\x10\x00\x36\x00\x37\x00\x38\x00\x62\x00\x63\x00\x09\x00\x13\x00\x2a\x00\x2b\x00\x09\x00\x5f\x00\x4b\x00\x0c\x00\x11\x00\x0e\x00\x09\x00\x64\x00\x51\x00\x53\x00\x58\x00\x54\x00\x0f\x00\x56\x00\x57\x00\x58\x00\x59\x00\x52\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x62\x00\x22\x00\x23\x00\x24\x00\x09\x00\x00\x00\x09\x00\x6e\x00\x6f\x00\x0b\x00\x74\x00\x72\x00\x73\x00\x5e\x00\x11\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x09\x00\x53\x00\x95\x00\x62\x00\x63\x00\x8d\x00\x0f\x00\x09\x00\x74\x00\x93\x00\x71\x00\x9d\x00\x13\x00\x0f\x00\x71\x00\x9b\x00\x9c\x00\x13\x00\x14\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x09\x00\x70\x00\x2c\x00\x09\x00\x50\x00\x4e\x00\x0f\x00\x09\x00\x58\x00\x0f\x00\x09\x00\x30\x00\x58\x00\x0f\x00\x68\x00\x09\x00\x0f\x00\x36\x00\x37\x00\x6d\x00\x39\x00\x5e\x00\x5f\x00\x11\x00\x12\x00\x22\x00\x23\x00\x24\x00\x22\x00\x23\x00\x24\x00\x4b\x00\x22\x00\x23\x00\x24\x00\x09\x00\x23\x00\x51\x00\x09\x00\x0a\x00\x54\x00\x0f\x00\x56\x00\x57\x00\x58\x00\x59\x00\x50\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x4f\x00\x22\x00\x23\x00\x24\x00\x50\x00\x62\x00\x09\x00\x6e\x00\x6f\x00\x55\x00\x0b\x00\x72\x00\x73\x00\x5c\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\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x09\x00\x70\x00\x8d\x00\x96\x00\x70\x00\x09\x00\x0f\x00\x09\x00\x70\x00\x52\x00\x09\x00\x9d\x00\x9e\x00\x0f\x00\x59\x00\x9b\x00\x5b\x00\x09\x00\x11\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x09\x00\x70\x00\x09\x00\x51\x00\x09\x00\x5a\x00\x09\x00\x5c\x00\x4f\x00\x51\x00\x11\x00\x12\x00\x0f\x00\x2f\x00\x29\x00\x2a\x00\x2b\x00\x36\x00\x37\x00\x38\x00\x62\x00\x5c\x00\x4e\x00\x1c\x00\x3a\x00\x3b\x00\x62\x00\x3d\x00\x3e\x00\x22\x00\x05\x00\x4b\x00\x23\x00\x48\x00\x49\x00\x4a\x00\x5c\x00\x51\x00\x2b\x00\x5f\x00\x54\x00\x6d\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x4f\x00\x10\x00\x09\x00\x09\x00\x48\x00\x49\x00\x4a\x00\x6e\x00\x6f\x00\x0f\x00\x10\x00\x72\x00\x73\x00\x5c\x00\x09\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x51\x00\x6d\x00\x8d\x00\x09\x00\x09\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x0f\x00\x07\x00\x9d\x00\x11\x00\x53\x00\x09\x00\x6d\x00\x56\x00\x62\x00\x4c\x00\x4d\x00\x0f\x00\x10\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x59\x00\x07\x00\x5b\x00\x48\x00\x6d\x00\x4a\x00\x50\x00\x07\x00\x09\x00\x62\x00\x09\x00\x2f\x00\x09\x00\x57\x00\x0f\x00\x59\x00\x34\x00\x5b\x00\x11\x00\x12\x00\x15\x00\x9b\x00\x9c\x00\x09\x00\x62\x00\x3d\x00\x3e\x00\x50\x00\x0b\x00\x1e\x00\x1f\x00\x20\x00\x6d\x00\x22\x00\x23\x00\x24\x00\x0b\x00\x5a\x00\x4b\x00\x5c\x00\x0b\x00\x45\x00\x46\x00\x47\x00\x51\x00\x05\x00\x06\x00\x54\x00\x31\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x59\x00\x67\x00\x5b\x00\x45\x00\x46\x00\x47\x00\x09\x00\x6e\x00\x6f\x00\x62\x00\x09\x00\x72\x00\x73\x00\x0c\x00\x0d\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x6e\x00\x6f\x00\x0b\x00\x09\x00\x4f\x00\x6d\x00\x98\x00\x99\x00\x9a\x00\x0f\x00\x09\x00\x9d\x00\x5a\x00\x09\x00\x5c\x00\x5a\x00\x96\x00\x5c\x00\x11\x00\x0f\x00\x10\x00\x6d\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x09\x00\x6a\x00\x6b\x00\x57\x00\x6d\x00\x59\x00\x0f\x00\x5b\x00\x16\x00\x09\x00\x25\x00\x26\x00\x27\x00\x28\x00\x62\x00\x0f\x00\x2b\x00\x2f\x00\x16\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x4c\x00\x4d\x00\x3c\x00\x3d\x00\x3e\x00\x21\x00\x22\x00\x23\x00\x24\x00\x09\x00\x4b\x00\x57\x00\x0b\x00\x59\x00\x09\x00\x5b\x00\x51\x00\x11\x00\x12\x00\x54\x00\x0f\x00\x56\x00\x57\x00\x58\x00\x59\x00\x0b\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x4b\x00\x22\x00\x23\x00\x24\x00\x6c\x00\x6d\x00\x1a\x00\x6e\x00\x6f\x00\x54\x00\x09\x00\x72\x00\x73\x00\x0c\x00\x0d\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x09\x00\x09\x00\x6c\x00\x6d\x00\x09\x00\x1a\x00\x0f\x00\x09\x00\x16\x00\x11\x00\x09\x00\x9d\x00\x11\x00\x0f\x00\x10\x00\x16\x00\x0f\x00\x9b\x00\x9c\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x09\x00\x2f\x00\x9b\x00\x9c\x00\x2f\x00\x09\x00\x0f\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x0f\x00\x09\x00\x0a\x00\x3c\x00\x3d\x00\x3e\x00\x3c\x00\x3d\x00\x3e\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x4b\x00\x21\x00\x22\x00\x23\x00\x24\x00\x09\x00\x51\x00\x16\x00\x0c\x00\x54\x00\x0e\x00\x56\x00\x57\x00\x58\x00\x59\x00\x50\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x09\x00\x6e\x00\x6f\x00\x0c\x00\x0d\x00\x72\x00\x73\x00\x9b\x00\x9c\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x09\x00\x09\x00\x09\x00\x0a\x00\x09\x00\x17\x00\x0f\x00\x09\x00\x09\x00\x11\x00\x0f\x00\x9d\x00\x09\x00\x0f\x00\x10\x00\x0c\x00\x11\x00\x0e\x00\x16\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x21\x00\x22\x00\x23\x00\x24\x00\x09\x00\x0a\x00\x4c\x00\x4d\x00\x26\x00\x27\x00\x28\x00\x2f\x00\x16\x00\x2b\x00\x32\x00\x33\x00\x34\x00\x35\x00\x2f\x00\x59\x00\x57\x00\x5b\x00\x59\x00\x16\x00\x5b\x00\x3d\x00\x3e\x00\x16\x00\x62\x00\x51\x00\x18\x00\x3c\x00\x3d\x00\x3e\x00\x16\x00\x57\x00\x09\x00\x59\x00\x4b\x00\x5b\x00\x09\x00\x94\x00\x09\x00\x0c\x00\x51\x00\x0e\x00\x62\x00\x54\x00\x0f\x00\x56\x00\x57\x00\x58\x00\x59\x00\x0b\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x0b\x00\x22\x00\x23\x00\x24\x00\x09\x00\x0a\x00\x09\x00\x6e\x00\x6f\x00\x9b\x00\x9c\x00\x72\x00\x73\x00\x09\x00\x11\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x09\x00\x2f\x00\x6c\x00\x6d\x00\x16\x00\x09\x00\x0f\x00\x09\x00\x0c\x00\x1a\x00\x0e\x00\x9d\x00\x15\x00\x0f\x00\x3c\x00\x3d\x00\x3e\x00\x19\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x1a\x00\x31\x00\x00\x00\x01\x00\x02\x00\x6c\x00\x6d\x00\x05\x00\x09\x00\x07\x00\x08\x00\x0c\x00\x0a\x00\x0e\x00\x1a\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x1a\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x18\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x05\x00\x06\x00\x24\x00\x25\x00\x26\x00\x06\x00\x28\x00\x29\x00\x2a\x00\x09\x00\x1a\x00\x09\x00\x51\x00\x1a\x00\x0c\x00\x0f\x00\x0e\x00\x1a\x00\x57\x00\x1a\x00\x59\x00\x15\x00\x5b\x00\x05\x00\x06\x00\x09\x00\x6e\x00\x6f\x00\x06\x00\x62\x00\x1e\x00\x1f\x00\x20\x00\x11\x00\x22\x00\x23\x00\x24\x00\x09\x00\x48\x00\x1a\x00\x0c\x00\x4b\x00\x0e\x00\x4d\x00\x9b\x00\x9c\x00\x1a\x00\x51\x00\x52\x00\x31\x00\x54\x00\x1a\x00\x57\x00\x57\x00\x59\x00\x59\x00\x5b\x00\x5b\x00\x9b\x00\x9c\x00\x5e\x00\x1a\x00\x60\x00\x2f\x00\x62\x00\x63\x00\x1a\x00\x65\x00\x01\x00\x02\x00\x09\x00\x0a\x00\x05\x00\x4d\x00\x07\x00\x08\x00\x3c\x00\x3d\x00\x3e\x00\x4c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x05\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x0b\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x09\x00\x0a\x00\x24\x00\x25\x00\x26\x00\x09\x00\x28\x00\x29\x00\x2a\x00\x09\x00\x0a\x00\x0f\x00\x69\x00\x6a\x00\x6b\x00\x4d\x00\x6d\x00\x15\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x4c\x00\x4d\x00\x1e\x00\x1f\x00\x20\x00\x51\x00\x22\x00\x23\x00\x24\x00\x9b\x00\x9c\x00\x57\x00\x4f\x00\x59\x00\x48\x00\x5b\x00\x4e\x00\x4b\x00\x09\x00\x4d\x00\x9b\x00\x31\x00\x62\x00\x51\x00\x52\x00\x92\x00\x54\x00\x2e\x00\x2f\x00\x57\x00\x09\x00\x59\x00\x08\x00\x5b\x00\x00\x00\x01\x00\x5e\x00\x9b\x00\x60\x00\x9b\x00\x62\x00\x63\x00\x9b\x00\x65\x00\x66\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x9b\x00\x0a\x00\x08\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\x08\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x62\x00\x63\x00\x24\x00\x25\x00\x26\x00\x09\x00\x28\x00\x29\x00\x2a\x00\x4f\x00\x50\x00\x0f\x00\x62\x00\x63\x00\x94\x00\x13\x00\x14\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x09\x00\x09\x00\x09\x00\x1e\x00\x1f\x00\x20\x00\x9b\x00\x22\x00\x23\x00\x24\x00\x11\x00\x04\x00\x06\x00\x9b\x00\x0b\x00\x48\x00\x0b\x00\x4f\x00\x4b\x00\x09\x00\x4d\x00\x30\x00\x9b\x00\x4c\x00\x51\x00\x52\x00\x55\x00\x54\x00\x4e\x00\x02\x00\x57\x00\x01\x00\x59\x00\x5e\x00\x5b\x00\x62\x00\x03\x00\x13\x00\x62\x00\x60\x00\x2f\x00\x62\x00\x63\x00\x58\x00\x65\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x3c\x00\x3d\x00\x3e\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\x58\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x5d\x00\x5d\x00\x24\x00\x25\x00\x26\x00\x09\x00\x28\x00\x29\x00\x2a\x00\x5d\x00\x62\x00\x0f\x00\x5a\x00\x5c\x00\x27\x00\x13\x00\x14\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x58\x00\x62\x00\x09\x00\x1e\x00\x1f\x00\x20\x00\x62\x00\x22\x00\x23\x00\x24\x00\x11\x00\x4e\x00\x58\x00\x62\x00\x4e\x00\x48\x00\x58\x00\x61\x00\x4b\x00\x61\x00\x4d\x00\x30\x00\x53\x00\x53\x00\x51\x00\x52\x00\x2c\x00\x54\x00\x53\x00\x53\x00\x57\x00\x2c\x00\x59\x00\x62\x00\x5b\x00\x2c\x00\x5c\x00\x5a\x00\x61\x00\x60\x00\x2f\x00\x62\x00\x63\x00\x5c\x00\x65\x00\x01\x00\x02\x00\x5d\x00\x04\x00\x05\x00\x5d\x00\x07\x00\x08\x00\x3c\x00\x3d\x00\x3e\x00\x62\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x50\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x5c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x4c\x00\x4d\x00\x24\x00\x25\x00\x26\x00\x51\x00\x28\x00\x29\x00\x2a\x00\x62\x00\x09\x00\x57\x00\x0b\x00\x59\x00\x5d\x00\x5b\x00\x0f\x00\x62\x00\x09\x00\x50\x00\x13\x00\x14\x00\x62\x00\x50\x00\x5c\x00\x61\x00\x11\x00\x61\x00\x61\x00\x4c\x00\x4d\x00\x1e\x00\x1f\x00\x20\x00\x51\x00\x22\x00\x23\x00\x24\x00\x48\x00\x61\x00\x57\x00\x4b\x00\x59\x00\x4d\x00\x5b\x00\x61\x00\x61\x00\x51\x00\x52\x00\x30\x00\x54\x00\x62\x00\x64\x00\x57\x00\x61\x00\x59\x00\x2f\x00\x5b\x00\x61\x00\x61\x00\x57\x00\x34\x00\x60\x00\x62\x00\x62\x00\x63\x00\x57\x00\x65\x00\x01\x00\x02\x00\x3d\x00\x3e\x00\x05\x00\x57\x00\x07\x00\x08\x00\x4e\x00\x5c\x00\x53\x00\x50\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x64\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x09\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x0f\x00\x64\x00\x24\x00\x25\x00\x26\x00\x08\x00\x28\x00\x29\x00\x2a\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x11\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x64\x00\x09\x00\x1b\x00\x64\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x11\x00\x64\x00\x24\x00\x64\x00\x26\x00\x64\x00\x28\x00\x48\x00\x64\x00\x61\x00\x4b\x00\x64\x00\x4d\x00\x61\x00\x61\x00\x61\x00\x51\x00\x52\x00\x61\x00\x54\x00\x61\x00\x61\x00\x57\x00\x61\x00\x59\x00\x64\x00\x5b\x00\x61\x00\x54\x00\x4f\x00\x2f\x00\x60\x00\x50\x00\x62\x00\x63\x00\x34\x00\x65\x00\x2c\x00\x48\x00\x5d\x00\x4f\x00\x4b\x00\x4c\x00\x4d\x00\x3d\x00\x3e\x00\x09\x00\x51\x00\x52\x00\x5d\x00\x54\x00\x08\x00\x58\x00\x57\x00\x11\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5c\x00\x11\x00\x58\x00\x5c\x00\x2c\x00\x62\x00\x63\x00\x2c\x00\x65\x00\x50\x00\x62\x00\x1b\x00\x50\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x62\x00\x61\x00\x24\x00\x64\x00\x26\x00\x08\x00\x28\x00\x2f\x00\x09\x00\x64\x00\x61\x00\x53\x00\x61\x00\x53\x00\x11\x00\x61\x00\x11\x00\x64\x00\x61\x00\x3b\x00\x64\x00\x3d\x00\x3e\x00\x64\x00\x1b\x00\x64\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x64\x00\x64\x00\x24\x00\x64\x00\x26\x00\x64\x00\x28\x00\x48\x00\x53\x00\x61\x00\x4b\x00\x4c\x00\x4d\x00\x53\x00\x2f\x00\x2f\x00\x51\x00\x52\x00\x2d\x00\x54\x00\x34\x00\x53\x00\x57\x00\x53\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x56\x00\x3d\x00\x3e\x00\x62\x00\x4e\x00\x62\x00\x63\x00\x5c\x00\x65\x00\x50\x00\x48\x00\x5c\x00\x2d\x00\x09\x00\x4c\x00\x4d\x00\x53\x00\x0b\x00\x0b\x00\x51\x00\x52\x00\x11\x00\x54\x00\x5b\x00\x08\x00\x57\x00\x23\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x53\x00\x56\x00\x11\x00\x62\x00\x5d\x00\x62\x00\x63\x00\x16\x00\x65\x00\x5d\x00\x62\x00\x5d\x00\x1b\x00\x5d\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x5d\x00\x2f\x00\x24\x00\x65\x00\x26\x00\x08\x00\x28\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x3b\x00\x11\x00\x3d\x00\x3e\x00\x62\x00\x5d\x00\x58\x00\x5e\x00\x5d\x00\x5d\x00\x09\x00\x1b\x00\x0a\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x11\x00\x4f\x00\x24\x00\x58\x00\x26\x00\x58\x00\x28\x00\x48\x00\x5c\x00\x4f\x00\x5c\x00\x4c\x00\x4d\x00\x5c\x00\x66\x00\x53\x00\x51\x00\x52\x00\x50\x00\x54\x00\x56\x00\x66\x00\x57\x00\x58\x00\x59\x00\x62\x00\x5b\x00\x56\x00\x23\x00\x5d\x00\x2f\x00\x66\x00\x55\x00\x62\x00\x63\x00\x34\x00\x65\x00\x5d\x00\x48\x00\xff\xff\xff\xff\xff\xff\x4c\x00\x4d\x00\x3d\x00\x3e\x00\xff\xff\x51\x00\x52\x00\xff\xff\x54\x00\x08\x00\xff\xff\x57\x00\xff\xff\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\x11\x00\xff\xff\xff\xff\x09\x00\x62\x00\x63\x00\xff\xff\x65\x00\xff\xff\x0f\x00\x1b\x00\xff\xff\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\xff\xff\xff\xff\x24\x00\xff\xff\x26\x00\x08\x00\x28\x00\x1e\x00\x1f\x00\x20\x00\xff\xff\x22\x00\x23\x00\x24\x00\x11\x00\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\xff\xff\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\xff\xff\xff\xff\x24\x00\xff\xff\x26\x00\xff\xff\x28\x00\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4d\x00\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\xff\xff\x54\x00\xff\xff\xff\xff\x57\x00\xff\xff\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x62\x00\x63\x00\xff\xff\x65\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4d\x00\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x08\x00\x54\x00\xff\xff\xff\xff\x57\x00\x58\x00\x59\x00\xff\xff\x5b\x00\x11\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x62\x00\x63\x00\xff\xff\x65\x00\x1b\x00\xff\xff\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\xff\xff\xff\xff\x24\x00\xff\xff\x26\x00\x08\x00\x28\x00\xff\xff\xff\xff\xff\xff\x4c\x00\x4d\x00\xff\xff\xff\xff\x11\x00\x51\x00\xff\xff\x53\x00\xff\xff\xff\xff\xff\xff\x57\x00\xff\xff\x59\x00\x1b\x00\x5b\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\xff\xff\x62\x00\x24\x00\xff\xff\x26\x00\xff\xff\x28\x00\x48\x00\xff\xff\xff\xff\x4c\x00\x4d\x00\x4d\x00\xff\xff\xff\xff\x51\x00\x51\x00\x52\x00\xff\xff\x54\x00\xff\xff\x57\x00\x57\x00\x59\x00\x59\x00\x5b\x00\x5b\x00\x5c\x00\xff\xff\xff\xff\xff\xff\x60\x00\x62\x00\x62\x00\x63\x00\xff\xff\x65\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4d\x00\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\xff\xff\x54\x00\xff\xff\x08\x00\x57\x00\xff\xff\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\xff\xff\x11\x00\xff\xff\xff\xff\x62\x00\x63\x00\x16\x00\x65\x00\xff\xff\xff\xff\xff\xff\x1b\x00\xff\xff\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\xff\xff\xff\xff\x24\x00\xff\xff\x26\x00\x08\x00\x28\x00\xff\xff\xff\xff\xff\xff\x4c\x00\x4d\x00\xff\xff\xff\xff\x11\x00\x51\x00\xff\xff\x53\x00\xff\xff\xff\xff\xff\xff\x57\x00\xff\xff\x59\x00\x1b\x00\x5b\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\xff\xff\x62\x00\x24\x00\xff\xff\x26\x00\xff\xff\x28\x00\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4d\x00\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\xff\xff\x54\x00\xff\xff\xff\xff\x57\x00\x58\x00\x59\x00\xff\xff\x5b\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x62\x00\x63\x00\xff\xff\x65\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\x4c\x00\x4d\x00\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\xff\xff\x54\x00\x08\x00\xff\xff\x57\x00\xff\xff\x59\x00\xff\xff\x5b\x00\x5c\x00\xff\xff\x11\x00\xff\xff\xff\xff\xff\xff\x62\x00\x63\x00\xff\xff\x65\x00\xff\xff\xff\xff\x1b\x00\xff\xff\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\xff\xff\xff\xff\x24\x00\xff\xff\x26\x00\x08\x00\x28\x00\xff\xff\xff\xff\xff\xff\x4c\x00\x4d\x00\xff\xff\xff\xff\x11\x00\x51\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x57\x00\xff\xff\x59\x00\x1b\x00\x5b\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\xff\xff\x62\x00\x24\x00\xff\xff\x26\x00\xff\xff\x28\x00\x48\x00\xff\xff\xff\xff\xff\xff\x4c\x00\x4d\x00\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\xff\xff\x54\x00\xff\xff\xff\xff\x57\x00\x58\x00\x59\x00\xff\xff\x5b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x62\x00\x63\x00\xff\xff\x65\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\x4c\x00\x4d\x00\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\xff\xff\x54\x00\x08\x00\xff\xff\x57\x00\xff\xff\x59\x00\xff\xff\x5b\x00\x5c\x00\xff\xff\x11\x00\xff\xff\xff\xff\xff\xff\x62\x00\x63\x00\xff\xff\x65\x00\xff\xff\xff\xff\x1b\x00\xff\xff\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\xff\xff\xff\xff\x24\x00\xff\xff\x26\x00\x08\x00\x28\x00\xff\xff\xff\xff\xff\xff\x4c\x00\x4d\x00\xff\xff\xff\xff\x11\x00\x51\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x57\x00\xff\xff\x59\x00\x1b\x00\x5b\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\xff\xff\x62\x00\x24\x00\xff\xff\x26\x00\xff\xff\x28\x00\x48\x00\xff\xff\xff\xff\xff\xff\x4c\x00\x4d\x00\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\xff\xff\x54\x00\xff\xff\xff\xff\x57\x00\x58\x00\x59\x00\xff\xff\x5b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x62\x00\x63\x00\xff\xff\x65\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4d\x00\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\x54\x00\x08\x00\x56\x00\x57\x00\xff\xff\x59\x00\xff\xff\x5b\x00\xff\xff\xff\xff\x11\x00\xff\xff\xff\xff\xff\xff\x62\x00\x63\x00\xff\xff\x65\x00\xff\xff\xff\xff\x1b\x00\xff\xff\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\xff\xff\xff\xff\x24\x00\xff\xff\x26\x00\x08\x00\x28\x00\xff\xff\xff\xff\xff\xff\x4c\x00\x4d\x00\xff\xff\xff\xff\x11\x00\x51\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x57\x00\xff\xff\x59\x00\x1b\x00\x5b\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\xff\xff\x62\x00\x24\x00\xff\xff\x26\x00\xff\xff\x28\x00\x48\x00\xff\xff\xff\xff\xff\xff\x4c\x00\x4d\x00\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\xff\xff\x54\x00\xff\xff\xff\xff\x57\x00\xff\xff\x59\x00\xff\xff\x5b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x62\x00\x63\x00\xff\xff\x65\x00\xff\xff\x48\x00\xff\xff\xff\xff\x4c\x00\x4d\x00\x4d\x00\xff\xff\xff\xff\x51\x00\x51\x00\x52\x00\x08\x00\x54\x00\xff\xff\x57\x00\x57\x00\x59\x00\x59\x00\x5b\x00\x5b\x00\x11\x00\xff\xff\xff\xff\xff\xff\x60\x00\x62\x00\x62\x00\x63\x00\xff\xff\x65\x00\x1b\x00\xff\xff\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\xff\xff\xff\xff\x24\x00\xff\xff\x26\x00\x08\x00\x28\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x11\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\xff\xff\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\xff\xff\xff\xff\x24\x00\xff\xff\x26\x00\xff\xff\x28\x00\x48\x00\xff\xff\xff\xff\xff\xff\x4c\x00\x4d\x00\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\xff\xff\x54\x00\xff\xff\xff\xff\x57\x00\xff\xff\x59\x00\xff\xff\x5b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x62\x00\x63\x00\xff\xff\x65\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4d\x00\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\xff\xff\x54\x00\x08\x00\xff\xff\x57\x00\xff\xff\x59\x00\xff\xff\x5b\x00\x5c\x00\xff\xff\x11\x00\xff\xff\xff\xff\xff\xff\x62\x00\x63\x00\xff\xff\x65\x00\xff\xff\xff\xff\x1b\x00\xff\xff\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\xff\xff\xff\xff\x24\x00\xff\xff\x26\x00\x08\x00\x28\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x11\x00\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\xff\xff\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\xff\xff\xff\xff\x24\x00\xff\xff\x26\x00\xff\xff\x28\x00\x48\x00\xff\xff\xff\xff\xff\xff\x4c\x00\x4d\x00\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\xff\xff\x54\x00\xff\xff\xff\xff\x57\x00\xff\xff\x59\x00\xff\xff\x5b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x62\x00\x63\x00\xff\xff\x65\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4d\x00\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x08\x00\x54\x00\xff\xff\xff\xff\x57\x00\xff\xff\x59\x00\xff\xff\x5b\x00\x11\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x62\x00\x63\x00\xff\xff\x65\x00\x1b\x00\xff\xff\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\xff\xff\xff\xff\x24\x00\xff\xff\x26\x00\x08\x00\x28\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x11\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\xff\xff\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\xff\xff\xff\xff\x24\x00\xff\xff\x26\x00\xff\xff\x28\x00\x48\x00\xff\xff\xff\xff\xff\xff\x4c\x00\x4d\x00\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\xff\xff\x54\x00\xff\xff\xff\xff\x57\x00\xff\xff\x59\x00\xff\xff\x5b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x62\x00\x63\x00\xff\xff\x65\x00\xff\xff\x48\x00\xff\xff\xff\xff\x4b\x00\xff\xff\x4d\x00\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x08\x00\x54\x00\xff\xff\xff\xff\x57\x00\xff\xff\x59\x00\xff\xff\x5b\x00\x11\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x62\x00\x63\x00\xff\xff\x65\x00\x1b\x00\xff\xff\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\xff\xff\xff\xff\x24\x00\xff\xff\x26\x00\x08\x00\x28\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x11\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\xff\xff\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\xff\xff\xff\xff\x24\x00\xff\xff\x26\x00\xff\xff\x28\x00\x48\x00\xff\xff\xff\xff\xff\xff\x4c\x00\x4d\x00\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\xff\xff\x54\x00\xff\xff\xff\xff\x57\x00\xff\xff\x59\x00\xff\xff\x5b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x62\x00\x63\x00\xff\xff\x65\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4d\x00\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\xff\xff\x54\x00\xff\xff\xff\xff\x57\x00\xff\xff\x59\x00\xff\xff\x5b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x62\x00\x63\x00\x1b\x00\x65\x00\x1d\x00\x1e\x00\xff\xff\x20\x00\x21\x00\xff\xff\xff\xff\x24\x00\xff\xff\xff\xff\xff\xff\x28\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\xff\xff\x1d\x00\x1e\x00\xff\xff\x20\x00\x21\x00\xff\xff\xff\xff\x24\x00\xff\xff\xff\xff\xff\xff\x28\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4d\x00\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\xff\xff\xff\xff\xff\xff\xff\xff\x57\x00\xff\xff\x59\x00\xff\xff\x5b\x00\xff\xff\xff\xff\xff\xff\x48\x00\xff\xff\xff\xff\x62\x00\x63\x00\x4d\x00\x65\x00\xff\xff\xff\xff\x51\x00\x52\x00\xff\xff\xff\xff\xff\xff\xff\xff\x57\x00\xff\xff\x59\x00\xff\xff\x5b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x62\x00\x63\x00\x1b\x00\x65\x00\x1d\x00\x1e\x00\xff\xff\x20\x00\x21\x00\xff\xff\xff\xff\x24\x00\xff\xff\xff\xff\xff\xff\x28\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\xff\xff\x1d\x00\x1e\x00\xff\xff\x20\x00\x21\x00\xff\xff\xff\xff\x24\x00\xff\xff\xff\xff\xff\xff\x28\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4d\x00\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\xff\xff\xff\xff\xff\xff\xff\xff\x57\x00\xff\xff\x59\x00\xff\xff\x5b\x00\xff\xff\xff\xff\xff\xff\x48\x00\xff\xff\xff\xff\x62\x00\x63\x00\x4d\x00\x65\x00\xff\xff\xff\xff\x51\x00\x52\x00\xff\xff\xff\xff\xff\xff\xff\xff\x57\x00\xff\xff\x59\x00\xff\xff\x5b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x62\x00\x63\x00\x1b\x00\x65\x00\x1d\x00\x1e\x00\xff\xff\x20\x00\x21\x00\xff\xff\xff\xff\x24\x00\xff\xff\xff\xff\xff\xff\x28\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\xff\xff\x1d\x00\x1e\x00\xff\xff\x20\x00\x21\x00\xff\xff\xff\xff\x24\x00\xff\xff\xff\xff\xff\xff\x28\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4d\x00\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\xff\xff\xff\xff\xff\xff\xff\xff\x57\x00\xff\xff\x59\x00\xff\xff\x5b\x00\xff\xff\xff\xff\xff\xff\x48\x00\xff\xff\xff\xff\x62\x00\x63\x00\x4d\x00\x65\x00\xff\xff\xff\xff\x51\x00\x52\x00\xff\xff\xff\xff\xff\xff\xff\xff\x57\x00\xff\xff\x59\x00\xff\xff\x5b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x62\x00\x63\x00\x1b\x00\x65\x00\x1d\x00\x1e\x00\xff\xff\x20\x00\x21\x00\xff\xff\xff\xff\x24\x00\xff\xff\xff\xff\xff\xff\x28\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\xff\xff\x1d\x00\x1e\x00\xff\xff\x20\x00\x21\x00\xff\xff\xff\xff\x24\x00\xff\xff\xff\xff\xff\xff\x28\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4d\x00\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\xff\xff\xff\xff\xff\xff\xff\xff\x57\x00\xff\xff\x59\x00\xff\xff\x5b\x00\xff\xff\xff\xff\xff\xff\x48\x00\xff\xff\xff\xff\x62\x00\x63\x00\x4d\x00\x65\x00\xff\xff\xff\xff\x51\x00\x52\x00\xff\xff\x09\x00\xff\xff\xff\xff\x57\x00\xff\xff\x59\x00\x0f\x00\x5b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x15\x00\xff\xff\x62\x00\x63\x00\xff\xff\x65\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x09\x00\x31\x00\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\xff\xff\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\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\xff\xff\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x09\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\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\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x09\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\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\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x09\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\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\xff\xff\x1e\x00\x1f\x00\x20\x00\xff\xff\x22\x00\x23\x00\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\x29\x00\x2a\x00\x2b\x00\x09\x00\xff\xff\x0b\x00\xff\xff\x30\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\xff\xff\x1e\x00\x1f\x00\x20\x00\xff\xff\x22\x00\x23\x00\x24\x00\x1e\x00\x1f\x00\x20\x00\x09\x00\x22\x00\x23\x00\x24\x00\xff\xff\xff\xff\x0f\x00\x09\x00\x30\x00\xff\xff\x13\x00\x14\x00\xff\xff\x0f\x00\xff\xff\x30\x00\xff\xff\x13\x00\x14\x00\xff\xff\xff\xff\x1e\x00\x1f\x00\x20\x00\xff\xff\x22\x00\x23\x00\x24\x00\x1e\x00\x1f\x00\x20\x00\x09\x00\x22\x00\x23\x00\x24\x00\xff\xff\xff\xff\x0f\x00\x09\x00\x30\x00\xff\xff\x13\x00\x14\x00\xff\xff\x0f\x00\xff\xff\x30\x00\xff\xff\x13\x00\x14\x00\xff\xff\xff\xff\x1e\x00\x1f\x00\x20\x00\xff\xff\x22\x00\x23\x00\x24\x00\x1e\x00\x1f\x00\x20\x00\x09\x00\x22\x00\x23\x00\x24\x00\xff\xff\xff\xff\x0f\x00\x09\x00\x30\x00\xff\xff\x13\x00\x14\x00\xff\xff\x0f\x00\xff\xff\x30\x00\xff\xff\x13\x00\x14\x00\xff\xff\xff\xff\x1e\x00\x1f\x00\x20\x00\xff\xff\x22\x00\x23\x00\x24\x00\x1e\x00\x1f\x00\x20\x00\x09\x00\x22\x00\x23\x00\x24\x00\xff\xff\xff\xff\x0f\x00\x09\x00\x30\x00\xff\xff\x13\x00\x14\x00\xff\xff\x0f\x00\xff\xff\x30\x00\xff\xff\x13\x00\x14\x00\xff\xff\xff\xff\x1e\x00\x1f\x00\x20\x00\xff\xff\x22\x00\x23\x00\x24\x00\x1e\x00\x1f\x00\x20\x00\x09\x00\x22\x00\x23\x00\x24\x00\xff\xff\xff\xff\x0f\x00\x09\x00\x30\x00\xff\xff\x13\x00\x14\x00\xff\xff\x0f\x00\xff\xff\x30\x00\xff\xff\x13\x00\x14\x00\xff\xff\xff\xff\x1e\x00\x1f\x00\x20\x00\xff\xff\x22\x00\x23\x00\x24\x00\x1e\x00\x1f\x00\x20\x00\xff\xff\x22\x00\x23\x00\x24\x00\x09\x00\xff\xff\x0b\x00\xff\xff\x30\x00\xff\xff\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\xff\xff\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\x24\x00\x09\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0f\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\xff\xff\xff\xff\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\x24\x00\x09\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0f\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\xff\xff\xff\xff\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\x24\x00\x09\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0f\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\xff\xff\xff\xff\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\x24\x00\x09\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0f\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\xff\xff\xff\xff\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\x24\x00\x09\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0f\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\xff\xff\xff\xff\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\x24\x00\x09\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0f\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\xff\xff\xff\xff\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\x24\x00\x09\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0f\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\xff\xff\xff\xff\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\x24\x00\x09\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0f\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\xff\xff\xff\xff\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\x24\x00\x09\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0f\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\xff\xff\xff\xff\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\x24\x00\x09\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0f\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\xff\xff\xff\xff\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\x24\x00\x09\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0f\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\xff\xff\xff\xff\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\x24\x00\x09\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0f\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\xff\xff\xff\xff\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\x24\x00\x09\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0f\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\xff\xff\xff\xff\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\x24\x00\x09\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0f\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\xff\xff\xff\xff\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\x24\x00\x09\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0f\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\xff\xff\xff\xff\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\x24\x00\x09\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0f\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\xff\xff\xff\xff\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\x24\x00\x09\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0f\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\xff\xff\xff\xff\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\x24\x00\x09\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0f\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\xff\xff\xff\xff\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\x24\x00\x09\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0f\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\xff\xff\xff\xff\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\x24\x00\x09\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0f\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\xff\xff\xff\xff\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\x24\x00\x09\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0f\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\xff\xff\xff\xff\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\x24\x00\x09\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0f\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\xff\xff\xff\xff\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\x24\x00\x09\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0f\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\xff\xff\xff\xff\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\x24\x00\x09\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0f\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\xff\xff\xff\xff\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\x24\x00\x09\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0f\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\xff\xff\xff\xff\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\x24\x00\x09\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0f\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\xff\xff\xff\xff\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\x24\x00\x09\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0f\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\xff\xff\xff\xff\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\x24\x00\x09\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0f\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x09\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0f\x00\xff\xff\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xd9\x01\xb4\x01\x7d\x02\xe1\x01\x08\x00\xc6\x02\xe2\x01\x8e\x02\xe3\x01\xe8\x02\x09\x00\x84\x02\x90\x01\xf7\x01\x08\x00\xa0\x02\x04\x02\xdb\x01\x35\x03\xe3\x02\x09\x00\xa3\x02\x04\x02\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x36\x03\x39\x02\x94\x02\x56\x02\x0d\x00\x0e\x00\x5c\x01\x10\x00\x11\x00\x12\x00\x2c\x00\x8f\x02\x26\x02\xa1\x01\x85\x02\x2c\x00\x2d\x00\x9e\x01\xa1\x02\x2c\x00\xb0\x01\x2d\x00\xb7\x02\x2a\x00\xa4\x02\x2d\x00\xb7\x02\x57\x02\x58\x02\x59\x02\x2a\x00\x2b\x00\xb1\x00\x9d\x01\xd9\x02\x3c\x02\xe1\x01\xb1\x01\x13\x00\xe2\x01\x66\x01\xe3\x01\x08\x00\x27\x02\x68\x00\xe4\x01\xe9\x02\x69\x00\x09\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\xf8\x01\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x2a\x00\x10\x00\x11\x00\xf2\x01\x2d\x03\xdb\x01\xb1\x00\x4f\x00\x7a\x00\x4f\x01\xb5\x01\x7b\x00\x7c\x00\xdc\x01\x6a\x01\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x08\x00\xae\x02\xe5\x01\x2a\x00\x2b\x00\x60\x01\x09\x00\x08\x00\x9f\x01\xf9\x01\x02\x03\x4d\x01\x67\x00\x09\x00\xb8\x02\xb1\x01\x0e\x03\x40\x00\x45\x01\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x5b\x01\x0d\x00\x0e\x00\x5c\x01\x10\x00\x11\x00\x12\x00\x08\x00\x04\x03\x68\x00\x08\x00\x5a\xff\xb0\x01\x09\x00\x08\x00\xd1\x01\x09\x00\x08\x00\x44\x00\x5a\xff\x09\x00\xc2\x02\xb1\x00\x09\x00\x5d\x01\x5e\x01\xc3\x02\x5f\x01\xdc\x01\xb1\x01\xeb\x01\x90\x02\x10\x00\x11\x00\xf2\x01\x10\x00\x11\x00\xf2\x01\x13\x00\x10\x00\x11\x00\xf2\x01\x08\x00\x95\x01\x68\x00\x90\x01\xf7\x01\x69\x00\x09\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x94\x01\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\xcd\x01\x10\x00\x11\x00\xf2\x01\x41\x02\x2a\x00\x2e\x03\x4f\x00\x7a\x00\xd8\x00\x34\x03\x7b\x00\x7c\x00\x5e\x02\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x08\x00\x8b\x02\x60\x01\x16\x03\xa7\x02\xde\x02\x09\x00\x08\x00\xf3\x01\xbe\x02\xb1\x00\x9a\x00\x9b\x00\x09\x00\x99\x02\xa2\x01\x9a\x02\x39\x02\xb2\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x56\x02\x0d\x00\x0e\x00\x5c\x01\x10\x00\x11\x00\x12\x00\xde\x02\x3f\x02\xb1\x00\xca\x02\x4f\x02\x4a\x00\x08\x00\x4b\x00\xcd\x01\xbd\x00\xeb\x01\xec\x01\x09\x00\xc9\x00\x3a\x02\x3b\x02\x3c\x02\x57\x02\x58\x02\x5a\x02\x04\x02\x60\x02\xb0\x01\x50\x02\xca\x00\xcb\x00\x2a\x00\xcc\x00\xcd\x00\x51\x02\x19\x03\x13\x00\xc4\x00\xdf\x02\xe0\x02\xe1\x02\x34\x02\x68\x00\x52\x02\xb1\x01\x69\x00\x1c\x03\x6a\x00\x6b\x00\x6c\x00\x6d\x00\xf4\x02\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x69\xff\xe7\x01\x18\x03\x2c\x00\xdf\x02\xe9\x02\xe1\x02\x4f\x00\x7a\x00\x2d\x00\xcf\x01\x7b\x00\x7c\x00\x69\xff\xde\x02\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\xa1\x01\x1d\x03\x60\x01\x08\x00\xb1\x00\xf5\x02\xf6\x02\xf7\x02\xf8\x02\x09\x00\xe3\x02\xf9\x02\xb2\x00\x63\x00\x2c\x00\x1f\x03\x64\x00\x2a\x00\xe8\x01\xe9\x01\x2d\x00\x9b\x01\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\xea\x01\x23\x03\xeb\x01\xdf\x02\x20\x03\x2b\x03\x82\x02\xe3\x02\x08\x00\x2a\x00\xb1\x00\x6d\x01\x27\x03\x01\x02\x09\x00\x02\x02\xf5\x01\x03\x02\xeb\x01\xed\x01\x4b\x00\xb1\x01\x0f\x03\x28\x03\x04\x02\x6f\x01\xcd\x00\x5a\xff\x08\x03\x64\x01\x0d\x00\x0e\x00\xf3\x02\x10\x00\x11\x00\x47\x01\x0a\x03\x5a\xff\x13\x00\x5a\xff\xb3\x02\x2c\x03\xe5\x02\xe6\x02\x68\x00\x1a\x03\x1b\x03\x69\x00\x4e\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\xf4\x02\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x97\x02\xf6\x01\x98\x02\xe4\x02\xe5\x02\xe6\x02\x95\x02\x4f\x00\x7a\x00\x2a\x00\xe1\x01\x7b\x00\x7c\x00\x91\x02\xb5\x02\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x4f\x00\x50\x00\xbb\x02\x08\x00\xcd\x01\xc4\x02\x31\x03\xf7\x02\xf8\x02\x09\x00\xb1\x00\x32\x03\x4a\x00\x50\x01\x4b\x00\x4a\x00\xc0\x02\x4b\x00\xb2\x00\x2d\x00\x51\x01\xc8\x02\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x08\x00\x80\x02\xfe\x01\x01\x02\xff\x01\x02\x02\x09\x00\x03\x02\xd3\x02\x08\x00\x52\x01\x53\x01\x54\x01\x55\x01\x04\x02\x09\x00\x56\x01\xdd\x01\xd4\x02\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x3a\x00\x5d\x00\x8c\x02\xdf\x01\xcd\x00\xd4\x00\x10\x00\x11\x00\xc3\x00\xb1\x00\x13\x00\x5e\x00\x5c\x02\x5f\x00\x08\x00\x60\x00\x68\x00\xeb\x01\xee\x01\x69\x00\x09\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x5e\x02\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x13\x00\x10\x00\x11\x00\x3e\x01\xec\x02\xed\x02\x60\x02\x4f\x00\x7a\x00\x14\x00\xe1\x01\x7b\x00\x7c\x00\x91\x02\x92\x02\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x08\x00\xb1\x00\xf0\x02\xed\x02\xb1\x00\x61\x02\x09\x00\x2c\x00\x62\x02\xb2\x00\x08\x00\x4d\x01\xb2\x00\x2d\x00\x2e\x00\x65\x02\x09\x00\xb1\x01\xaa\x02\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x31\x00\x32\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x33\x00\x10\x00\x11\x00\x12\x00\x08\x00\xdd\x01\xb1\x01\xac\x02\xdd\x01\x08\x00\x09\x00\x34\x00\x35\x00\x36\x00\x37\x00\x09\x00\x90\x01\xaf\x02\xa1\x02\xdf\x01\xcd\x00\xa4\x02\xdf\x01\xcd\x00\x38\x02\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x59\x01\x10\x00\x11\x00\xc3\x00\xe1\x01\x68\x00\x66\x02\xe2\x01\x69\x00\x10\x03\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x38\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\x15\x03\x49\x02\x4a\x02\x4b\x02\x4c\x02\x4d\x02\xe1\x01\x4f\x00\x7a\x00\x91\x02\x94\x02\x7b\x00\x7c\x00\xb1\x01\xb6\x02\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x08\x00\xb1\x00\x90\x01\xb0\x02\x08\x00\x67\x02\x09\x00\x50\x01\xb1\x00\xb2\x00\x09\x00\xdc\x01\xe1\x01\x2d\x00\x51\x01\xe2\x01\xb2\x00\x11\x03\x69\x02\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\xc2\x00\x10\x00\x11\x00\xc3\x00\x90\x01\xb1\x02\xe8\x01\xe9\x01\x52\x02\x54\x01\x55\x01\xb3\x00\x6a\x02\x56\x01\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xdd\x01\xea\x01\x68\x01\xeb\x01\xba\x01\x6b\x02\xbb\x01\xb8\x00\xb9\x00\x6e\x02\x2a\x00\xbd\x00\x6c\x02\xde\x01\xdf\x01\xcd\x00\x74\x02\x68\x01\x95\x02\x69\x01\x13\x00\x6a\x01\xe1\x01\x9a\x02\x08\x00\xe2\x01\x68\x00\x12\x03\x2a\x00\x69\x00\x09\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\xd2\x01\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\xd5\x01\x10\x00\x11\x00\x54\x00\x90\x01\xb2\x02\xb1\x00\x4f\x00\x7a\x00\xb1\x01\xb9\x02\x7b\x00\x7c\x00\xf1\x01\xb2\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x08\x00\xdd\x01\x7a\x02\x7b\x02\x0c\x02\xe1\x01\x09\x00\x08\x00\xe2\x01\x09\x02\x13\x03\x4d\x01\x4b\x00\x09\x00\xe0\x01\xdf\x01\xcd\x00\x12\x02\x4c\x00\x32\x00\x0b\x00\x4d\x00\x0d\x00\x0e\x00\x33\x00\x10\x00\x11\x00\x12\x00\x30\x02\x0d\x00\x0e\x00\x31\x02\x10\x00\x11\x00\x12\x00\x34\x00\x35\x00\x36\x00\x37\x00\x0b\x02\x4e\x00\xdb\x01\x9d\x00\x9e\x00\x7d\x02\x7e\x02\x9f\x00\xe1\x01\xa0\x00\x16\x00\xe2\x01\x80\xfe\x06\x03\x11\x02\xa1\x00\xa2\x00\xa3\x00\xa4\x00\x17\x00\xa5\x00\xa6\x00\xa7\x00\x14\x02\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\x18\x00\x19\x02\x19\x00\x1a\x00\x1b\x00\x1c\x00\xad\x00\x85\x02\x86\x02\x1e\x00\xae\x00\x1f\x00\x32\x02\x20\x00\xaf\x00\xb0\x00\x08\x00\x1b\x02\xe1\x01\xbd\x00\x1c\x02\xe2\x01\x09\x00\x07\x03\x1d\x02\x59\x00\x1e\x02\x6c\x01\x4b\x00\x6d\x01\x9b\x02\x9c\x02\xb1\x00\x4f\x00\x50\x00\x34\x02\x2a\x00\x64\x01\x0d\x00\x0e\x00\xb2\x00\x10\x00\x11\x00\x47\x01\xe1\x01\x21\x00\x1f\x02\xe2\x01\x22\x00\x9e\x02\x23\x00\xb1\x01\xa5\x02\x20\x02\x24\x00\x25\x00\xc0\x01\x26\x00\x21\x02\x59\x00\x27\x00\x5a\x00\x28\x00\x5b\x00\x29\x00\xb1\x01\xa6\x02\xdc\x01\x22\x02\xb1\x00\xdd\x01\x2a\x00\x2b\x00\x23\x02\x2c\x00\x9d\x00\x9e\x00\x90\x01\x07\x02\x9f\x00\x36\x02\xa0\x00\x16\x00\xef\x01\xdf\x01\xcd\x00\x37\x02\xa1\x00\xa2\x00\xa3\x00\xa4\x00\x17\x00\xa5\x00\xa6\x00\xa7\x00\x43\x02\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\x18\x00\x44\x02\x19\x00\x1a\x00\x1b\x00\x1c\x00\xad\x00\x90\x01\x91\x01\x1e\x00\xae\x00\x1f\x00\x08\x00\x20\x00\xaf\x00\xb0\x00\x90\x01\x92\x01\x09\x00\xfc\x01\xfd\x01\xfe\x01\x40\x01\xff\x01\x4b\x00\x01\x03\x49\x02\x4a\x02\x4b\x02\x4c\x02\x4d\x02\xbb\x00\xbc\x00\x64\x01\x0d\x00\x0e\x00\xbd\x00\x10\x00\x11\x00\x47\x01\xb1\x01\xb2\x01\x5e\x00\x44\x01\xcf\x00\x21\x00\xd0\x00\x5a\x01\x22\x00\x94\x01\x23\x00\x96\x01\xbd\x01\x2a\x00\x24\x00\x25\x00\x97\x01\x26\x00\x5b\x00\x37\x00\x27\x00\x9a\x01\x28\x00\xa3\x01\x29\x00\x3f\x00\x07\x00\x24\xfe\x99\x01\xb1\x00\x9d\x01\x2a\x00\x2b\x00\xa1\x01\x2c\x00\x24\xfe\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\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\x25\x01\x26\x01\x27\x01\x28\x01\x29\x01\x2a\x01\x2b\x01\x2c\x01\x2d\x01\x2e\x01\x2f\x01\x30\x01\x31\x01\x32\x01\x33\x01\x34\x01\x35\x01\x36\x01\x37\x01\x38\x01\x39\x01\x3a\x01\x3b\x01\x3c\x01\x3d\x01\x3e\x01\x9d\x00\x9e\x00\xfb\x02\xfc\x02\x9f\x00\xfd\x02\xa0\x00\x16\x00\xa2\x01\x80\xfe\xa5\x01\xfe\x02\xa1\x00\xa2\x00\xa3\x00\xff\x02\x17\x00\xa5\x00\xa6\x00\xa7\x00\x00\x03\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\x18\x00\xa6\x01\x19\x00\x1a\x00\x1b\x00\x1c\x00\xad\x00\x2a\x00\x2b\x00\x1e\x00\xae\x00\x1f\x00\x08\x00\x20\x00\xaf\x00\xb0\x00\xd2\x00\xd3\x00\x09\x00\x2a\x00\x2b\x00\xa7\x01\x40\x00\x41\x00\x03\x03\x49\x02\x4a\x02\x4b\x02\x4c\x02\x4d\x02\xa9\x01\xaa\x01\xb1\x00\x46\x01\x0d\x00\x0e\x00\xab\x01\x10\x00\x11\x00\x47\x01\xb2\x00\xac\x01\xae\x01\xc1\x01\xc8\x01\x21\x00\xc9\x01\x65\x00\x22\x00\xc6\x00\x23\x00\xbe\x01\xc7\x00\xc0\x00\x24\x00\x25\x00\xd0\x00\x26\x00\xd5\x00\xd8\x00\x27\x00\x07\x00\x28\x00\x38\x03\x29\x00\x2a\x00\x2f\x00\xe8\x02\x2a\x00\xb1\x00\xdd\x01\x2a\x00\x2b\x00\x30\x03\x2c\x00\x9d\x00\x9e\x00\xfb\x02\xfc\x02\x9f\x00\xfd\x02\xa0\x00\x16\x00\xf0\x01\xdf\x01\xcd\x00\xfe\x02\xa1\x00\xa2\x00\xa3\x00\xff\x02\x17\x00\xa5\x00\xa6\x00\xa7\x00\x00\x03\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\x18\x00\x31\x03\x19\x00\x1a\x00\x1b\x00\x1c\x00\xad\x00\xb4\x01\xc2\x02\x1e\x00\xae\x00\x1f\x00\x08\x00\x20\x00\xaf\x00\xb0\x00\x18\x03\x2a\x00\x09\x00\x1f\x03\x22\x03\x25\x03\x40\x00\x41\x00\xa8\x02\x49\x02\x4a\x02\x4b\x02\x4c\x02\x4d\x02\x23\x03\x04\x02\xb1\x00\x46\x01\x0d\x00\x0e\x00\x04\x02\x10\x00\x11\x00\x47\x01\xb2\x00\x26\x03\x27\x03\x2a\x00\x2b\x03\x21\x00\x2a\x03\xeb\x02\x22\x00\xec\x02\x23\x00\xbf\x01\xef\x02\xf0\x02\x24\x00\x25\x00\x01\x03\x26\x00\xf2\x02\xf3\x02\x27\x00\x0d\x03\x28\x00\x04\x02\x29\x00\x0e\x03\x0a\x03\xc8\x02\xcd\x02\xb1\x00\xdd\x01\x2a\x00\x2b\x00\x0c\x03\x2c\x00\x9d\x00\x9e\x00\xb4\x01\x34\x03\x9f\x00\xb4\x01\xa0\x00\x16\x00\xfa\x01\xdf\x01\xcd\x00\x2a\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\x17\x00\xa5\x00\xa6\x00\xa7\x00\xbb\x02\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\x18\x00\xb5\x02\x19\x00\x1a\x00\x1b\x00\x1c\x00\xad\x00\xbb\x00\xbc\x00\x1e\x00\xae\x00\x1f\x00\xbd\x00\x20\x00\xaf\x00\xb0\x00\x2a\x00\x08\x00\x71\x01\x28\x02\x72\x01\xc2\x02\x73\x01\x09\x00\x04\x02\xb1\x00\xc7\x02\x48\x01\x41\x00\x2a\x00\xcb\x02\xcc\x02\xce\x02\xb2\x00\xcf\x02\xd0\x02\xbb\x00\xbc\x00\x46\x01\x0d\x00\x0e\x00\xbd\x00\x10\x00\x11\x00\x47\x01\x21\x00\xd1\x02\x5e\x00\x22\x00\xcf\x00\x23\x00\xfc\x01\xd2\x02\xd3\x02\x24\x00\x25\x00\x48\x00\x26\x00\x2a\x00\x0e\x02\x27\x00\xd6\x02\x28\x00\x6d\x01\x29\x00\xd7\x02\xd8\x02\xdb\x02\x2a\x02\xb1\x00\x2a\x00\x2a\x00\x2b\x00\xdc\x02\x2c\x00\x9d\x00\x9e\x00\x6f\x01\xcd\x00\x9f\x00\xdd\x02\xa0\x00\x16\x00\x54\x02\x55\x02\x5c\x02\x41\x02\xa1\x00\xa2\x00\xa3\x00\xa4\x00\x17\x00\xa5\x00\xa6\x00\xa7\x00\x0b\x02\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\x18\x00\x08\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xad\x00\x09\x00\x0e\x02\x1e\x00\xae\x00\x1f\x00\x16\x00\x20\x00\xaf\x00\xb0\x00\xdd\x02\x4a\x02\x4b\x02\x4c\x02\x4d\x02\x17\x00\xd3\x00\x0d\x00\x0e\x00\xd4\x00\x10\x00\x11\x00\x12\x00\x64\x02\xb1\x00\x18\x00\x65\x02\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xb2\x00\x0e\x02\x1e\x00\x69\x02\x1f\x00\x0e\x02\x20\x00\x21\x00\x1b\x02\x6e\x02\x22\x00\x0e\x02\x23\x00\x70\x02\x71\x02\x72\x02\x24\x00\x25\x00\x73\x02\x26\x00\x74\x02\x76\x02\x27\x00\x77\x02\x28\x00\x0e\x02\x29\x00\x78\x02\x80\x02\x88\x02\x6d\x01\xb1\x00\x89\x02\x2a\x00\x2b\x00\x2b\x02\x2c\x00\x90\x02\x21\x00\xa9\x01\x9e\x02\x15\x03\x3a\x00\x3b\x00\x6f\x01\xcd\x00\xb1\x00\x24\x00\x25\x00\xb4\x01\x26\x00\x16\x00\xd2\x01\x3c\x00\xb2\x00\x3d\x00\x4a\x00\x3e\x00\x4b\x00\xd4\x01\x17\x00\xd5\x01\xd7\x01\xd8\x01\x2a\x00\x2b\x00\xd9\x01\x2c\x00\x06\x02\x2a\x00\x18\x00\x07\x02\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x2a\x00\x09\x02\x1e\x00\x0b\x02\x1f\x00\x16\x00\x20\x00\xc9\x00\xb1\x00\x0e\x02\x0f\x02\x14\xff\x10\x02\x15\xff\x17\x00\x11\x02\xb2\x00\x0b\x02\x16\x02\x49\x01\x14\x02\xcc\x00\xcd\x00\x0b\x02\x18\x00\x17\x02\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x18\x02\x19\x02\x1e\x00\x1b\x02\x1f\x00\x0b\x02\x20\x00\x21\x00\x11\xff\x25\x02\x8a\x02\x3a\x00\x3b\x00\x0f\xff\x78\x01\x6d\x01\x24\x00\x25\x00\x42\x01\x26\x00\x6e\x01\x10\xff\x3c\x00\x36\x02\x3d\x00\x4a\x00\x3e\x00\x4b\x00\xc2\x00\x6f\x01\xcd\x00\x2a\x00\x3e\x02\x2a\x00\x2b\x00\x3f\x02\x2c\x00\x41\x02\x21\x00\x46\x02\x42\x01\xb1\x00\x3a\x00\x3b\x00\x4b\x01\x4f\x01\x50\x01\x24\x00\x25\x00\xb2\x00\x26\x00\x58\x01\x16\x00\x3c\x00\xd7\x00\x3d\x00\x4a\x00\x3e\x00\x4b\x00\x74\x01\x59\x01\x52\x00\x2a\x00\xc9\x00\x2a\x00\x2b\x00\x53\x00\x2c\x00\x99\x01\x2a\x00\xc9\x00\x18\x00\xc9\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xa9\x01\xc9\x00\x1e\x00\xa5\x01\x1f\x00\x16\x00\x20\x00\x48\x02\x49\x02\x4a\x02\x4b\x02\x4c\x02\x4d\x02\x4c\x01\x17\x00\xcc\x00\xcd\x00\x2a\x00\xc9\x00\xc3\x01\xae\x01\xb4\x01\xc9\x00\xb1\x00\x18\x00\xc4\x01\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xb2\x00\xc7\x01\x1e\x00\xc5\x01\x1f\x00\xc6\x01\x20\x00\x21\x00\xc8\x01\xcd\x01\xcb\x01\x3a\x00\x3b\x00\xcc\x01\xff\xff\x61\x00\x24\x00\x25\x00\x65\x00\x26\x00\xc2\x00\xff\xff\x3c\x00\x54\x00\x3d\x00\x2a\x00\x3e\x00\x64\x00\xd7\x00\xc9\x00\x6d\x01\xff\xff\xd8\x00\x2a\x00\x2b\x00\x75\x01\x2c\x00\x31\x00\x21\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x6f\x01\xcd\x00\x00\x00\x24\x00\x25\x00\x00\x00\x26\x00\x16\x00\x00\x00\x3c\x00\x00\x00\x3d\x00\x4a\x00\x3e\x00\x4b\x00\x00\x00\x17\x00\x00\x00\x00\x00\x08\x00\x2a\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x09\x00\x18\x00\x00\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x16\x00\x20\x00\xd3\x00\x0d\x00\x0e\x00\x00\x00\x10\x00\x11\x00\x47\x01\x52\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x21\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x24\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x27\x00\x00\x00\x28\x00\x4a\x00\x29\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x21\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x24\x00\x25\x00\x16\x00\x26\x00\x00\x00\x00\x00\x27\x00\x2a\x02\x28\x00\x00\x00\x29\x00\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x2b\x00\x00\x00\x2c\x00\x18\x00\x00\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x16\x00\x20\x00\x00\x00\x00\x00\x00\x00\xf6\xfe\xf6\xfe\x00\x00\x00\x00\x17\x00\xf6\xfe\x00\x00\xf6\xfe\x00\x00\x00\x00\x00\x00\xf6\xfe\x00\x00\xf6\xfe\x18\x00\xf6\xfe\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\xf6\xfe\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x21\x00\x00\x00\x00\x00\xbb\x00\xbc\x00\x23\x00\x00\x00\x00\x00\xbd\x00\x24\x00\x25\x00\x00\x00\x26\x00\x00\x00\x71\x01\x27\x00\x72\x01\x28\x00\x73\x01\x29\x00\x62\x01\x00\x00\x00\x00\x00\x00\x63\x01\x2a\x00\x2a\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x21\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x24\x00\x25\x00\x00\x00\x26\x00\x00\x00\x16\x00\x27\x00\x00\x00\x28\x00\x4a\x00\x29\x00\x4b\x00\x00\x00\x00\x00\x52\x00\x00\x00\x00\x00\x2a\x00\x2b\x00\x53\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x16\x00\x20\x00\x00\x00\x00\x00\x00\x00\xbb\x00\xbc\x00\x00\x00\x00\x00\x17\x00\xbd\x00\x00\x00\x12\xff\x00\x00\x00\x00\x00\x00\x71\x01\x00\x00\x72\x01\x18\x00\x73\x01\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x2a\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x21\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x24\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x27\x00\x66\x01\x28\x00\x00\x00\x29\x00\x8a\x02\x49\x02\x4a\x02\x4b\x02\x4c\x02\x4d\x02\x2a\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x21\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x24\x00\x25\x00\x00\x00\x26\x00\x16\x00\x00\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x46\x00\x00\x00\x17\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x18\x00\x00\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x16\x00\x20\x00\x00\x00\x00\x00\x00\x00\xbb\x00\xbc\x00\x00\x00\x00\x00\x17\x00\xbd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x00\x00\x00\xcf\x00\x18\x00\xd0\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x2a\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x21\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x24\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x3c\x00\x54\x00\x3d\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x21\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x24\x00\x25\x00\x00\x00\x26\x00\x16\x00\x00\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x46\x00\x00\x00\x17\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x18\x00\x00\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x16\x00\x20\x00\x00\x00\x00\x00\x00\x00\xbb\x00\xbc\x00\x00\x00\x00\x00\x17\x00\xbd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x71\x01\x00\x00\x72\x01\x18\x00\x73\x01\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x2a\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x21\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x24\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x3c\x00\x54\x00\x3d\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x21\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x24\x00\x25\x00\x4d\xff\x26\x00\x16\x00\x4d\xff\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x00\x00\x17\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x18\x00\x00\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x16\x00\x20\x00\x00\x00\x00\x00\x00\x00\xbb\x00\xbc\x00\x00\x00\x00\x00\x17\x00\xbd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbe\x00\x00\x00\xbf\x00\x18\x00\xc0\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x2a\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x21\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x24\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x21\x00\x00\x00\x00\x00\xbb\x00\xbc\x00\x23\x00\x00\x00\x00\x00\xbd\x00\x24\x00\x25\x00\x16\x00\x26\x00\x00\x00\x5e\x00\x27\x00\xcf\x00\x28\x00\xd0\x00\x29\x00\x17\x00\x00\x00\x00\x00\x00\x00\x63\x01\x2a\x00\x2a\x00\x2b\x00\x00\x00\x2c\x00\x18\x00\x00\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x16\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x21\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x24\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x21\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x24\x00\x25\x00\x00\x00\x26\x00\x16\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x28\x02\x00\x00\x17\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x18\x00\x00\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x16\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x21\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x24\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x21\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x24\x00\x25\x00\x16\x00\x26\x00\x00\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x2b\x00\x00\x00\x2c\x00\x18\x00\x00\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x16\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x21\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x24\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x21\x00\x00\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x24\x00\x25\x00\x16\x00\x26\x00\x00\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x2b\x00\x00\x00\x2c\x00\x18\x00\x00\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x16\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x21\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x24\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x21\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x24\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x2b\x00\x18\x00\x2c\x00\x19\x00\x1a\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x19\x00\x1a\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x00\x00\x00\x06\x03\x00\x00\x29\x00\x00\x00\x00\x00\x00\x00\x21\x00\x00\x00\x00\x00\x2a\x00\x2b\x00\x23\x00\x2c\x00\x00\x00\x00\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x2b\x00\x18\x00\x2c\x00\x19\x00\x1a\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x19\x00\x1a\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x00\x00\x00\xf5\x01\x00\x00\x29\x00\x00\x00\x00\x00\x00\x00\x21\x00\x00\x00\x00\x00\x2a\x00\x2b\x00\x23\x00\x2c\x00\x00\x00\x00\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x2b\x00\x18\x00\x2c\x00\x19\x00\x1a\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x19\x00\x1a\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\xc6\x00\x00\x00\x00\x00\x00\x00\x21\x00\x00\x00\x00\x00\x2a\x00\x2b\x00\x23\x00\x2c\x00\x00\x00\x00\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x00\x00\x00\x57\x00\x00\x00\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x2b\x00\x18\x00\x2c\x00\x19\x00\x1a\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x19\x00\x1a\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x00\x00\x00\x00\x21\x00\x00\x00\x00\x00\x2a\x00\x2b\x00\x23\x00\x2c\x00\x00\x00\x00\x00\x24\x00\x25\x00\x00\x00\x08\x00\x00\x00\x00\x00\x27\x00\x00\x00\x28\x00\x09\x00\xc6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x00\x00\x00\x2a\x00\x2b\x00\x00\x00\x2c\x00\x4c\x00\x32\x00\x0b\x00\x4d\x00\x0d\x00\x0e\x00\x33\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x00\x35\x00\x36\x00\x37\x00\x08\x00\xc0\x01\x46\x00\x00\x00\x00\x00\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x40\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x00\x32\x00\x0b\x00\x43\x00\x0d\x00\x0e\x00\x33\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x00\x35\x00\x36\x00\x37\x00\xbf\x01\x08\x00\x00\x00\x46\x00\x00\x00\x00\x00\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x40\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x00\x32\x00\x0b\x00\x43\x00\x0d\x00\x0e\x00\x33\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x34\x00\x35\x00\x36\x00\x37\x00\x48\x00\x09\x00\x00\x00\x00\x00\x00\x00\x40\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x32\x00\x0b\x00\x43\x00\x0d\x00\x0e\x00\x33\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x34\x00\x35\x00\x36\x00\x37\x00\xbe\x01\x09\x00\x00\x00\x00\x00\x00\x00\x40\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x32\x00\x0b\x00\x43\x00\x0d\x00\x0e\x00\x33\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x82\x02\x34\x00\x35\x00\x36\x00\x37\x00\x44\x00\x09\x00\x00\x00\x00\x00\x00\x00\x40\x00\x45\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\x01\x0d\x00\x0e\x00\x00\x00\x10\x00\x11\x00\x47\x01\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x02\x3b\x02\x3c\x02\x08\x00\x00\x00\x63\x01\x00\x00\x44\x00\x00\x00\x09\x00\x08\x00\x00\x00\x00\x00\x48\x01\x41\x00\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x40\x00\x45\x01\x00\x00\x00\x00\x46\x01\x0d\x00\x0e\x00\x00\x00\x10\x00\x11\x00\x47\x01\x46\x01\x0d\x00\x0e\x00\x08\x00\x10\x00\x11\x00\x47\x01\x00\x00\x00\x00\x09\x00\x08\x00\x48\x00\x00\x00\x2c\x02\x41\x00\x00\x00\x09\x00\x00\x00\x44\x00\x00\x00\x2d\x02\x41\x00\x00\x00\x00\x00\x46\x01\x0d\x00\x0e\x00\x00\x00\x10\x00\x11\x00\x47\x01\x46\x01\x0d\x00\x0e\x00\x08\x00\x10\x00\x11\x00\x47\x01\x00\x00\x00\x00\x09\x00\x08\x00\xbb\x01\x00\x00\x2e\x02\x41\x00\x00\x00\x09\x00\x00\x00\xbc\x01\x00\x00\x2f\x02\x41\x00\x00\x00\x00\x00\x46\x01\x0d\x00\x0e\x00\x00\x00\x10\x00\x11\x00\x47\x01\x46\x01\x0d\x00\x0e\x00\x08\x00\x10\x00\x11\x00\x47\x01\x00\x00\x00\x00\x09\x00\x08\x00\xbe\x01\x00\x00\x40\x00\x45\x01\x00\x00\x09\x00\x00\x00\xbf\x01\x00\x00\x48\x01\x41\x00\x00\x00\x00\x00\x46\x01\x0d\x00\x0e\x00\x00\x00\x10\x00\x11\x00\x47\x01\x46\x01\x0d\x00\x0e\x00\x08\x00\x10\x00\x11\x00\x47\x01\x00\x00\x00\x00\x09\x00\x08\x00\x44\x00\x00\x00\x40\x00\x41\x00\x00\x00\x09\x00\x00\x00\x48\x00\x00\x00\x40\x00\x41\x00\x00\x00\x00\x00\x46\x01\x0d\x00\x0e\x00\x00\x00\x10\x00\x11\x00\x47\x01\x46\x01\x0d\x00\x0e\x00\x08\x00\x10\x00\x11\x00\x47\x01\x00\x00\x00\x00\x09\x00\x08\x00\x44\x00\x00\x00\x40\x00\x41\x00\x00\x00\x09\x00\x00\x00\x48\x00\x00\x00\x40\x00\x41\x00\x00\x00\x00\x00\x46\x01\x0d\x00\x0e\x00\x00\x00\x10\x00\x11\x00\x47\x01\x46\x01\x0d\x00\x0e\x00\x00\x00\x10\x00\x11\x00\x47\x01\x08\x00\x00\x00\x46\x00\x00\x00\xbb\x01\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbc\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x00\x32\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x33\x00\x10\x00\x11\x00\x12\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x34\x00\x35\x00\x36\x00\x37\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa9\x02\x32\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x33\x00\x10\x00\x11\x00\x12\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x34\x00\x35\x00\x36\x00\x37\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x32\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x33\x00\x10\x00\x11\x00\x12\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x34\x00\x35\x00\x36\x00\x37\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xad\x02\x32\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x33\x00\x10\x00\x11\x00\x12\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x34\x00\x35\x00\x36\x00\x37\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbc\x02\x32\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x33\x00\x10\x00\x11\x00\x12\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x34\x00\x35\x00\x36\x00\x37\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbd\x02\x32\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x33\x00\x10\x00\x11\x00\x12\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x34\x00\x35\x00\x36\x00\x37\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbf\x02\x32\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x33\x00\x10\x00\x11\x00\x12\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x34\x00\x35\x00\x36\x00\x37\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd8\x02\x32\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x33\x00\x10\x00\x11\x00\x12\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x34\x00\x35\x00\x36\x00\x37\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x02\x32\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x33\x00\x10\x00\x11\x00\x12\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x34\x00\x35\x00\x36\x00\x37\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x02\x32\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x33\x00\x10\x00\x11\x00\x12\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x34\x00\x35\x00\x36\x00\x37\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x78\x02\x32\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x33\x00\x10\x00\x11\x00\x12\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x34\x00\x35\x00\x36\x00\x37\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x79\x02\x32\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x33\x00\x10\x00\x11\x00\x12\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x34\x00\x35\x00\x36\x00\x37\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcd\x01\x32\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x33\x00\x10\x00\x11\x00\x12\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x34\x00\x35\x00\x36\x00\x37\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xce\x01\x32\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x33\x00\x10\x00\x11\x00\x12\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x34\x00\x35\x00\x36\x00\x37\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x02\x32\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x33\x00\x10\x00\x11\x00\x12\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x34\x00\x35\x00\x36\x00\x37\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x02\x32\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x33\x00\x10\x00\x11\x00\x12\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x34\x00\x35\x00\x36\x00\x37\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x02\x32\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x33\x00\x10\x00\x11\x00\x12\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x34\x00\x35\x00\x36\x00\x37\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x46\x02\x32\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x33\x00\x10\x00\x11\x00\x12\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x34\x00\x35\x00\x36\x00\x37\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x01\x32\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x33\x00\x10\x00\x11\x00\x12\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x34\x00\x35\x00\x36\x00\x37\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x43\x01\x32\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x33\x00\x10\x00\x11\x00\x12\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x34\x00\x35\x00\x36\x00\x37\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4b\x01\x32\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x33\x00\x10\x00\x11\x00\x12\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x34\x00\x35\x00\x36\x00\x37\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x01\x32\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x33\x00\x10\x00\x11\x00\x12\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x34\x00\x35\x00\x36\x00\x37\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb6\x01\x32\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x33\x00\x10\x00\x11\x00\x12\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x34\x00\x35\x00\x36\x00\x37\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb8\x01\x32\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x33\x00\x10\x00\x11\x00\x12\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x34\x00\x35\x00\x36\x00\x37\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x00\x32\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x33\x00\x10\x00\x11\x00\x12\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x34\x00\x35\x00\x36\x00\x37\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x32\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x33\x00\x10\x00\x11\x00\x12\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x34\x00\x35\x00\x36\x00\x37\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x32\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x33\x00\x10\x00\x11\x00\x12\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x34\x00\x35\x00\x36\x00\x37\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x32\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x33\x00\x10\x00\x11\x00\x12\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x34\x00\x35\x00\x36\x00\x37\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x00\x00\x3f\x01\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\xb7\x01\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x77\x01\x78\x01\x79\x01\x7a\x01\x7b\x01\x7c\x01\x7d\x01\x7e\x01\x7f\x01\x80\x01\x81\x01\x82\x01\x83\x01\x84\x01\x85\x01\x86\x01\x87\x01\x88\x01\x89\x01\x8a\x01\x8b\x01\x8c\x01\x8d\x01\x8e\x01\x8f\x01\x90\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\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 (6, 476) [
-	(6 , happyReduce_6),
-	(7 , happyReduce_7),
-	(8 , happyReduce_8),
-	(9 , happyReduce_9),
-	(10 , happyReduce_10),
-	(11 , happyReduce_11),
-	(12 , happyReduce_12),
-	(13 , happyReduce_13),
-	(14 , happyReduce_14),
-	(15 , happyReduce_15),
-	(16 , happyReduce_16),
-	(17 , happyReduce_17),
-	(18 , happyReduce_18),
-	(19 , happyReduce_19),
-	(20 , happyReduce_20),
-	(21 , happyReduce_21),
-	(22 , happyReduce_22),
-	(23 , happyReduce_23),
-	(24 , happyReduce_24),
-	(25 , happyReduce_25),
-	(26 , happyReduce_26),
-	(27 , happyReduce_27),
-	(28 , happyReduce_28),
-	(29 , happyReduce_29),
-	(30 , happyReduce_30),
-	(31 , happyReduce_31),
-	(32 , happyReduce_32),
-	(33 , happyReduce_33),
-	(34 , happyReduce_34),
-	(35 , happyReduce_35),
-	(36 , happyReduce_36),
-	(37 , happyReduce_37),
-	(38 , happyReduce_38),
-	(39 , happyReduce_39),
-	(40 , happyReduce_40),
-	(41 , happyReduce_41),
-	(42 , happyReduce_42),
-	(43 , happyReduce_43),
-	(44 , happyReduce_44),
-	(45 , happyReduce_45),
-	(46 , happyReduce_46),
-	(47 , happyReduce_47),
-	(48 , happyReduce_48),
-	(49 , happyReduce_49),
-	(50 , happyReduce_50),
-	(51 , happyReduce_51),
-	(52 , happyReduce_52),
-	(53 , happyReduce_53),
-	(54 , happyReduce_54),
-	(55 , happyReduce_55),
-	(56 , happyReduce_56),
-	(57 , happyReduce_57),
-	(58 , happyReduce_58),
-	(59 , happyReduce_59),
-	(60 , happyReduce_60),
-	(61 , happyReduce_61),
-	(62 , happyReduce_62),
-	(63 , happyReduce_63),
-	(64 , happyReduce_64),
-	(65 , happyReduce_65),
-	(66 , happyReduce_66),
-	(67 , happyReduce_67),
-	(68 , happyReduce_68),
-	(69 , happyReduce_69),
-	(70 , happyReduce_70),
-	(71 , happyReduce_71),
-	(72 , happyReduce_72),
-	(73 , happyReduce_73),
-	(74 , happyReduce_74),
-	(75 , happyReduce_75),
-	(76 , happyReduce_76),
-	(77 , happyReduce_77),
-	(78 , happyReduce_78),
-	(79 , happyReduce_79),
-	(80 , happyReduce_80),
-	(81 , happyReduce_81),
-	(82 , happyReduce_82),
-	(83 , happyReduce_83),
-	(84 , happyReduce_84),
-	(85 , happyReduce_85),
-	(86 , happyReduce_86),
-	(87 , happyReduce_87),
-	(88 , happyReduce_88),
-	(89 , happyReduce_89),
-	(90 , happyReduce_90),
-	(91 , happyReduce_91),
-	(92 , happyReduce_92),
-	(93 , happyReduce_93),
-	(94 , happyReduce_94),
-	(95 , happyReduce_95),
-	(96 , happyReduce_96),
-	(97 , happyReduce_97),
-	(98 , happyReduce_98),
-	(99 , happyReduce_99),
-	(100 , happyReduce_100),
-	(101 , happyReduce_101),
-	(102 , happyReduce_102),
-	(103 , happyReduce_103),
-	(104 , happyReduce_104),
-	(105 , happyReduce_105),
-	(106 , happyReduce_106),
-	(107 , happyReduce_107),
-	(108 , happyReduce_108),
-	(109 , happyReduce_109),
-	(110 , happyReduce_110),
-	(111 , happyReduce_111),
-	(112 , happyReduce_112),
-	(113 , happyReduce_113),
-	(114 , happyReduce_114),
-	(115 , happyReduce_115),
-	(116 , happyReduce_116),
-	(117 , happyReduce_117),
-	(118 , happyReduce_118),
-	(119 , happyReduce_119),
-	(120 , happyReduce_120),
-	(121 , happyReduce_121),
-	(122 , happyReduce_122),
-	(123 , happyReduce_123),
-	(124 , happyReduce_124),
-	(125 , happyReduce_125),
-	(126 , happyReduce_126),
-	(127 , happyReduce_127),
-	(128 , happyReduce_128),
-	(129 , happyReduce_129),
-	(130 , happyReduce_130),
-	(131 , happyReduce_131),
-	(132 , happyReduce_132),
-	(133 , happyReduce_133),
-	(134 , happyReduce_134),
-	(135 , happyReduce_135),
-	(136 , happyReduce_136),
-	(137 , happyReduce_137),
-	(138 , happyReduce_138),
-	(139 , happyReduce_139),
-	(140 , happyReduce_140),
-	(141 , happyReduce_141),
-	(142 , happyReduce_142),
-	(143 , happyReduce_143),
-	(144 , happyReduce_144),
-	(145 , happyReduce_145),
-	(146 , happyReduce_146),
-	(147 , happyReduce_147),
-	(148 , happyReduce_148),
-	(149 , happyReduce_149),
-	(150 , happyReduce_150),
-	(151 , happyReduce_151),
-	(152 , happyReduce_152),
-	(153 , happyReduce_153),
-	(154 , happyReduce_154),
-	(155 , happyReduce_155),
-	(156 , happyReduce_156),
-	(157 , happyReduce_157),
-	(158 , happyReduce_158),
-	(159 , happyReduce_159),
-	(160 , happyReduce_160),
-	(161 , happyReduce_161),
-	(162 , happyReduce_162),
-	(163 , happyReduce_163),
-	(164 , happyReduce_164),
-	(165 , happyReduce_165),
-	(166 , happyReduce_166),
-	(167 , happyReduce_167),
-	(168 , happyReduce_168),
-	(169 , happyReduce_169),
-	(170 , happyReduce_170),
-	(171 , happyReduce_171),
-	(172 , happyReduce_172),
-	(173 , happyReduce_173),
-	(174 , happyReduce_174),
-	(175 , happyReduce_175),
-	(176 , happyReduce_176),
-	(177 , happyReduce_177),
-	(178 , happyReduce_178),
-	(179 , happyReduce_179),
-	(180 , happyReduce_180),
-	(181 , happyReduce_181),
-	(182 , happyReduce_182),
-	(183 , happyReduce_183),
-	(184 , happyReduce_184),
-	(185 , happyReduce_185),
-	(186 , happyReduce_186),
-	(187 , happyReduce_187),
-	(188 , happyReduce_188),
-	(189 , happyReduce_189),
-	(190 , happyReduce_190),
-	(191 , happyReduce_191),
-	(192 , happyReduce_192),
-	(193 , happyReduce_193),
-	(194 , happyReduce_194),
-	(195 , happyReduce_195),
-	(196 , happyReduce_196),
-	(197 , happyReduce_197),
-	(198 , happyReduce_198),
-	(199 , happyReduce_199),
-	(200 , happyReduce_200),
-	(201 , happyReduce_201),
-	(202 , happyReduce_202),
-	(203 , happyReduce_203),
-	(204 , happyReduce_204),
-	(205 , happyReduce_205),
-	(206 , happyReduce_206),
-	(207 , happyReduce_207),
-	(208 , happyReduce_208),
-	(209 , happyReduce_209),
-	(210 , happyReduce_210),
-	(211 , happyReduce_211),
-	(212 , happyReduce_212),
-	(213 , happyReduce_213),
-	(214 , happyReduce_214),
-	(215 , happyReduce_215),
-	(216 , happyReduce_216),
-	(217 , happyReduce_217),
-	(218 , happyReduce_218),
-	(219 , happyReduce_219),
-	(220 , happyReduce_220),
-	(221 , happyReduce_221),
-	(222 , happyReduce_222),
-	(223 , happyReduce_223),
-	(224 , happyReduce_224),
-	(225 , happyReduce_225),
-	(226 , happyReduce_226),
-	(227 , happyReduce_227),
-	(228 , happyReduce_228),
-	(229 , happyReduce_229),
-	(230 , happyReduce_230),
-	(231 , happyReduce_231),
-	(232 , happyReduce_232),
-	(233 , happyReduce_233),
-	(234 , happyReduce_234),
-	(235 , happyReduce_235),
-	(236 , happyReduce_236),
-	(237 , happyReduce_237),
-	(238 , happyReduce_238),
-	(239 , happyReduce_239),
-	(240 , happyReduce_240),
-	(241 , happyReduce_241),
-	(242 , happyReduce_242),
-	(243 , happyReduce_243),
-	(244 , happyReduce_244),
-	(245 , happyReduce_245),
-	(246 , happyReduce_246),
-	(247 , happyReduce_247),
-	(248 , happyReduce_248),
-	(249 , happyReduce_249),
-	(250 , happyReduce_250),
-	(251 , happyReduce_251),
-	(252 , happyReduce_252),
-	(253 , happyReduce_253),
-	(254 , happyReduce_254),
-	(255 , happyReduce_255),
-	(256 , happyReduce_256),
-	(257 , happyReduce_257),
-	(258 , happyReduce_258),
-	(259 , happyReduce_259),
-	(260 , happyReduce_260),
-	(261 , happyReduce_261),
-	(262 , happyReduce_262),
-	(263 , happyReduce_263),
-	(264 , happyReduce_264),
-	(265 , happyReduce_265),
-	(266 , happyReduce_266),
-	(267 , happyReduce_267),
-	(268 , happyReduce_268),
-	(269 , happyReduce_269),
-	(270 , happyReduce_270),
-	(271 , happyReduce_271),
-	(272 , happyReduce_272),
-	(273 , happyReduce_273),
-	(274 , happyReduce_274),
-	(275 , happyReduce_275),
-	(276 , happyReduce_276),
-	(277 , happyReduce_277),
-	(278 , happyReduce_278),
-	(279 , happyReduce_279),
-	(280 , happyReduce_280),
-	(281 , happyReduce_281),
-	(282 , happyReduce_282),
-	(283 , happyReduce_283),
-	(284 , happyReduce_284),
-	(285 , happyReduce_285),
-	(286 , happyReduce_286),
-	(287 , happyReduce_287),
-	(288 , happyReduce_288),
-	(289 , happyReduce_289),
-	(290 , happyReduce_290),
-	(291 , happyReduce_291),
-	(292 , happyReduce_292),
-	(293 , happyReduce_293),
-	(294 , happyReduce_294),
-	(295 , happyReduce_295),
-	(296 , happyReduce_296),
-	(297 , happyReduce_297),
-	(298 , happyReduce_298),
-	(299 , happyReduce_299),
-	(300 , happyReduce_300),
-	(301 , happyReduce_301),
-	(302 , happyReduce_302),
-	(303 , happyReduce_303),
-	(304 , happyReduce_304),
-	(305 , happyReduce_305),
-	(306 , happyReduce_306),
-	(307 , happyReduce_307),
-	(308 , happyReduce_308),
-	(309 , happyReduce_309),
-	(310 , happyReduce_310),
-	(311 , happyReduce_311),
-	(312 , happyReduce_312),
-	(313 , happyReduce_313),
-	(314 , happyReduce_314),
-	(315 , happyReduce_315),
-	(316 , happyReduce_316),
-	(317 , happyReduce_317),
-	(318 , happyReduce_318),
-	(319 , happyReduce_319),
-	(320 , happyReduce_320),
-	(321 , happyReduce_321),
-	(322 , happyReduce_322),
-	(323 , happyReduce_323),
-	(324 , happyReduce_324),
-	(325 , happyReduce_325),
-	(326 , happyReduce_326),
-	(327 , happyReduce_327),
-	(328 , happyReduce_328),
-	(329 , happyReduce_329),
-	(330 , happyReduce_330),
-	(331 , happyReduce_331),
-	(332 , happyReduce_332),
-	(333 , happyReduce_333),
-	(334 , happyReduce_334),
-	(335 , happyReduce_335),
-	(336 , happyReduce_336),
-	(337 , happyReduce_337),
-	(338 , happyReduce_338),
-	(339 , happyReduce_339),
-	(340 , happyReduce_340),
-	(341 , happyReduce_341),
-	(342 , happyReduce_342),
-	(343 , happyReduce_343),
-	(344 , happyReduce_344),
-	(345 , happyReduce_345),
-	(346 , happyReduce_346),
-	(347 , happyReduce_347),
-	(348 , happyReduce_348),
-	(349 , happyReduce_349),
-	(350 , happyReduce_350),
-	(351 , happyReduce_351),
-	(352 , happyReduce_352),
-	(353 , happyReduce_353),
-	(354 , happyReduce_354),
-	(355 , happyReduce_355),
-	(356 , happyReduce_356),
-	(357 , happyReduce_357),
-	(358 , happyReduce_358),
-	(359 , happyReduce_359),
-	(360 , happyReduce_360),
-	(361 , happyReduce_361),
-	(362 , happyReduce_362),
-	(363 , happyReduce_363),
-	(364 , happyReduce_364),
-	(365 , happyReduce_365),
-	(366 , happyReduce_366),
-	(367 , happyReduce_367),
-	(368 , happyReduce_368),
-	(369 , happyReduce_369),
-	(370 , happyReduce_370),
-	(371 , happyReduce_371),
-	(372 , happyReduce_372),
-	(373 , happyReduce_373),
-	(374 , happyReduce_374),
-	(375 , happyReduce_375),
-	(376 , happyReduce_376),
-	(377 , happyReduce_377),
-	(378 , happyReduce_378),
-	(379 , happyReduce_379),
-	(380 , happyReduce_380),
-	(381 , happyReduce_381),
-	(382 , happyReduce_382),
-	(383 , happyReduce_383),
-	(384 , happyReduce_384),
-	(385 , happyReduce_385),
-	(386 , happyReduce_386),
-	(387 , happyReduce_387),
-	(388 , happyReduce_388),
-	(389 , happyReduce_389),
-	(390 , happyReduce_390),
-	(391 , happyReduce_391),
-	(392 , happyReduce_392),
-	(393 , happyReduce_393),
-	(394 , happyReduce_394),
-	(395 , happyReduce_395),
-	(396 , happyReduce_396),
-	(397 , happyReduce_397),
-	(398 , happyReduce_398),
-	(399 , happyReduce_399),
-	(400 , happyReduce_400),
-	(401 , happyReduce_401),
-	(402 , happyReduce_402),
-	(403 , happyReduce_403),
-	(404 , happyReduce_404),
-	(405 , happyReduce_405),
-	(406 , happyReduce_406),
-	(407 , happyReduce_407),
-	(408 , happyReduce_408),
-	(409 , happyReduce_409),
-	(410 , happyReduce_410),
-	(411 , happyReduce_411),
-	(412 , happyReduce_412),
-	(413 , happyReduce_413),
-	(414 , happyReduce_414),
-	(415 , happyReduce_415),
-	(416 , happyReduce_416),
-	(417 , happyReduce_417),
-	(418 , happyReduce_418),
-	(419 , happyReduce_419),
-	(420 , happyReduce_420),
-	(421 , happyReduce_421),
-	(422 , happyReduce_422),
-	(423 , happyReduce_423),
-	(424 , happyReduce_424),
-	(425 , happyReduce_425),
-	(426 , happyReduce_426),
-	(427 , happyReduce_427),
-	(428 , happyReduce_428),
-	(429 , happyReduce_429),
-	(430 , happyReduce_430),
-	(431 , happyReduce_431),
-	(432 , happyReduce_432),
-	(433 , happyReduce_433),
-	(434 , happyReduce_434),
-	(435 , happyReduce_435),
-	(436 , happyReduce_436),
-	(437 , happyReduce_437),
-	(438 , happyReduce_438),
-	(439 , happyReduce_439),
-	(440 , happyReduce_440),
-	(441 , happyReduce_441),
-	(442 , happyReduce_442),
-	(443 , happyReduce_443),
-	(444 , happyReduce_444),
-	(445 , happyReduce_445),
-	(446 , happyReduce_446),
-	(447 , happyReduce_447),
-	(448 , happyReduce_448),
-	(449 , happyReduce_449),
-	(450 , happyReduce_450),
-	(451 , happyReduce_451),
-	(452 , happyReduce_452),
-	(453 , happyReduce_453),
-	(454 , happyReduce_454),
-	(455 , happyReduce_455),
-	(456 , happyReduce_456),
-	(457 , happyReduce_457),
-	(458 , happyReduce_458),
-	(459 , happyReduce_459),
-	(460 , happyReduce_460),
-	(461 , happyReduce_461),
-	(462 , happyReduce_462),
-	(463 , happyReduce_463),
-	(464 , happyReduce_464),
-	(465 , happyReduce_465),
-	(466 , happyReduce_466),
-	(467 , happyReduce_467),
-	(468 , happyReduce_468),
-	(469 , happyReduce_469),
-	(470 , happyReduce_470),
-	(471 , happyReduce_471),
-	(472 , happyReduce_472),
-	(473 , happyReduce_473),
-	(474 , happyReduce_474),
-	(475 , happyReduce_475),
-	(476 , happyReduce_476)
-	]
-
-happy_n_terms = 103 :: Int
-happy_n_nonterms = 159 :: Int
-
-happyReduce_6 = happySpecReduce_1  0# happyReduction_6
-happyReduction_6 happy_x_1
-	 =  case happyOut10 happy_x_1 of { happy_var_1 -> 
-	happyIn9
-		 (reverse happy_var_1
-	)}
-
-happyReduce_7 = happySpecReduce_2  1# happyReduction_7
-happyReduction_7 happy_x_2
-	happy_x_1
-	 =  case happyOut10 happy_x_1 of { happy_var_1 -> 
-	case happyOut11 happy_x_2 of { happy_var_2 -> 
-	happyIn10
-		 (happy_var_2 : happy_var_1
-	)}}
-
-happyReduce_8 = happySpecReduce_0  1# happyReduction_8
-happyReduction_8  =  happyIn10
-		 ([]
-	)
-
-happyReduce_9 = happySpecReduce_1  2# happyReduction_9
-happyReduction_9 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwAbstract happy_var_1) -> 
-	happyIn11
-		 (TokKeyword KwAbstract happy_var_1
-	)}
-
-happyReduce_10 = happySpecReduce_1  2# happyReduction_10
-happyReduction_10 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwCoData happy_var_1) -> 
-	happyIn11
-		 (TokKeyword KwCoData happy_var_1
-	)}
-
-happyReduce_11 = happySpecReduce_1  2# happyReduction_11
-happyReduction_11 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwCoInductive happy_var_1) -> 
-	happyIn11
-		 (TokKeyword KwCoInductive happy_var_1
-	)}
-
-happyReduce_12 = happySpecReduce_1  2# happyReduction_12
-happyReduction_12 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwConstructor happy_var_1) -> 
-	happyIn11
-		 (TokKeyword KwConstructor happy_var_1
-	)}
-
-happyReduce_13 = happySpecReduce_1  2# happyReduction_13
-happyReduction_13 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwData happy_var_1) -> 
-	happyIn11
-		 (TokKeyword KwData happy_var_1
-	)}
-
-happyReduce_14 = happySpecReduce_1  2# happyReduction_14
-happyReduction_14 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwEta happy_var_1) -> 
-	happyIn11
-		 (TokKeyword KwEta happy_var_1
-	)}
-
-happyReduce_15 = happySpecReduce_1  2# happyReduction_15
-happyReduction_15 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwField happy_var_1) -> 
-	happyIn11
-		 (TokKeyword KwField happy_var_1
-	)}
-
-happyReduce_16 = happySpecReduce_1  2# happyReduction_16
-happyReduction_16 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwForall happy_var_1) -> 
-	happyIn11
-		 (TokKeyword KwForall happy_var_1
-	)}
-
-happyReduce_17 = happySpecReduce_1  2# happyReduction_17
-happyReduction_17 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwHiding happy_var_1) -> 
-	happyIn11
-		 (TokKeyword KwHiding happy_var_1
-	)}
-
-happyReduce_18 = happySpecReduce_1  2# happyReduction_18
-happyReduction_18 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwImport happy_var_1) -> 
-	happyIn11
-		 (TokKeyword KwImport happy_var_1
-	)}
-
-happyReduce_19 = happySpecReduce_1  2# happyReduction_19
-happyReduction_19 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwIn happy_var_1) -> 
-	happyIn11
-		 (TokKeyword KwIn happy_var_1
-	)}
-
-happyReduce_20 = happySpecReduce_1  2# happyReduction_20
-happyReduction_20 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwInductive happy_var_1) -> 
-	happyIn11
-		 (TokKeyword KwInductive happy_var_1
-	)}
-
-happyReduce_21 = happySpecReduce_1  2# happyReduction_21
-happyReduction_21 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwInfix happy_var_1) -> 
-	happyIn11
-		 (TokKeyword KwInfix happy_var_1
-	)}
-
-happyReduce_22 = happySpecReduce_1  2# happyReduction_22
-happyReduction_22 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwInfixL happy_var_1) -> 
-	happyIn11
-		 (TokKeyword KwInfixL happy_var_1
-	)}
-
-happyReduce_23 = happySpecReduce_1  2# happyReduction_23
-happyReduction_23 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwInfixR happy_var_1) -> 
-	happyIn11
-		 (TokKeyword KwInfixR happy_var_1
-	)}
-
-happyReduce_24 = happySpecReduce_1  2# happyReduction_24
-happyReduction_24 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwInstance happy_var_1) -> 
-	happyIn11
-		 (TokKeyword KwInstance happy_var_1
-	)}
-
-happyReduce_25 = happySpecReduce_1  2# happyReduction_25
-happyReduction_25 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwLet happy_var_1) -> 
-	happyIn11
-		 (TokKeyword KwLet happy_var_1
-	)}
-
-happyReduce_26 = happySpecReduce_1  2# happyReduction_26
-happyReduction_26 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwMacro happy_var_1) -> 
-	happyIn11
-		 (TokKeyword KwMacro happy_var_1
-	)}
-
-happyReduce_27 = happySpecReduce_1  2# happyReduction_27
-happyReduction_27 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwModule happy_var_1) -> 
-	happyIn11
-		 (TokKeyword KwModule happy_var_1
-	)}
-
-happyReduce_28 = happySpecReduce_1  2# happyReduction_28
-happyReduction_28 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwMutual happy_var_1) -> 
-	happyIn11
-		 (TokKeyword KwMutual happy_var_1
-	)}
-
-happyReduce_29 = happySpecReduce_1  2# happyReduction_29
-happyReduction_29 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwNoEta happy_var_1) -> 
-	happyIn11
-		 (TokKeyword KwNoEta happy_var_1
-	)}
-
-happyReduce_30 = happySpecReduce_1  2# happyReduction_30
-happyReduction_30 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwOpen happy_var_1) -> 
-	happyIn11
-		 (TokKeyword KwOpen happy_var_1
-	)}
-
-happyReduce_31 = happySpecReduce_1  2# happyReduction_31
-happyReduction_31 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwPatternSyn happy_var_1) -> 
-	happyIn11
-		 (TokKeyword KwPatternSyn happy_var_1
-	)}
-
-happyReduce_32 = happySpecReduce_1  2# happyReduction_32
-happyReduction_32 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwPostulate happy_var_1) -> 
-	happyIn11
-		 (TokKeyword KwPostulate happy_var_1
-	)}
-
-happyReduce_33 = happySpecReduce_1  2# happyReduction_33
-happyReduction_33 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwPrimitive happy_var_1) -> 
-	happyIn11
-		 (TokKeyword KwPrimitive happy_var_1
-	)}
-
-happyReduce_34 = happySpecReduce_1  2# happyReduction_34
-happyReduction_34 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwPrivate happy_var_1) -> 
-	happyIn11
-		 (TokKeyword KwPrivate happy_var_1
-	)}
-
-happyReduce_35 = happySpecReduce_1  2# happyReduction_35
-happyReduction_35 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwProp happy_var_1) -> 
-	happyIn11
-		 (TokKeyword KwProp happy_var_1
-	)}
-
-happyReduce_36 = happySpecReduce_1  2# happyReduction_36
-happyReduction_36 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwPublic happy_var_1) -> 
-	happyIn11
-		 (TokKeyword KwPublic happy_var_1
-	)}
-
-happyReduce_37 = happySpecReduce_1  2# happyReduction_37
-happyReduction_37 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwQuote happy_var_1) -> 
-	happyIn11
-		 (TokKeyword KwQuote happy_var_1
-	)}
-
-happyReduce_38 = happySpecReduce_1  2# happyReduction_38
-happyReduction_38 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwQuoteContext happy_var_1) -> 
-	happyIn11
-		 (TokKeyword KwQuoteContext happy_var_1
-	)}
-
-happyReduce_39 = happySpecReduce_1  2# happyReduction_39
-happyReduction_39 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwQuoteGoal happy_var_1) -> 
-	happyIn11
-		 (TokKeyword KwQuoteGoal happy_var_1
-	)}
-
-happyReduce_40 = happySpecReduce_1  2# happyReduction_40
-happyReduction_40 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwQuoteTerm happy_var_1) -> 
-	happyIn11
-		 (TokKeyword KwQuoteTerm happy_var_1
-	)}
-
-happyReduce_41 = happySpecReduce_1  2# happyReduction_41
-happyReduction_41 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwRecord happy_var_1) -> 
-	happyIn11
-		 (TokKeyword KwRecord happy_var_1
-	)}
-
-happyReduce_42 = happySpecReduce_1  2# happyReduction_42
-happyReduction_42 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwRenaming happy_var_1) -> 
-	happyIn11
-		 (TokKeyword KwRenaming happy_var_1
-	)}
-
-happyReduce_43 = happySpecReduce_1  2# happyReduction_43
-happyReduction_43 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwRewrite happy_var_1) -> 
-	happyIn11
-		 (TokKeyword KwRewrite happy_var_1
-	)}
-
-happyReduce_44 = happySpecReduce_1  2# happyReduction_44
-happyReduction_44 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwSet happy_var_1) -> 
-	happyIn11
-		 (TokKeyword KwSet happy_var_1
-	)}
-
-happyReduce_45 = happySpecReduce_1  2# happyReduction_45
-happyReduction_45 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwSyntax happy_var_1) -> 
-	happyIn11
-		 (TokKeyword KwSyntax happy_var_1
-	)}
-
-happyReduce_46 = happySpecReduce_1  2# happyReduction_46
-happyReduction_46 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwTactic happy_var_1) -> 
-	happyIn11
-		 (TokKeyword KwTactic happy_var_1
-	)}
-
-happyReduce_47 = happySpecReduce_1  2# happyReduction_47
-happyReduction_47 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwTo happy_var_1) -> 
-	happyIn11
-		 (TokKeyword KwTo happy_var_1
-	)}
-
-happyReduce_48 = happySpecReduce_1  2# happyReduction_48
-happyReduction_48 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwUnquote happy_var_1) -> 
-	happyIn11
-		 (TokKeyword KwUnquote happy_var_1
-	)}
-
-happyReduce_49 = happySpecReduce_1  2# happyReduction_49
-happyReduction_49 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwUnquoteDecl happy_var_1) -> 
-	happyIn11
-		 (TokKeyword KwUnquoteDecl happy_var_1
-	)}
-
-happyReduce_50 = happySpecReduce_1  2# happyReduction_50
-happyReduction_50 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwUnquoteDef happy_var_1) -> 
-	happyIn11
-		 (TokKeyword KwUnquoteDef happy_var_1
-	)}
-
-happyReduce_51 = happySpecReduce_1  2# happyReduction_51
-happyReduction_51 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwUsing happy_var_1) -> 
-	happyIn11
-		 (TokKeyword KwUsing happy_var_1
-	)}
-
-happyReduce_52 = happySpecReduce_1  2# happyReduction_52
-happyReduction_52 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwWhere happy_var_1) -> 
-	happyIn11
-		 (TokKeyword KwWhere happy_var_1
-	)}
-
-happyReduce_53 = happySpecReduce_1  2# happyReduction_53
-happyReduction_53 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwWith happy_var_1) -> 
-	happyIn11
-		 (TokKeyword KwWith happy_var_1
-	)}
-
-happyReduce_54 = happySpecReduce_1  2# happyReduction_54
-happyReduction_54 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwBUILTIN happy_var_1) -> 
-	happyIn11
-		 (TokKeyword KwBUILTIN happy_var_1
-	)}
-
-happyReduce_55 = happySpecReduce_1  2# happyReduction_55
-happyReduction_55 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwCATCHALL happy_var_1) -> 
-	happyIn11
-		 (TokKeyword KwCATCHALL happy_var_1
-	)}
-
-happyReduce_56 = happySpecReduce_1  2# happyReduction_56
-happyReduction_56 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwCOMPILED happy_var_1) -> 
-	happyIn11
-		 (TokKeyword KwCOMPILED happy_var_1
-	)}
-
-happyReduce_57 = happySpecReduce_1  2# happyReduction_57
-happyReduction_57 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwCOMPILED_DATA happy_var_1) -> 
-	happyIn11
-		 (TokKeyword KwCOMPILED_DATA happy_var_1
-	)}
-
-happyReduce_58 = happySpecReduce_1  2# happyReduction_58
-happyReduction_58 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwCOMPILED_DATA_UHC happy_var_1) -> 
-	happyIn11
-		 (TokKeyword KwCOMPILED_DATA_UHC happy_var_1
-	)}
-
-happyReduce_59 = happySpecReduce_1  2# happyReduction_59
-happyReduction_59 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwCOMPILED_DECLARE_DATA happy_var_1) -> 
-	happyIn11
-		 (TokKeyword KwCOMPILED_DECLARE_DATA happy_var_1
-	)}
-
-happyReduce_60 = happySpecReduce_1  2# happyReduction_60
-happyReduction_60 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwCOMPILED_EPIC happy_var_1) -> 
-	happyIn11
-		 (TokKeyword KwCOMPILED_EPIC happy_var_1
-	)}
-
-happyReduce_61 = happySpecReduce_1  2# happyReduction_61
-happyReduction_61 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwCOMPILED_EXPORT happy_var_1) -> 
-	happyIn11
-		 (TokKeyword KwCOMPILED_EXPORT happy_var_1
-	)}
-
-happyReduce_62 = happySpecReduce_1  2# happyReduction_62
-happyReduction_62 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwCOMPILED_JS happy_var_1) -> 
-	happyIn11
-		 (TokKeyword KwCOMPILED_JS happy_var_1
-	)}
-
-happyReduce_63 = happySpecReduce_1  2# happyReduction_63
-happyReduction_63 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwCOMPILED_TYPE happy_var_1) -> 
-	happyIn11
-		 (TokKeyword KwCOMPILED_TYPE happy_var_1
-	)}
-
-happyReduce_64 = happySpecReduce_1  2# happyReduction_64
-happyReduction_64 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwCOMPILED_UHC happy_var_1) -> 
-	happyIn11
-		 (TokKeyword KwCOMPILED_UHC happy_var_1
-	)}
-
-happyReduce_65 = happySpecReduce_1  2# happyReduction_65
-happyReduction_65 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwHASKELL happy_var_1) -> 
-	happyIn11
-		 (TokKeyword KwHASKELL happy_var_1
-	)}
-
-happyReduce_66 = happySpecReduce_1  2# happyReduction_66
-happyReduction_66 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwDISPLAY happy_var_1) -> 
-	happyIn11
-		 (TokKeyword KwDISPLAY happy_var_1
-	)}
-
-happyReduce_67 = happySpecReduce_1  2# happyReduction_67
-happyReduction_67 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwIMPORT happy_var_1) -> 
-	happyIn11
-		 (TokKeyword KwIMPORT happy_var_1
-	)}
-
-happyReduce_68 = happySpecReduce_1  2# happyReduction_68
-happyReduction_68 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwIMPORT_UHC happy_var_1) -> 
-	happyIn11
-		 (TokKeyword KwIMPORT_UHC happy_var_1
-	)}
-
-happyReduce_69 = happySpecReduce_1  2# happyReduction_69
-happyReduction_69 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwIMPOSSIBLE happy_var_1) -> 
-	happyIn11
-		 (TokKeyword KwIMPOSSIBLE happy_var_1
-	)}
-
-happyReduce_70 = happySpecReduce_1  2# happyReduction_70
-happyReduction_70 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwINLINE happy_var_1) -> 
-	happyIn11
-		 (TokKeyword KwINLINE happy_var_1
-	)}
-
-happyReduce_71 = happySpecReduce_1  2# happyReduction_71
-happyReduction_71 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwMEASURE happy_var_1) -> 
-	happyIn11
-		 (TokKeyword KwMEASURE happy_var_1
-	)}
-
-happyReduce_72 = happySpecReduce_1  2# happyReduction_72
-happyReduction_72 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwNO_SMASHING happy_var_1) -> 
-	happyIn11
-		 (TokKeyword KwNO_SMASHING happy_var_1
-	)}
-
-happyReduce_73 = happySpecReduce_1  2# happyReduction_73
-happyReduction_73 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwNO_TERMINATION_CHECK happy_var_1) -> 
-	happyIn11
-		 (TokKeyword KwNO_TERMINATION_CHECK happy_var_1
-	)}
-
-happyReduce_74 = happySpecReduce_1  2# happyReduction_74
-happyReduction_74 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwNO_POSITIVITY_CHECK happy_var_1) -> 
-	happyIn11
-		 (TokKeyword KwNO_POSITIVITY_CHECK happy_var_1
-	)}
-
-happyReduce_75 = happySpecReduce_1  2# happyReduction_75
-happyReduction_75 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwNON_TERMINATING happy_var_1) -> 
-	happyIn11
-		 (TokKeyword KwNON_TERMINATING happy_var_1
-	)}
-
-happyReduce_76 = happySpecReduce_1  2# happyReduction_76
-happyReduction_76 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwOPTIONS happy_var_1) -> 
-	happyIn11
-		 (TokKeyword KwOPTIONS happy_var_1
-	)}
-
-happyReduce_77 = happySpecReduce_1  2# happyReduction_77
-happyReduction_77 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwREWRITE happy_var_1) -> 
-	happyIn11
-		 (TokKeyword KwREWRITE happy_var_1
-	)}
-
-happyReduce_78 = happySpecReduce_1  2# happyReduction_78
-happyReduction_78 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwSTATIC happy_var_1) -> 
-	happyIn11
-		 (TokKeyword KwSTATIC happy_var_1
-	)}
-
-happyReduce_79 = happySpecReduce_1  2# happyReduction_79
-happyReduction_79 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwTERMINATING happy_var_1) -> 
-	happyIn11
-		 (TokKeyword KwTERMINATING happy_var_1
-	)}
-
-happyReduce_80 = happySpecReduce_1  2# happyReduction_80
-happyReduction_80 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokSetN happy_var_1) -> 
-	happyIn11
-		 (TokSetN happy_var_1
-	)}
-
-happyReduce_81 = happySpecReduce_1  2# happyReduction_81
-happyReduction_81 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokTeX happy_var_1) -> 
-	happyIn11
-		 (TokTeX happy_var_1
-	)}
-
-happyReduce_82 = happySpecReduce_1  2# happyReduction_82
-happyReduction_82 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokComment happy_var_1) -> 
-	happyIn11
-		 (TokComment happy_var_1
-	)}
-
-happyReduce_83 = happySpecReduce_1  2# happyReduction_83
-happyReduction_83 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymEllipsis happy_var_1) -> 
-	happyIn11
-		 (TokSymbol SymEllipsis happy_var_1
-	)}
-
-happyReduce_84 = happySpecReduce_1  2# happyReduction_84
-happyReduction_84 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymDotDot happy_var_1) -> 
-	happyIn11
-		 (TokSymbol SymDotDot happy_var_1
-	)}
-
-happyReduce_85 = happySpecReduce_1  2# happyReduction_85
-happyReduction_85 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymDot happy_var_1) -> 
-	happyIn11
-		 (TokSymbol SymDot happy_var_1
-	)}
-
-happyReduce_86 = happySpecReduce_1  2# happyReduction_86
-happyReduction_86 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymSemi happy_var_1) -> 
-	happyIn11
-		 (TokSymbol SymSemi happy_var_1
-	)}
-
-happyReduce_87 = happySpecReduce_1  2# happyReduction_87
-happyReduction_87 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymColon happy_var_1) -> 
-	happyIn11
-		 (TokSymbol SymColon happy_var_1
-	)}
-
-happyReduce_88 = happySpecReduce_1  2# happyReduction_88
-happyReduction_88 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymEqual happy_var_1) -> 
-	happyIn11
-		 (TokSymbol SymEqual happy_var_1
-	)}
-
-happyReduce_89 = happySpecReduce_1  2# happyReduction_89
-happyReduction_89 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymUnderscore happy_var_1) -> 
-	happyIn11
-		 (TokSymbol SymUnderscore happy_var_1
-	)}
-
-happyReduce_90 = happySpecReduce_1  2# happyReduction_90
-happyReduction_90 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymQuestionMark happy_var_1) -> 
-	happyIn11
-		 (TokSymbol SymQuestionMark happy_var_1
-	)}
-
-happyReduce_91 = happySpecReduce_1  2# happyReduction_91
-happyReduction_91 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymArrow happy_var_1) -> 
-	happyIn11
-		 (TokSymbol SymArrow happy_var_1
-	)}
-
-happyReduce_92 = happySpecReduce_1  2# happyReduction_92
-happyReduction_92 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymLambda happy_var_1) -> 
-	happyIn11
-		 (TokSymbol SymLambda happy_var_1
-	)}
-
-happyReduce_93 = happySpecReduce_1  2# happyReduction_93
-happyReduction_93 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymAs happy_var_1) -> 
-	happyIn11
-		 (TokSymbol SymAs happy_var_1
-	)}
-
-happyReduce_94 = happySpecReduce_1  2# happyReduction_94
-happyReduction_94 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymBar happy_var_1) -> 
-	happyIn11
-		 (TokSymbol SymBar happy_var_1
-	)}
-
-happyReduce_95 = happySpecReduce_1  2# happyReduction_95
-happyReduction_95 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymOpenParen happy_var_1) -> 
-	happyIn11
-		 (TokSymbol SymOpenParen happy_var_1
-	)}
-
-happyReduce_96 = happySpecReduce_1  2# happyReduction_96
-happyReduction_96 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymCloseParen happy_var_1) -> 
-	happyIn11
-		 (TokSymbol SymCloseParen happy_var_1
-	)}
-
-happyReduce_97 = happySpecReduce_1  2# happyReduction_97
-happyReduction_97 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymDoubleOpenBrace happy_var_1) -> 
-	happyIn11
-		 (TokSymbol SymDoubleOpenBrace happy_var_1
-	)}
-
-happyReduce_98 = happySpecReduce_1  2# happyReduction_98
-happyReduction_98 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymDoubleCloseBrace happy_var_1) -> 
-	happyIn11
-		 (TokSymbol SymDoubleCloseBrace happy_var_1
-	)}
-
-happyReduce_99 = happySpecReduce_1  2# happyReduction_99
-happyReduction_99 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymOpenBrace happy_var_1) -> 
-	happyIn11
-		 (TokSymbol SymOpenBrace happy_var_1
-	)}
-
-happyReduce_100 = happySpecReduce_1  2# happyReduction_100
-happyReduction_100 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymCloseBrace happy_var_1) -> 
-	happyIn11
-		 (TokSymbol SymCloseBrace happy_var_1
-	)}
-
-happyReduce_101 = happySpecReduce_1  2# happyReduction_101
-happyReduction_101 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymOpenVirtualBrace happy_var_1) -> 
-	happyIn11
-		 (TokSymbol SymOpenVirtualBrace happy_var_1
-	)}
-
-happyReduce_102 = happySpecReduce_1  2# happyReduction_102
-happyReduction_102 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymCloseVirtualBrace happy_var_1) -> 
-	happyIn11
-		 (TokSymbol SymCloseVirtualBrace happy_var_1
-	)}
-
-happyReduce_103 = happySpecReduce_1  2# happyReduction_103
-happyReduction_103 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymVirtualSemi happy_var_1) -> 
-	happyIn11
-		 (TokSymbol SymVirtualSemi happy_var_1
-	)}
-
-happyReduce_104 = happySpecReduce_1  2# happyReduction_104
-happyReduction_104 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) -> 
-	happyIn11
-		 (TokSymbol SymOpenPragma happy_var_1
-	)}
-
-happyReduce_105 = happySpecReduce_1  2# happyReduction_105
-happyReduction_105 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymClosePragma happy_var_1) -> 
-	happyIn11
-		 (TokSymbol SymClosePragma happy_var_1
-	)}
-
-happyReduce_106 = happySpecReduce_1  2# happyReduction_106
-happyReduction_106 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokId happy_var_1) -> 
-	happyIn11
-		 (TokId happy_var_1
-	)}
-
-happyReduce_107 = happySpecReduce_1  2# happyReduction_107
-happyReduction_107 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokQId happy_var_1) -> 
-	happyIn11
-		 (TokQId happy_var_1
-	)}
-
-happyReduce_108 = happySpecReduce_1  2# happyReduction_108
-happyReduction_108 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokString happy_var_1) -> 
-	happyIn11
-		 (TokString happy_var_1
-	)}
-
-happyReduce_109 = happySpecReduce_1  2# happyReduction_109
-happyReduction_109 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokLiteral happy_var_1) -> 
-	happyIn11
-		 (TokLiteral happy_var_1
-	)}
-
-happyReduce_110 = happySpecReduce_3  3# happyReduction_110
-happyReduction_110 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut126 happy_x_2 of { happy_var_2 -> 
-	happyIn12
-		 (takeOptionsPragmas happy_var_2
-	)}
-
-happyReduce_111 = happySpecReduce_0  4# happyReduction_111
-happyReduction_111  =  happyIn13
-		 (()
-	)
-
-happyReduce_112 = happySpecReduce_1  4# happyReduction_112
-happyReduction_112 happy_x_1
-	 =  happyIn13
-		 (()
-	)
-
-happyReduce_113 = happySpecReduce_1  5# happyReduction_113
-happyReduction_113 happy_x_1
-	 =  happyIn14
-		 (()
-	)
-
-happyReduce_114 = happyMonadReduce 1# 5# happyReduction_114
-happyReduction_114 (happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (( popContext)
-	) (\r -> happyReturn (happyIn14 r))
-
-happyReduce_115 = happySpecReduce_1  6# happyReduction_115
-happyReduction_115 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymSemi happy_var_1) -> 
-	happyIn15
-		 (happy_var_1
-	)}
-
-happyReduce_116 = happySpecReduce_1  6# happyReduction_116
-happyReduction_116 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymVirtualSemi happy_var_1) -> 
-	happyIn15
-		 (happy_var_1
-	)}
-
-happyReduce_117 = happyMonadReduce 0# 7# happyReduction_117
-happyReduction_117 (happyRest) tk
-	 = happyThen (( pushLexState imp_dir)
-	) (\r -> happyReturn (happyIn16 r))
-
-happyReduce_118 = happyMonadReduce 1# 8# happyReduction_118
-happyReduction_118 (happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOutTok happy_x_1 of { (TokLiteral happy_var_1) -> 
-	( case happy_var_1 of {
-                     LitNat _ i -> return i;
-                     _          -> fail $ "Expected integer"
-                   })}
-	) (\r -> happyReturn (happyIn17 r))
-
-happyReduce_119 = happyMonadReduce 1# 9# happyReduction_119
-happyReduction_119 (happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOutTok happy_x_1 of { (TokId happy_var_1) -> 
-	( mkName happy_var_1)}
-	) (\r -> happyReturn (happyIn18 r))
-
-happyReduce_120 = happySpecReduce_2  10# happyReduction_120
-happyReduction_120 happy_x_2
-	happy_x_1
-	 =  case happyOut18 happy_x_1 of { happy_var_1 -> 
-	case happyOut19 happy_x_2 of { happy_var_2 -> 
-	happyIn19
-		 (happy_var_1 : happy_var_2
-	)}}
-
-happyReduce_121 = happySpecReduce_1  10# happyReduction_121
-happyReduction_121 happy_x_1
-	 =  case happyOut18 happy_x_1 of { happy_var_1 -> 
-	happyIn19
-		 ([happy_var_1]
-	)}
-
-happyReduce_122 = happySpecReduce_1  11# happyReduction_122
-happyReduction_122 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymDoubleCloseBrace happy_var_1) -> 
-	happyIn20
-		 (getRange happy_var_1
-	)}
-
-happyReduce_123 = happyMonadReduce 2# 11# happyReduction_123
-happyReduction_123 (happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOutTok happy_x_1 of { (TokSymbol SymCloseBrace happy_var_1) -> 
-	case happyOutTok happy_x_2 of { (TokSymbol SymCloseBrace happy_var_2) -> 
-	(
-      if posPos (fromJust (rEnd' (getRange happy_var_2))) -
-         posPos (fromJust (rStart' (getRange happy_var_1))) > 2
-      then parseErrorAt (fromJust (rStart' (getRange happy_var_2)))
-         "Expecting '}}', found separated '}'s."
-      else return $ getRange (happy_var_1, happy_var_2))}}
-	) (\r -> happyReturn (happyIn20 r))
-
-happyReduce_124 = happySpecReduce_2  12# happyReduction_124
-happyReduction_124 happy_x_2
-	happy_x_1
-	 =  case happyOut18 happy_x_2 of { happy_var_2 -> 
-	happyIn21
-		 (setRelevance Irrelevant $ defaultArg happy_var_2
-	)}
-
-happyReduce_125 = happySpecReduce_1  12# happyReduction_125
-happyReduction_125 happy_x_1
-	 =  case happyOut18 happy_x_1 of { happy_var_1 -> 
-	happyIn21
-		 (defaultArg happy_var_1
-	)}
-
-happyReduce_126 = happySpecReduce_2  13# happyReduction_126
-happyReduction_126 happy_x_2
-	happy_x_1
-	 =  case happyOut21 happy_x_1 of { happy_var_1 -> 
-	case happyOut22 happy_x_2 of { happy_var_2 -> 
-	happyIn22
-		 (happy_var_1 : happy_var_2
-	)}}
-
-happyReduce_127 = happySpecReduce_1  13# happyReduction_127
-happyReduction_127 happy_x_1
-	 =  case happyOut21 happy_x_1 of { happy_var_1 -> 
-	happyIn22
-		 ([happy_var_1]
-	)}
-
-happyReduce_128 = happySpecReduce_2  14# happyReduction_128
-happyReduction_128 happy_x_2
-	happy_x_1
-	 =  case happyOut21 happy_x_1 of { happy_var_1 -> 
-	case happyOut23 happy_x_2 of { happy_var_2 -> 
-	happyIn23
-		 (happy_var_1 : happy_var_2
-	)}}
-
-happyReduce_129 = happySpecReduce_1  14# happyReduction_129
-happyReduction_129 happy_x_1
-	 =  case happyOut21 happy_x_1 of { happy_var_1 -> 
-	happyIn23
-		 ([happy_var_1]
-	)}
-
-happyReduce_130 = happyReduce 4# 14# happyReduction_130
-happyReduction_130 (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 happyOut23 happy_x_4 of { happy_var_4 -> 
-	happyIn23
-		 (map makeInstance happy_var_2 ++ happy_var_4
-	) `HappyStk` happyRest}}
-
-happyReduce_131 = happySpecReduce_3  14# happyReduction_131
-happyReduction_131 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut22 happy_x_2 of { happy_var_2 -> 
-	happyIn23
-		 (map makeInstance happy_var_2
-	)}
-
-happyReduce_132 = happyReduce 4# 14# happyReduction_132
-happyReduction_132 (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 happyOut23 happy_x_4 of { happy_var_4 -> 
-	happyIn23
-		 (map hide happy_var_2 ++ happy_var_4
-	) `HappyStk` happyRest}}
-
-happyReduce_133 = happySpecReduce_3  14# happyReduction_133
-happyReduction_133 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut22 happy_x_2 of { happy_var_2 -> 
-	happyIn23
-		 (map hide happy_var_2
-	)}
-
-happyReduce_134 = happyReduce 5# 14# happyReduction_134
-happyReduction_134 (happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOut19 happy_x_3 of { happy_var_3 -> 
-	case happyOut23 happy_x_5 of { happy_var_5 -> 
-	happyIn23
-		 (map (hide . setRelevance Irrelevant . defaultArg) happy_var_3 ++ happy_var_5
-	) `HappyStk` happyRest}}
-
-happyReduce_135 = happyReduce 4# 14# happyReduction_135
-happyReduction_135 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOut19 happy_x_3 of { happy_var_3 -> 
-	happyIn23
-		 (map (hide . setRelevance Irrelevant . defaultArg) happy_var_3
-	) `HappyStk` happyRest}
-
-happyReduce_136 = happyReduce 5# 14# happyReduction_136
-happyReduction_136 (happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOut19 happy_x_3 of { happy_var_3 -> 
-	case happyOut23 happy_x_5 of { happy_var_5 -> 
-	happyIn23
-		 (map (makeInstance . setRelevance Irrelevant . defaultArg) happy_var_3 ++ happy_var_5
-	) `HappyStk` happyRest}}
-
-happyReduce_137 = happyReduce 4# 14# happyReduction_137
-happyReduction_137 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOut19 happy_x_3 of { happy_var_3 -> 
-	happyIn23
-		 (map (makeInstance . setRelevance Irrelevant . defaultArg) happy_var_3
-	) `HappyStk` happyRest}
-
-happyReduce_138 = happyReduce 5# 14# happyReduction_138
-happyReduction_138 (happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOut19 happy_x_3 of { happy_var_3 -> 
-	case happyOut23 happy_x_5 of { happy_var_5 -> 
-	happyIn23
-		 (map (hide . setRelevance NonStrict . defaultArg) happy_var_3 ++ happy_var_5
-	) `HappyStk` happyRest}}
-
-happyReduce_139 = happyReduce 4# 14# happyReduction_139
-happyReduction_139 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOut19 happy_x_3 of { happy_var_3 -> 
-	happyIn23
-		 (map (hide . setRelevance NonStrict . defaultArg) happy_var_3
-	) `HappyStk` happyRest}
-
-happyReduce_140 = happyReduce 5# 14# happyReduction_140
-happyReduction_140 (happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOut19 happy_x_3 of { happy_var_3 -> 
-	case happyOut23 happy_x_5 of { happy_var_5 -> 
-	happyIn23
-		 (map (makeInstance . setRelevance NonStrict . defaultArg) happy_var_3 ++ happy_var_5
-	) `HappyStk` happyRest}}
-
-happyReduce_141 = happyReduce 4# 14# happyReduction_141
-happyReduction_141 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOut19 happy_x_3 of { happy_var_3 -> 
-	happyIn23
-		 (map (makeInstance . setRelevance NonStrict . defaultArg) happy_var_3
-	) `HappyStk` happyRest}
-
-happyReduce_142 = happyMonadReduce 1# 15# happyReduction_142
-happyReduction_142 (happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOutTok happy_x_1 of { (TokQId happy_var_1) -> 
-	( mkQName happy_var_1)}
-	) (\r -> happyReturn (happyIn24 r))
-
-happyReduce_143 = happySpecReduce_1  15# happyReduction_143
-happyReduction_143 happy_x_1
-	 =  case happyOut18 happy_x_1 of { happy_var_1 -> 
-	happyIn24
-		 (QName happy_var_1
-	)}
-
-happyReduce_144 = happySpecReduce_1  16# happyReduction_144
-happyReduction_144 happy_x_1
-	 =  case happyOut24 happy_x_1 of { happy_var_1 -> 
-	happyIn25
-		 (happy_var_1
-	)}
-
-happyReduce_145 = happySpecReduce_1  17# happyReduction_145
-happyReduction_145 happy_x_1
-	 =  case happyOut18 happy_x_1 of { happy_var_1 -> 
-	happyIn26
-		 (happy_var_1
-	)}
-
-happyReduce_146 = happySpecReduce_1  17# happyReduction_146
-happyReduction_146 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymUnderscore happy_var_1) -> 
-	happyIn26
-		 (Name (getRange happy_var_1) [Hole]
-	)}
-
-happyReduce_147 = happySpecReduce_2  18# happyReduction_147
-happyReduction_147 happy_x_2
-	happy_x_1
-	 =  case happyOut26 happy_x_1 of { happy_var_1 -> 
-	case happyOut27 happy_x_2 of { happy_var_2 -> 
-	happyIn27
-		 (happy_var_1 : happy_var_2
-	)}}
-
-happyReduce_148 = happySpecReduce_1  18# happyReduction_148
-happyReduction_148 happy_x_1
-	 =  case happyOut26 happy_x_1 of { happy_var_1 -> 
-	happyIn27
-		 ([happy_var_1]
-	)}
-
-happyReduce_149 = happySpecReduce_1  19# happyReduction_149
-happyReduction_149 happy_x_1
-	 =  case happyOut29 happy_x_1 of { happy_var_1 -> 
-	happyIn28
-		 (case happy_var_1 of
-      Left ns -> ns
-      Right _ -> fail $ "expected sequence of bound identifiers, not absurd pattern"
-	)}
-
-happyReduce_150 = happyMonadReduce 1# 20# happyReduction_150
-happyReduction_150 (happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOut39 happy_x_1 of { happy_var_1 -> 
-	(
-    let getName :: Expr -> Maybe Name
-        getName (Ident (QName x)) = Just x
-        getName (Underscore r _)  = Just (Name r [Hole])
-        getName _                 = Nothing
-
-        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 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 (happyIn29 r))
-
-happyReduce_151 = happyMonadReduce 1# 21# happyReduction_151
-happyReduction_151 (happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOut39 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 (happyIn30 r))
-
-happyReduce_152 = happySpecReduce_0  22# happyReduction_152
-happyReduction_152  =  happyIn31
-		 ([]
-	)
-
-happyReduce_153 = happySpecReduce_2  22# happyReduction_153
-happyReduction_153 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokString happy_var_1) -> 
-	case happyOut31 happy_x_2 of { happy_var_2 -> 
-	happyIn31
-		 (snd happy_var_1 : happy_var_2
-	)}}
-
-happyReduce_154 = happySpecReduce_1  23# happyReduction_154
-happyReduction_154 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokString happy_var_1) -> 
-	happyIn32
-		 (snd happy_var_1
-	)}
-
-happyReduce_155 = happySpecReduce_0  24# happyReduction_155
-happyReduction_155  =  happyIn33
-		 ([]
-	)
-
-happyReduce_156 = happySpecReduce_2  24# happyReduction_156
-happyReduction_156 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokString happy_var_1) -> 
-	case happyOut33 happy_x_2 of { happy_var_2 -> 
-	happyIn33
-		 (happy_var_1 : happy_var_2
-	)}}
-
-happyReduce_157 = happyMonadReduce 1# 25# happyReduction_157
-happyReduction_157 (happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOutTok happy_x_1 of { (TokString happy_var_1) -> 
-	( mkName happy_var_1)}
-	) (\r -> happyReturn (happyIn34 r))
-
-happyReduce_158 = happyMonadReduce 1# 26# happyReduction_158
-happyReduction_158 (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 (happyIn35 r))
-
-happyReduce_159 = happySpecReduce_2  27# happyReduction_159
-happyReduction_159 happy_x_2
-	happy_x_1
-	 =  case happyOut53 happy_x_1 of { happy_var_1 -> 
-	case happyOut36 happy_x_2 of { happy_var_2 -> 
-	happyIn36
-		 (Pi happy_var_1 happy_var_2
-	)}}
-
-happyReduce_160 = happySpecReduce_3  27# happyReduction_160
-happyReduction_160 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut42 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (TokSymbol SymArrow happy_var_2) -> 
-	case happyOut36 happy_x_3 of { happy_var_3 -> 
-	happyIn36
-		 (Fun (getRange (happy_var_1,happy_var_2,happy_var_3))
-                                              (RawApp (getRange happy_var_1) happy_var_1)
-                                              happy_var_3
-	)}}}
-
-happyReduce_161 = happySpecReduce_3  27# happyReduction_161
-happyReduction_161 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut37 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (TokSymbol SymEqual happy_var_2) -> 
-	case happyOut36 happy_x_3 of { happy_var_3 -> 
-	happyIn36
-		 (Equal (getRange (happy_var_1, happy_var_2, happy_var_3)) happy_var_1 happy_var_3
-	)}}}
-
-happyReduce_162 = happySpecReduce_1  27# happyReduction_162
-happyReduction_162 happy_x_1
-	 =  case happyOut37 happy_x_1 of { happy_var_1 -> 
-	happyIn36
-		 (happy_var_1
-	)}
-
-happyReduce_163 = happyMonadReduce 1# 28# happyReduction_163
-happyReduction_163 (happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOut38 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 (happyIn37 r))
-
-happyReduce_164 = happySpecReduce_3  29# happyReduction_164
-happyReduction_164 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut42 happy_x_1 of { happy_var_1 -> 
-	case happyOut38 happy_x_3 of { happy_var_3 -> 
-	happyIn38
-		 (RawApp (getRange happy_var_1) happy_var_1 :  happy_var_3
-	)}}
-
-happyReduce_165 = happySpecReduce_1  29# happyReduction_165
-happyReduction_165 happy_x_1
-	 =  case happyOut39 happy_x_1 of { happy_var_1 -> 
-	happyIn38
-		 ([RawApp (getRange happy_var_1) happy_var_1]
-	)}
-
-happyReduce_166 = happySpecReduce_1  30# happyReduction_166
-happyReduction_166 happy_x_1
-	 =  case happyOut40 happy_x_1 of { happy_var_1 -> 
-	happyIn39
-		 ([happy_var_1]
-	)}
-
-happyReduce_167 = happySpecReduce_2  30# happyReduction_167
-happyReduction_167 happy_x_2
-	happy_x_1
-	 =  case happyOut45 happy_x_1 of { happy_var_1 -> 
-	case happyOut39 happy_x_2 of { happy_var_2 -> 
-	happyIn39
-		 (happy_var_1 : happy_var_2
-	)}}
-
-happyReduce_168 = happySpecReduce_3  31# happyReduction_168
-happyReduction_168 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymLambda happy_var_1) -> 
-	case happyOut59 happy_x_2 of { happy_var_2 -> 
-	case happyOut36 happy_x_3 of { happy_var_3 -> 
-	happyIn40
-		 (Lam (getRange (happy_var_1,happy_var_2,happy_var_3)) happy_var_2 happy_var_3
-	)}}}
-
-happyReduce_169 = happySpecReduce_1  31# happyReduction_169
-happyReduction_169 happy_x_1
-	 =  case happyOut41 happy_x_1 of { happy_var_1 -> 
-	happyIn40
-		 (happy_var_1
-	)}
-
-happyReduce_170 = happySpecReduce_3  31# happyReduction_170
-happyReduction_170 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut67 happy_x_2 of { happy_var_2 -> 
-	case happyOut36 happy_x_3 of { happy_var_3 -> 
-	happyIn40
-		 (forallPi happy_var_2 happy_var_3
-	)}}
-
-happyReduce_171 = happyReduce 4# 31# happyReduction_171
-happyReduction_171 (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 happyOut164 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (TokKeyword KwIn happy_var_3) -> 
-	case happyOut36 happy_x_4 of { happy_var_4 -> 
-	happyIn40
-		 (Let (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4)) happy_var_2 happy_var_4
-	) `HappyStk` happyRest}}}}
-
-happyReduce_172 = happySpecReduce_1  31# happyReduction_172
-happyReduction_172 happy_x_1
-	 =  case happyOut45 happy_x_1 of { happy_var_1 -> 
-	happyIn40
-		 (happy_var_1
-	)}
-
-happyReduce_173 = happyReduce 4# 31# happyReduction_173
-happyReduction_173 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { (TokKeyword KwQuoteGoal happy_var_1) -> 
-	case happyOut18 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (TokKeyword KwIn happy_var_3) -> 
-	case happyOut36 happy_x_4 of { happy_var_4 -> 
-	happyIn40
-		 (QuoteGoal (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4)) happy_var_2 happy_var_4
-	) `HappyStk` happyRest}}}}
-
-happyReduce_174 = happySpecReduce_2  31# happyReduction_174
-happyReduction_174 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwTactic happy_var_1) -> 
-	case happyOut42 happy_x_2 of { happy_var_2 -> 
-	happyIn40
-		 (Tactic (getRange (happy_var_1, happy_var_2)) (RawApp (getRange happy_var_2) happy_var_2) []
-	)}}
-
-happyReduce_175 = happyReduce 4# 31# happyReduction_175
-happyReduction_175 (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 happyOut42 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (TokSymbol SymBar happy_var_3) -> 
-	case happyOut38 happy_x_4 of { happy_var_4 -> 
-	happyIn40
-		 (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_176 = happyReduce 4# 32# happyReduction_176
-happyReduction_176 (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 happyOut66 happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { (TokSymbol SymCloseBrace happy_var_4) -> 
-	happyIn41
-		 (ExtendedLam (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4)) (reverse happy_var_3)
-	) `HappyStk` happyRest}}}}
-
-happyReduce_177 = happyMonadReduce 2# 32# happyReduction_177
-happyReduction_177 (happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOutTok happy_x_1 of { (TokSymbol SymLambda happy_var_1) -> 
-	case happyOut60 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)
-                                                         where r = fuseRange happy_var_1 bs
-                                       Right es -> do -- it is of the form @\ { p1 ... () }@
-                                                     p <- exprToLHS (RawApp (getRange es) es);
-                                                     return $ ExtendedLam (fuseRange happy_var_1 es)
-                                                                     [(p [] [], AbsurdRHS, NoWhere, False)])}}
-	) (\r -> happyReturn (happyIn41 r))
-
-happyReduce_178 = happySpecReduce_1  33# happyReduction_178
-happyReduction_178 happy_x_1
-	 =  case happyOut45 happy_x_1 of { happy_var_1 -> 
-	happyIn42
-		 ([happy_var_1]
-	)}
-
-happyReduce_179 = happySpecReduce_2  33# happyReduction_179
-happyReduction_179 happy_x_2
-	happy_x_1
-	 =  case happyOut45 happy_x_1 of { happy_var_1 -> 
-	case happyOut42 happy_x_2 of { happy_var_2 -> 
-	happyIn42
-		 (happy_var_1 : happy_var_2
-	)}}
-
-happyReduce_180 = happySpecReduce_3  34# happyReduction_180
-happyReduction_180 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymOpenBrace happy_var_1) -> 
-	case happyOut36 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (TokSymbol SymCloseBrace happy_var_3) -> 
-	happyIn43
-		 (HiddenArg (getRange (happy_var_1,happy_var_2,happy_var_3)) (maybeNamed happy_var_2)
-	)}}}
-
-happyReduce_181 = happySpecReduce_2  34# happyReduction_181
-happyReduction_181 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) -> 
-	happyIn43
-		 (let r = fuseRange happy_var_1 happy_var_2 in HiddenArg r $ unnamed $ Absurd r
-	)}}
-
-happyReduce_182 = happySpecReduce_1  35# happyReduction_182
-happyReduction_182 happy_x_1
-	 =  case happyOut24 happy_x_1 of { happy_var_1 -> 
-	happyIn44
-		 (Ident happy_var_1
-	)}
-
-happyReduce_183 = happySpecReduce_1  35# happyReduction_183
-happyReduction_183 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokLiteral happy_var_1) -> 
-	happyIn44
-		 (Lit happy_var_1
-	)}
-
-happyReduce_184 = happySpecReduce_1  35# happyReduction_184
-happyReduction_184 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymQuestionMark happy_var_1) -> 
-	happyIn44
-		 (QuestionMark (getRange happy_var_1) Nothing
-	)}
-
-happyReduce_185 = happySpecReduce_1  35# happyReduction_185
-happyReduction_185 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymUnderscore happy_var_1) -> 
-	happyIn44
-		 (Underscore (getRange happy_var_1) Nothing
-	)}
-
-happyReduce_186 = happySpecReduce_1  35# happyReduction_186
-happyReduction_186 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwProp happy_var_1) -> 
-	happyIn44
-		 (Prop (getRange happy_var_1)
-	)}
-
-happyReduce_187 = happySpecReduce_1  35# happyReduction_187
-happyReduction_187 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwSet happy_var_1) -> 
-	happyIn44
-		 (Set (getRange happy_var_1)
-	)}
-
-happyReduce_188 = happySpecReduce_1  35# happyReduction_188
-happyReduction_188 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwQuote happy_var_1) -> 
-	happyIn44
-		 (Quote (getRange happy_var_1)
-	)}
-
-happyReduce_189 = happySpecReduce_1  35# happyReduction_189
-happyReduction_189 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwQuoteTerm happy_var_1) -> 
-	happyIn44
-		 (QuoteTerm (getRange happy_var_1)
-	)}
-
-happyReduce_190 = happySpecReduce_1  35# happyReduction_190
-happyReduction_190 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwQuoteContext happy_var_1) -> 
-	happyIn44
-		 (QuoteContext (getRange happy_var_1)
-	)}
-
-happyReduce_191 = happySpecReduce_1  35# happyReduction_191
-happyReduction_191 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwUnquote happy_var_1) -> 
-	happyIn44
-		 (Unquote (getRange happy_var_1)
-	)}
-
-happyReduce_192 = happySpecReduce_1  35# happyReduction_192
-happyReduction_192 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokSetN happy_var_1) -> 
-	happyIn44
-		 (SetN (getRange (fst happy_var_1)) (snd happy_var_1)
-	)}
-
-happyReduce_193 = happySpecReduce_3  35# happyReduction_193
-happyReduction_193 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymDoubleOpenBrace happy_var_1) -> 
-	case happyOut36 happy_x_2 of { happy_var_2 -> 
-	case happyOut20 happy_x_3 of { happy_var_3 -> 
-	happyIn44
-		 (InstanceArg (getRange (happy_var_1,happy_var_2,happy_var_3))
-                                                          (maybeNamed happy_var_2)
-	)}}}
-
-happyReduce_194 = happySpecReduce_3  35# happyReduction_194
-happyReduction_194 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymOpenParen happy_var_1) -> 
-	case happyOut36 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (TokSymbol SymCloseParen happy_var_3) -> 
-	happyIn44
-		 (Paren (getRange (happy_var_1,happy_var_2,happy_var_3)) happy_var_2
-	)}}}
-
-happyReduce_195 = happySpecReduce_2  35# happyReduction_195
-happyReduction_195 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) -> 
-	happyIn44
-		 (Absurd (fuseRange happy_var_1 happy_var_2)
-	)}}
-
-happyReduce_196 = happySpecReduce_2  35# happyReduction_196
-happyReduction_196 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymDoubleOpenBrace happy_var_1) -> 
-	case happyOut20 happy_x_2 of { happy_var_2 -> 
-	happyIn44
-		 (let r = fuseRange happy_var_1 happy_var_2 in InstanceArg r $ unnamed $ Absurd r
-	)}}
-
-happyReduce_197 = happySpecReduce_3  35# happyReduction_197
-happyReduction_197 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut18 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (TokSymbol SymAs happy_var_2) -> 
-	case happyOut45 happy_x_3 of { happy_var_3 -> 
-	happyIn44
-		 (As (getRange (happy_var_1,happy_var_2,happy_var_3)) happy_var_1 happy_var_3
-	)}}}
-
-happyReduce_198 = happySpecReduce_2  35# happyReduction_198
-happyReduction_198 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymDot happy_var_1) -> 
-	case happyOut45 happy_x_2 of { happy_var_2 -> 
-	happyIn44
-		 (Dot (fuseRange happy_var_1 happy_var_2) happy_var_2
-	)}}
-
-happyReduce_199 = happyReduce 4# 35# 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_1 of { (TokKeyword KwRecord happy_var_1) -> 
-	case happyOutTok happy_x_2 of { (TokSymbol SymOpenBrace happy_var_2) -> 
-	case happyOut46 happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { (TokSymbol SymCloseBrace happy_var_4) -> 
-	happyIn44
-		 (Rec (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4)) happy_var_3
-	) `HappyStk` happyRest}}}}
-
-happyReduce_200 = happyReduce 5# 35# happyReduction_200
-happyReduction_200 (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 happyOut44 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (TokSymbol SymOpenBrace happy_var_3) -> 
-	case happyOut50 happy_x_4 of { happy_var_4 -> 
-	case happyOutTok happy_x_5 of { (TokSymbol SymCloseBrace happy_var_5) -> 
-	happyIn44
-		 (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_201 = happySpecReduce_1  36# happyReduction_201
-happyReduction_201 happy_x_1
-	 =  case happyOut43 happy_x_1 of { happy_var_1 -> 
-	happyIn45
-		 (happy_var_1
-	)}
-
-happyReduce_202 = happySpecReduce_1  36# happyReduction_202
-happyReduction_202 happy_x_1
-	 =  case happyOut44 happy_x_1 of { happy_var_1 -> 
-	happyIn45
-		 (happy_var_1
-	)}
-
-happyReduce_203 = happySpecReduce_0  37# happyReduction_203
-happyReduction_203  =  happyIn46
-		 ([]
-	)
-
-happyReduce_204 = happySpecReduce_1  37# happyReduction_204
-happyReduction_204 happy_x_1
-	 =  case happyOut47 happy_x_1 of { happy_var_1 -> 
-	happyIn46
-		 (happy_var_1
-	)}
-
-happyReduce_205 = happySpecReduce_1  38# happyReduction_205
-happyReduction_205 happy_x_1
-	 =  case happyOut48 happy_x_1 of { happy_var_1 -> 
-	happyIn47
-		 ([happy_var_1]
-	)}
-
-happyReduce_206 = happySpecReduce_3  38# happyReduction_206
-happyReduction_206 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut48 happy_x_1 of { happy_var_1 -> 
-	case happyOut47 happy_x_3 of { happy_var_3 -> 
-	happyIn47
-		 (happy_var_1 : happy_var_3
-	)}}
-
-happyReduce_207 = happySpecReduce_1  39# happyReduction_207
-happyReduction_207 happy_x_1
-	 =  case happyOut52 happy_x_1 of { happy_var_1 -> 
-	happyIn48
-		 (Left  happy_var_1
-	)}
-
-happyReduce_208 = happySpecReduce_1  39# happyReduction_208
-happyReduction_208 happy_x_1
-	 =  case happyOut49 happy_x_1 of { happy_var_1 -> 
-	happyIn48
-		 (Right happy_var_1
-	)}
-
-happyReduce_209 = happySpecReduce_3  40# happyReduction_209
-happyReduction_209 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut25 happy_x_1 of { happy_var_1 -> 
-	case happyOut121 happy_x_2 of { happy_var_2 -> 
-	case happyOut72 happy_x_3 of { happy_var_3 -> 
-	happyIn49
-		 (ModuleAssignment happy_var_1 happy_var_2 happy_var_3
-	)}}}
-
-happyReduce_210 = happySpecReduce_0  41# happyReduction_210
-happyReduction_210  =  happyIn50
-		 ([]
-	)
-
-happyReduce_211 = happySpecReduce_1  41# happyReduction_211
-happyReduction_211 happy_x_1
-	 =  case happyOut51 happy_x_1 of { happy_var_1 -> 
-	happyIn50
-		 (happy_var_1
-	)}
-
-happyReduce_212 = happySpecReduce_1  42# happyReduction_212
-happyReduction_212 happy_x_1
-	 =  case happyOut52 happy_x_1 of { happy_var_1 -> 
-	happyIn51
-		 ([happy_var_1]
-	)}
-
-happyReduce_213 = happySpecReduce_3  42# happyReduction_213
-happyReduction_213 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut52 happy_x_1 of { happy_var_1 -> 
-	case happyOut51 happy_x_3 of { happy_var_3 -> 
-	happyIn51
-		 (happy_var_1 : happy_var_3
-	)}}
-
-happyReduce_214 = happySpecReduce_3  43# happyReduction_214
-happyReduction_214 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut18 happy_x_1 of { happy_var_1 -> 
-	case happyOut36 happy_x_3 of { happy_var_3 -> 
-	happyIn52
-		 (FieldAssignment happy_var_1 happy_var_3
-	)}}
-
-happyReduce_215 = happySpecReduce_2  44# happyReduction_215
-happyReduction_215 happy_x_2
-	happy_x_1
-	 =  case happyOut54 happy_x_1 of { happy_var_1 -> 
-	happyIn53
-		 (happy_var_1
-	)}
-
-happyReduce_216 = happySpecReduce_1  45# happyReduction_216
-happyReduction_216 happy_x_1
-	 =  case happyOut55 happy_x_1 of { happy_var_1 -> 
-	happyIn54
-		 ({-TeleBind-} happy_var_1
-	)}
-
-happyReduce_217 = happySpecReduce_2  46# happyReduction_217
-happyReduction_217 happy_x_2
-	happy_x_1
-	 =  case happyOut56 happy_x_1 of { happy_var_1 -> 
-	case happyOut55 happy_x_2 of { happy_var_2 -> 
-	happyIn55
-		 (happy_var_1 : happy_var_2
-	)}}
-
-happyReduce_218 = happySpecReduce_1  46# happyReduction_218
-happyReduction_218 happy_x_1
-	 =  case happyOut56 happy_x_1 of { happy_var_1 -> 
-	happyIn55
-		 ([happy_var_1]
-	)}
-
-happyReduce_219 = happyReduce 4# 47# happyReduction_219
-happyReduction_219 (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 happyOut58 happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { (TokSymbol SymCloseParen happy_var_4) -> 
-	happyIn56
-		 (setRange (getRange (happy_var_2,happy_var_3,happy_var_4)) $
-                             setRelevance Irrelevant happy_var_3
-	) `HappyStk` happyRest}}}
-
-happyReduce_220 = happyReduce 4# 47# happyReduction_220
-happyReduction_220 (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 happyOut57 happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { (TokSymbol SymCloseBrace happy_var_4) -> 
-	happyIn56
-		 (setRange (getRange (happy_var_2,happy_var_3,happy_var_4)) $
-                             setHiding Hidden $
-                             setRelevance Irrelevant happy_var_3
-	) `HappyStk` happyRest}}}
-
-happyReduce_221 = happyReduce 4# 47# happyReduction_221
-happyReduction_221 (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 happyOut57 happy_x_3 of { happy_var_3 -> 
-	case happyOut20 happy_x_4 of { happy_var_4 -> 
-	happyIn56
-		 (setRange (getRange (happy_var_2,happy_var_3,happy_var_4)) $
-                             setHiding Instance $
-                             setRelevance Irrelevant happy_var_3
-	) `HappyStk` happyRest}}}
-
-happyReduce_222 = happyReduce 4# 47# happyReduction_222
-happyReduction_222 (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 happyOut58 happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { (TokSymbol SymCloseParen happy_var_4) -> 
-	happyIn56
-		 (setRange (getRange (happy_var_2,happy_var_3,happy_var_4)) $
-                             setRelevance NonStrict happy_var_3
-	) `HappyStk` happyRest}}}
-
-happyReduce_223 = happyReduce 4# 47# happyReduction_223
-happyReduction_223 (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 happyOut57 happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { (TokSymbol SymCloseBrace happy_var_4) -> 
-	happyIn56
-		 (setRange (getRange (happy_var_2,happy_var_3,happy_var_4)) $
-                             setHiding Hidden $
-                             setRelevance NonStrict happy_var_3
-	) `HappyStk` happyRest}}}
-
-happyReduce_224 = happyReduce 4# 47# happyReduction_224
-happyReduction_224 (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 happyOut57 happy_x_3 of { happy_var_3 -> 
-	case happyOut20 happy_x_4 of { happy_var_4 -> 
-	happyIn56
-		 (setRange (getRange (happy_var_2,happy_var_3,happy_var_4)) $
-                             setHiding Instance $
-                             setRelevance NonStrict happy_var_3
-	) `HappyStk` happyRest}}}
-
-happyReduce_225 = happySpecReduce_3  47# happyReduction_225
-happyReduction_225 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymOpenParen happy_var_1) -> 
-	case happyOut58 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (TokSymbol SymCloseParen happy_var_3) -> 
-	happyIn56
-		 (setRange (getRange (happy_var_1,happy_var_2,happy_var_3)) happy_var_2
-	)}}}
-
-happyReduce_226 = happySpecReduce_3  47# happyReduction_226
-happyReduction_226 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymDoubleOpenBrace happy_var_1) -> 
-	case happyOut57 happy_x_2 of { happy_var_2 -> 
-	case happyOut20 happy_x_3 of { happy_var_3 -> 
-	happyIn56
-		 (setRange (getRange (happy_var_1,happy_var_2,happy_var_3)) $
-                             setHiding Instance happy_var_2
-	)}}}
-
-happyReduce_227 = happySpecReduce_3  47# happyReduction_227
-happyReduction_227 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymOpenBrace happy_var_1) -> 
-	case happyOut57 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (TokSymbol SymCloseBrace happy_var_3) -> 
-	happyIn56
-		 (setRange (getRange (happy_var_1,happy_var_2,happy_var_3)) $
-                             setHiding Hidden happy_var_2
-	)}}}
-
-happyReduce_228 = happySpecReduce_3  47# happyReduction_228
-happyReduction_228 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymOpenParen happy_var_1) -> 
-	case happyOut120 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { (TokSymbol SymCloseParen happy_var_3) -> 
-	happyIn56
-		 (tLet (getRange (happy_var_1,happy_var_3)) happy_var_2
-	)}}}
-
-happyReduce_229 = happyReduce 4# 47# happyReduction_229
-happyReduction_229 (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 happyOut164 happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { (TokSymbol SymCloseParen happy_var_4) -> 
-	happyIn56
-		 (tLet (getRange (happy_var_1,happy_var_4)) happy_var_3
-	) `HappyStk` happyRest}}}
-
-happyReduce_230 = happySpecReduce_3  48# happyReduction_230
-happyReduction_230 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut28 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (TokSymbol SymColon happy_var_2) -> 
-	case happyOut36 happy_x_3 of { happy_var_3 -> 
-	happyIn57
-		 (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_231 = happySpecReduce_3  49# happyReduction_231
-happyReduction_231 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut30 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (TokSymbol SymColon happy_var_2) -> 
-	case happyOut36 happy_x_3 of { happy_var_3 -> 
-	happyIn58
-		 (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_232 = happyMonadReduce 2# 50# happyReduction_232
-happyReduction_232 (happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOut61 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 (happyIn59 r))
-
-happyReduce_233 = happyMonadReduce 1# 51# happyReduction_233
-happyReduction_233 (happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOut62 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)
-                   _           -> parseError "Unsupported variant of lambda"
-      Right es -> return $ Right es)}
-	) (\r -> happyReturn (happyIn60 r))
-
-happyReduce_234 = happySpecReduce_2  52# happyReduction_234
-happyReduction_234 happy_x_2
-	happy_x_1
-	 =  case happyOut70 happy_x_1 of { happy_var_1 -> 
-	case happyOut61 happy_x_2 of { happy_var_2 -> 
-	happyIn61
-		 (map Right happy_var_1 ++ happy_var_2
-	)}}
-
-happyReduce_235 = happySpecReduce_2  52# happyReduction_235
-happyReduction_235 happy_x_2
-	happy_x_1
-	 =  case happyOut56 happy_x_1 of { happy_var_1 -> 
-	case happyOut61 happy_x_2 of { happy_var_2 -> 
-	happyIn61
-		 (Right (DomainFull happy_var_1) : happy_var_2
-	)}}
-
-happyReduce_236 = happySpecReduce_1  52# happyReduction_236
-happyReduction_236 happy_x_1
-	 =  case happyOut70 happy_x_1 of { happy_var_1 -> 
-	happyIn61
-		 (map Right happy_var_1
-	)}
-
-happyReduce_237 = happySpecReduce_1  52# happyReduction_237
-happyReduction_237 happy_x_1
-	 =  case happyOut56 happy_x_1 of { happy_var_1 -> 
-	happyIn61
-		 ([Right $ DomainFull happy_var_1]
-	)}
-
-happyReduce_238 = happySpecReduce_2  52# happyReduction_238
-happyReduction_238 happy_x_2
-	happy_x_1
-	 =  happyIn61
-		 ([Left NotHidden]
-	)
-
-happyReduce_239 = happySpecReduce_2  52# happyReduction_239
-happyReduction_239 happy_x_2
-	happy_x_1
-	 =  happyIn61
-		 ([Left Hidden]
-	)
-
-happyReduce_240 = happySpecReduce_2  52# happyReduction_240
-happyReduction_240 happy_x_2
-	happy_x_1
-	 =  happyIn61
-		 ([Left Instance]
-	)
-
-happyReduce_241 = happySpecReduce_2  53# happyReduction_241
-happyReduction_241 happy_x_2
-	happy_x_1
-	 =  case happyOut70 happy_x_1 of { happy_var_1 -> 
-	case happyOut61 happy_x_2 of { happy_var_2 -> 
-	happyIn62
-		 (Left $ map Right happy_var_1 ++ happy_var_2
-	)}}
-
-happyReduce_242 = happySpecReduce_2  53# happyReduction_242
-happyReduction_242 happy_x_2
-	happy_x_1
-	 =  case happyOut56 happy_x_1 of { happy_var_1 -> 
-	case happyOut61 happy_x_2 of { happy_var_2 -> 
-	happyIn62
-		 (Left $ Right (DomainFull happy_var_1) : happy_var_2
-	)}}
-
-happyReduce_243 = happySpecReduce_1  53# happyReduction_243
-happyReduction_243 happy_x_1
-	 =  case happyOut71 happy_x_1 of { happy_var_1 -> 
-	happyIn62
-		 (case happy_var_1 of
-                                    Left lb -> Left $ map Right lb
-                                    Right es -> Right es
-	)}
-
-happyReduce_244 = happySpecReduce_1  53# happyReduction_244
-happyReduction_244 happy_x_1
-	 =  case happyOut56 happy_x_1 of { happy_var_1 -> 
-	happyIn62
-		 (Left [Right $ DomainFull happy_var_1]
-	)}
-
-happyReduce_245 = happySpecReduce_2  53# happyReduction_245
-happyReduction_245 happy_x_2
-	happy_x_1
-	 =  happyIn62
-		 (Left [Left NotHidden]
-	)
-
-happyReduce_246 = happySpecReduce_2  53# happyReduction_246
-happyReduction_246 happy_x_2
-	happy_x_1
-	 =  happyIn62
-		 (Left [Left Hidden]
-	)
-
-happyReduce_247 = happySpecReduce_2  53# happyReduction_247
-happyReduction_247 happy_x_2
-	happy_x_1
-	 =  happyIn62
-		 (Left [Left Instance]
-	)
-
-happyReduce_248 = happyMonadReduce 3# 54# happyReduction_248
-happyReduction_248 (happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOut42 happy_x_1 of { happy_var_1 -> 
-	case happyOut36 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, False))}}
-	) (\r -> happyReturn (happyIn63 r))
-
-happyReduce_249 = happyMonadReduce 4# 54# happyReduction_249
-happyReduction_249 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOut42 happy_x_2 of { happy_var_2 -> 
-	case happyOut36 happy_x_4 of { happy_var_4 -> 
-	( do
-      p <- exprToLHS (RawApp (getRange happy_var_2) happy_var_2) ;
-      return (p [] [], RHS happy_var_4, NoWhere, True))}}
-	) (\r -> happyReturn (happyIn63 r))
-
-happyReduce_250 = happyMonadReduce 1# 55# happyReduction_250
-happyReduction_250 (happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOut39 happy_x_1 of { happy_var_1 -> 
-	( do
-      p <- exprToLHS (RawApp (getRange happy_var_1) happy_var_1);
-      return (p [] [], AbsurdRHS, NoWhere, False))}
-	) (\r -> happyReturn (happyIn64 r))
-
-happyReduce_251 = happyMonadReduce 2# 55# happyReduction_251
-happyReduction_251 (happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOut39 happy_x_2 of { happy_var_2 -> 
-	( do
-      p <- exprToLHS (RawApp (getRange happy_var_2) happy_var_2);
-      return (p [] [], AbsurdRHS, NoWhere, True))}
-	) (\r -> happyReturn (happyIn64 r))
-
-happyReduce_252 = happySpecReduce_1  56# happyReduction_252
-happyReduction_252 happy_x_1
-	 =  case happyOut63 happy_x_1 of { happy_var_1 -> 
-	happyIn65
-		 (happy_var_1
-	)}
-
-happyReduce_253 = happySpecReduce_1  56# happyReduction_253
-happyReduction_253 happy_x_1
-	 =  case happyOut64 happy_x_1 of { happy_var_1 -> 
-	happyIn65
-		 (happy_var_1
-	)}
-
-happyReduce_254 = happySpecReduce_3  57# happyReduction_254
-happyReduction_254 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut66 happy_x_1 of { happy_var_1 -> 
-	case happyOut65 happy_x_3 of { happy_var_3 -> 
-	happyIn66
-		 (happy_var_3 : happy_var_1
-	)}}
-
-happyReduce_255 = happySpecReduce_3  57# happyReduction_255
-happyReduction_255 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut64 happy_x_1 of { happy_var_1 -> 
-	case happyOut65 happy_x_3 of { happy_var_3 -> 
-	happyIn66
-		 ([happy_var_3, happy_var_1]
-	)}}
-
-happyReduce_256 = happySpecReduce_1  57# happyReduction_256
-happyReduction_256 happy_x_1
-	 =  case happyOut63 happy_x_1 of { happy_var_1 -> 
-	happyIn66
-		 ([happy_var_1]
-	)}
-
-happyReduce_257 = happySpecReduce_2  58# happyReduction_257
-happyReduction_257 happy_x_2
-	happy_x_1
-	 =  case happyOut68 happy_x_1 of { happy_var_1 -> 
-	happyIn67
-		 (happy_var_1
-	)}
-
-happyReduce_258 = happySpecReduce_2  59# happyReduction_258
-happyReduction_258 happy_x_2
-	happy_x_1
-	 =  case happyOut70 happy_x_1 of { happy_var_1 -> 
-	case happyOut68 happy_x_2 of { happy_var_2 -> 
-	happyIn68
-		 (happy_var_1 ++ happy_var_2
-	)}}
-
-happyReduce_259 = happySpecReduce_2  59# happyReduction_259
-happyReduction_259 happy_x_2
-	happy_x_1
-	 =  case happyOut56 happy_x_1 of { happy_var_1 -> 
-	case happyOut68 happy_x_2 of { happy_var_2 -> 
-	happyIn68
-		 (DomainFull happy_var_1 : happy_var_2
-	)}}
-
-happyReduce_260 = happySpecReduce_1  59# happyReduction_260
-happyReduction_260 happy_x_1
-	 =  case happyOut70 happy_x_1 of { happy_var_1 -> 
-	happyIn68
-		 (happy_var_1
-	)}
-
-happyReduce_261 = happySpecReduce_1  59# happyReduction_261
-happyReduction_261 happy_x_1
-	 =  case happyOut56 happy_x_1 of { happy_var_1 -> 
-	happyIn68
-		 ([DomainFull happy_var_1]
-	)}
-
-happyReduce_262 = happySpecReduce_2  60# happyReduction_262
-happyReduction_262 happy_x_2
-	happy_x_1
-	 =  case happyOut70 happy_x_1 of { happy_var_1 -> 
-	case happyOut69 happy_x_2 of { happy_var_2 -> 
-	happyIn69
-		 (happy_var_1 ++ happy_var_2
-	)}}
-
-happyReduce_263 = happySpecReduce_2  60# happyReduction_263
-happyReduction_263 happy_x_2
-	happy_x_1
-	 =  case happyOut56 happy_x_1 of { happy_var_1 -> 
-	case happyOut69 happy_x_2 of { happy_var_2 -> 
-	happyIn69
-		 (DomainFull happy_var_1 : happy_var_2
-	)}}
-
-happyReduce_264 = happySpecReduce_0  60# happyReduction_264
-happyReduction_264  =  happyIn69
-		 ([]
-	)
-
-happyReduce_265 = happySpecReduce_1  61# happyReduction_265
-happyReduction_265 happy_x_1
-	 =  case happyOut71 happy_x_1 of { happy_var_1 -> 
-	happyIn70
-		 (case happy_var_1 of
-                             Left lbs -> lbs
-                             Right _ -> fail "expected sequence of bound identifiers, not absurd pattern"
-	)}
-
-happyReduce_266 = happySpecReduce_1  62# happyReduction_266
-happyReduction_266 happy_x_1
-	 =  case happyOut26 happy_x_1 of { happy_var_1 -> 
-	happyIn71
-		 (Left [DomainFree defaultArgInfo $ mkBoundName_ happy_var_1]
-	)}
-
-happyReduce_267 = happySpecReduce_2  62# happyReduction_267
-happyReduction_267 happy_x_2
-	happy_x_1
-	 =  case happyOut26 happy_x_2 of { happy_var_2 -> 
-	happyIn71
-		 (Left [DomainFree (setRelevance Irrelevant $ defaultArgInfo) $ mkBoundName_ happy_var_2]
-	)}
-
-happyReduce_268 = happySpecReduce_2  62# happyReduction_268
-happyReduction_268 happy_x_2
-	happy_x_1
-	 =  case happyOut26 happy_x_2 of { happy_var_2 -> 
-	happyIn71
-		 (Left [DomainFree (setRelevance NonStrict $ defaultArgInfo) $ mkBoundName_ happy_var_2]
-	)}
-
-happyReduce_269 = happySpecReduce_3  62# happyReduction_269
-happyReduction_269 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut29 happy_x_2 of { happy_var_2 -> 
-	happyIn71
-		 (mapLeft (map (DomainFree (setHiding Hidden $ defaultArgInfo) . mkBoundName_)) happy_var_2
-	)}
-
-happyReduce_270 = happySpecReduce_3  62# happyReduction_270
-happyReduction_270 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut28 happy_x_2 of { happy_var_2 -> 
-	happyIn71
-		 (Left $ map (DomainFree (setHiding Instance $ defaultArgInfo) . mkBoundName_) happy_var_2
-	)}
-
-happyReduce_271 = happyReduce 4# 62# happyReduction_271
-happyReduction_271 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOut28 happy_x_3 of { happy_var_3 -> 
-	happyIn71
-		 (Left $ map (DomainFree (setHiding Hidden $ setRelevance Irrelevant $ defaultArgInfo) . mkBoundName_) happy_var_3
-	) `HappyStk` happyRest}
-
-happyReduce_272 = happyReduce 4# 62# happyReduction_272
-happyReduction_272 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOut28 happy_x_3 of { happy_var_3 -> 
-	happyIn71
-		 (Left $ map (DomainFree (setHiding Instance $ setRelevance Irrelevant $ defaultArgInfo) . mkBoundName_) happy_var_3
-	) `HappyStk` happyRest}
-
-happyReduce_273 = happyReduce 4# 62# happyReduction_273
-happyReduction_273 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOut28 happy_x_3 of { happy_var_3 -> 
-	happyIn71
-		 (Left $ map (DomainFree (setHiding Hidden $ setRelevance NonStrict $ defaultArgInfo) . mkBoundName_) happy_var_3
-	) `HappyStk` happyRest}
-
-happyReduce_274 = happyReduce 4# 62# happyReduction_274
-happyReduction_274 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOut28 happy_x_3 of { happy_var_3 -> 
-	happyIn71
-		 (Left $ map (DomainFree  (setHiding Instance $ setRelevance NonStrict $ defaultArgInfo) . mkBoundName_) happy_var_3
-	) `HappyStk` happyRest}
-
-happyReduce_275 = happyMonadReduce 1# 63# happyReduction_275
-happyReduction_275 (happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOut73 happy_x_1 of { happy_var_1 -> 
-	( mergeImportDirectives happy_var_1)}
-	) (\r -> happyReturn (happyIn72 r))
-
-happyReduce_276 = happySpecReduce_2  64# happyReduction_276
-happyReduction_276 happy_x_2
-	happy_x_1
-	 =  case happyOut74 happy_x_1 of { happy_var_1 -> 
-	case happyOut73 happy_x_2 of { happy_var_2 -> 
-	happyIn73
-		 (happy_var_1 : happy_var_2
-	)}}
-
-happyReduce_277 = happySpecReduce_0  64# happyReduction_277
-happyReduction_277  =  happyIn73
-		 ([]
-	)
-
-happyReduce_278 = happySpecReduce_1  65# happyReduction_278
-happyReduction_278 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwPublic happy_var_1) -> 
-	happyIn74
-		 (defaultImportDir { importDirRange = getRange happy_var_1, publicOpen = True }
-	)}
-
-happyReduce_279 = happySpecReduce_1  65# happyReduction_279
-happyReduction_279 happy_x_1
-	 =  case happyOut75 happy_x_1 of { happy_var_1 -> 
-	happyIn74
-		 (defaultImportDir { importDirRange = snd happy_var_1, using    = fst happy_var_1 }
-	)}
-
-happyReduce_280 = happySpecReduce_1  65# happyReduction_280
-happyReduction_280 happy_x_1
-	 =  case happyOut76 happy_x_1 of { happy_var_1 -> 
-	happyIn74
-		 (defaultImportDir { importDirRange = snd happy_var_1, hiding   = fst happy_var_1 }
-	)}
-
-happyReduce_281 = happySpecReduce_1  65# happyReduction_281
-happyReduction_281 happy_x_1
-	 =  case happyOut77 happy_x_1 of { happy_var_1 -> 
-	happyIn74
-		 (defaultImportDir { importDirRange = snd happy_var_1, impRenaming = fst happy_var_1 }
-	)}
-
-happyReduce_282 = happyReduce 4# 66# happyReduction_282
-happyReduction_282 (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 happyOut82 happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { (TokSymbol SymCloseParen happy_var_4) -> 
-	happyIn75
-		 ((Using happy_var_3 , getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4))
-	) `HappyStk` happyRest}}}}
-
-happyReduce_283 = happyReduce 4# 67# happyReduction_283
-happyReduction_283 (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 happyOut82 happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { (TokSymbol SymCloseParen happy_var_4) -> 
-	happyIn76
-		 ((happy_var_3 , getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4))
-	) `HappyStk` happyRest}}}}
-
-happyReduce_284 = happyReduce 4# 68# happyReduction_284
-happyReduction_284 (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 happyOut78 happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { (TokSymbol SymCloseParen happy_var_4) -> 
-	happyIn77
-		 ((happy_var_3 , getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4))
-	) `HappyStk` happyRest}}}}
-
-happyReduce_285 = happySpecReduce_3  68# happyReduction_285
-happyReduction_285 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) -> 
-	happyIn77
-		 (([] , getRange (happy_var_1,happy_var_2,happy_var_3))
-	)}}}
-
-happyReduce_286 = happySpecReduce_3  69# happyReduction_286
-happyReduction_286 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut79 happy_x_1 of { happy_var_1 -> 
-	case happyOut78 happy_x_3 of { happy_var_3 -> 
-	happyIn78
-		 (happy_var_1 : happy_var_3
-	)}}
-
-happyReduce_287 = happySpecReduce_1  69# happyReduction_287
-happyReduction_287 happy_x_1
-	 =  case happyOut79 happy_x_1 of { happy_var_1 -> 
-	happyIn78
-		 ([happy_var_1]
-	)}
-
-happyReduce_288 = happySpecReduce_3  70# happyReduction_288
-happyReduction_288 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut80 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (TokKeyword KwTo happy_var_2) -> 
-	case happyOut18 happy_x_3 of { happy_var_3 -> 
-	happyIn79
-		 (Renaming happy_var_1 (setImportedName happy_var_1 happy_var_3) (getRange happy_var_2)
-	)}}}
-
-happyReduce_289 = happySpecReduce_2  71# happyReduction_289
-happyReduction_289 happy_x_2
-	happy_x_1
-	 =  case happyOut18 happy_x_2 of { happy_var_2 -> 
-	happyIn80
-		 (ImportedName happy_var_2
-	)}
-
-happyReduce_290 = happySpecReduce_3  71# happyReduction_290
-happyReduction_290 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut18 happy_x_3 of { happy_var_3 -> 
-	happyIn80
-		 (ImportedModule happy_var_3
-	)}
-
-happyReduce_291 = happySpecReduce_1  72# happyReduction_291
-happyReduction_291 happy_x_1
-	 =  case happyOut18 happy_x_1 of { happy_var_1 -> 
-	happyIn81
-		 (ImportedName happy_var_1
-	)}
-
-happyReduce_292 = happySpecReduce_2  72# happyReduction_292
-happyReduction_292 happy_x_2
-	happy_x_1
-	 =  case happyOut18 happy_x_2 of { happy_var_2 -> 
-	happyIn81
-		 (ImportedModule happy_var_2
-	)}
-
-happyReduce_293 = happySpecReduce_0  73# happyReduction_293
-happyReduction_293  =  happyIn82
-		 ([]
-	)
-
-happyReduce_294 = happySpecReduce_1  73# happyReduction_294
-happyReduction_294 happy_x_1
-	 =  case happyOut83 happy_x_1 of { happy_var_1 -> 
-	happyIn82
-		 (happy_var_1
-	)}
-
-happyReduce_295 = happySpecReduce_1  74# happyReduction_295
-happyReduction_295 happy_x_1
-	 =  case happyOut81 happy_x_1 of { happy_var_1 -> 
-	happyIn83
-		 ([happy_var_1]
-	)}
-
-happyReduce_296 = happySpecReduce_3  74# happyReduction_296
-happyReduction_296 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut81 happy_x_1 of { happy_var_1 -> 
-	case happyOut83 happy_x_3 of { happy_var_3 -> 
-	happyIn83
-		 (happy_var_1 : happy_var_3
-	)}}
-
-happyReduce_297 = happyMonadReduce 3# 75# happyReduction_297
-happyReduction_297 (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 happyOut87 happy_x_2 of { happy_var_2 -> 
-	case happyOut86 happy_x_3 of { happy_var_3 -> 
-	( exprToLHS happy_var_1 >>= \p -> return (p happy_var_2 happy_var_3))}}}
-	) (\r -> happyReturn (happyIn84 r))
-
-happyReduce_298 = happyReduce 4# 75# happyReduction_298
-happyReduction_298 (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 happyOut85 happy_x_2 of { happy_var_2 -> 
-	case happyOut87 happy_x_3 of { happy_var_3 -> 
-	case happyOut86 happy_x_4 of { happy_var_4 -> 
-	happyIn84
-		 (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_299 = happySpecReduce_0  76# happyReduction_299
-happyReduction_299  =  happyIn85
-		 ([]
-	)
-
-happyReduce_300 = happyMonadReduce 3# 76# happyReduction_300
-happyReduction_300 (happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOut42 happy_x_2 of { happy_var_2 -> 
-	case happyOut85 happy_x_3 of { happy_var_3 -> 
-	( exprToPattern (RawApp (getRange happy_var_2) happy_var_2) >>= \p ->
-                   return (p : happy_var_3))}}
-	) (\r -> happyReturn (happyIn85 r))
-
-happyReduce_301 = happySpecReduce_0  77# happyReduction_301
-happyReduction_301  =  happyIn86
-		 ([]
-	)
-
-happyReduce_302 = happySpecReduce_2  77# happyReduction_302
-happyReduction_302 happy_x_2
-	happy_x_1
-	 =  case happyOut36 happy_x_2 of { happy_var_2 -> 
-	happyIn86
-		 (case happy_var_2 of { WithApp _ e es -> e : es; e -> [e] }
-	)}
-
-happyReduce_303 = happySpecReduce_0  78# happyReduction_303
-happyReduction_303  =  happyIn87
-		 ([]
-	)
-
-happyReduce_304 = happySpecReduce_2  78# happyReduction_304
-happyReduction_304 happy_x_2
-	happy_x_1
-	 =  case happyOut37 happy_x_2 of { happy_var_2 -> 
-	happyIn87
-		 (case happy_var_2 of { WithApp _ e es -> e : es; e -> [e] }
-	)}
-
-happyReduce_305 = happySpecReduce_0  79# happyReduction_305
-happyReduction_305  =  happyIn88
-		 (NoWhere
-	)
-
-happyReduce_306 = happySpecReduce_2  79# happyReduction_306
-happyReduction_306 happy_x_2
-	happy_x_1
-	 =  case happyOut165 happy_x_2 of { happy_var_2 -> 
-	happyIn88
-		 (AnyWhere happy_var_2
-	)}
-
-happyReduce_307 = happyReduce 4# 79# happyReduction_307
-happyReduction_307 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOut18 happy_x_2 of { happy_var_2 -> 
-	case happyOut165 happy_x_4 of { happy_var_4 -> 
-	happyIn88
-		 (SomeWhere happy_var_2 happy_var_4
-	) `HappyStk` happyRest}}
-
-happyReduce_308 = happyReduce 4# 79# happyReduction_308
-happyReduction_308 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOut125 happy_x_2 of { happy_var_2 -> 
-	case happyOut165 happy_x_4 of { happy_var_4 -> 
-	happyIn88
-		 (SomeWhere happy_var_2 happy_var_4
-	) `HappyStk` happyRest}}
-
-happyReduce_309 = happySpecReduce_2  80# happyReduction_309
-happyReduction_309 happy_x_2
-	happy_x_1
-	 =  case happyOut36 happy_x_1 of { happy_var_1 -> 
-	case happyOut88 happy_x_2 of { happy_var_2 -> 
-	happyIn89
-		 (ExprWhere happy_var_1 happy_var_2
-	)}}
-
-happyReduce_310 = happySpecReduce_1  81# happyReduction_310
-happyReduction_310 happy_x_1
-	 =  case happyOut101 happy_x_1 of { happy_var_1 -> 
-	happyIn90
-		 (happy_var_1
-	)}
-
-happyReduce_311 = happySpecReduce_1  81# happyReduction_311
-happyReduction_311 happy_x_1
-	 =  case happyOut93 happy_x_1 of { happy_var_1 -> 
-	happyIn90
-		 (happy_var_1
-	)}
-
-happyReduce_312 = happySpecReduce_1  81# happyReduction_312
-happyReduction_312 happy_x_1
-	 =  case happyOut95 happy_x_1 of { happy_var_1 -> 
-	happyIn90
-		 ([happy_var_1]
-	)}
-
-happyReduce_313 = happySpecReduce_1  81# happyReduction_313
-happyReduction_313 happy_x_1
-	 =  case happyOut96 happy_x_1 of { happy_var_1 -> 
-	happyIn90
-		 ([happy_var_1]
-	)}
-
-happyReduce_314 = happySpecReduce_1  81# happyReduction_314
-happyReduction_314 happy_x_1
-	 =  case happyOut97 happy_x_1 of { happy_var_1 -> 
-	happyIn90
-		 ([happy_var_1]
-	)}
-
-happyReduce_315 = happySpecReduce_1  81# happyReduction_315
-happyReduction_315 happy_x_1
-	 =  case happyOut98 happy_x_1 of { happy_var_1 -> 
-	happyIn90
-		 ([happy_var_1]
-	)}
-
-happyReduce_316 = happySpecReduce_1  81# happyReduction_316
-happyReduction_316 happy_x_1
-	 =  case happyOut100 happy_x_1 of { happy_var_1 -> 
-	happyIn90
-		 ([happy_var_1]
-	)}
-
-happyReduce_317 = happySpecReduce_1  81# happyReduction_317
-happyReduction_317 happy_x_1
-	 =  case happyOut102 happy_x_1 of { happy_var_1 -> 
-	happyIn90
-		 ([happy_var_1]
-	)}
-
-happyReduce_318 = happySpecReduce_1  81# happyReduction_318
-happyReduction_318 happy_x_1
-	 =  case happyOut103 happy_x_1 of { happy_var_1 -> 
-	happyIn90
-		 ([happy_var_1]
-	)}
-
-happyReduce_319 = happySpecReduce_1  81# happyReduction_319
-happyReduction_319 happy_x_1
-	 =  case happyOut104 happy_x_1 of { happy_var_1 -> 
-	happyIn90
-		 ([happy_var_1]
-	)}
-
-happyReduce_320 = happySpecReduce_1  81# happyReduction_320
-happyReduction_320 happy_x_1
-	 =  case happyOut105 happy_x_1 of { happy_var_1 -> 
-	happyIn90
-		 ([happy_var_1]
-	)}
-
-happyReduce_321 = happySpecReduce_1  81# happyReduction_321
-happyReduction_321 happy_x_1
-	 =  case happyOut106 happy_x_1 of { happy_var_1 -> 
-	happyIn90
-		 ([happy_var_1]
-	)}
-
-happyReduce_322 = happySpecReduce_1  81# happyReduction_322
-happyReduction_322 happy_x_1
-	 =  case happyOut107 happy_x_1 of { happy_var_1 -> 
-	happyIn90
-		 ([happy_var_1]
-	)}
-
-happyReduce_323 = happySpecReduce_1  81# happyReduction_323
-happyReduction_323 happy_x_1
-	 =  case happyOut108 happy_x_1 of { happy_var_1 -> 
-	happyIn90
-		 ([happy_var_1]
-	)}
-
-happyReduce_324 = happySpecReduce_1  81# happyReduction_324
-happyReduction_324 happy_x_1
-	 =  case happyOut120 happy_x_1 of { happy_var_1 -> 
-	happyIn90
-		 (happy_var_1
-	)}
-
-happyReduce_325 = happySpecReduce_1  81# happyReduction_325
-happyReduction_325 happy_x_1
-	 =  case happyOut123 happy_x_1 of { happy_var_1 -> 
-	happyIn90
-		 ([happy_var_1]
-	)}
-
-happyReduce_326 = happySpecReduce_1  81# happyReduction_326
-happyReduction_326 happy_x_1
-	 =  case happyOut124 happy_x_1 of { happy_var_1 -> 
-	happyIn90
-		 ([happy_var_1]
-	)}
-
-happyReduce_327 = happySpecReduce_1  81# happyReduction_327
-happyReduction_327 happy_x_1
-	 =  case happyOut127 happy_x_1 of { happy_var_1 -> 
-	happyIn90
-		 ([happy_var_1]
-	)}
-
-happyReduce_328 = happySpecReduce_1  81# happyReduction_328
-happyReduction_328 happy_x_1
-	 =  case happyOut110 happy_x_1 of { happy_var_1 -> 
-	happyIn90
-		 ([happy_var_1]
-	)}
-
-happyReduce_329 = happySpecReduce_1  81# happyReduction_329
-happyReduction_329 happy_x_1
-	 =  case happyOut111 happy_x_1 of { happy_var_1 -> 
-	happyIn90
-		 ([happy_var_1]
-	)}
-
-happyReduce_330 = happySpecReduce_1  81# happyReduction_330
-happyReduction_330 happy_x_1
-	 =  case happyOut109 happy_x_1 of { happy_var_1 -> 
-	happyIn90
-		 ([happy_var_1]
-	)}
-
-happyReduce_331 = happySpecReduce_3  82# happyReduction_331
-happyReduction_331 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut19 happy_x_1 of { happy_var_1 -> 
-	case happyOut36 happy_x_3 of { happy_var_3 -> 
-	happyIn91
-		 (map (\ x -> TypeSig defaultArgInfo x happy_var_3) happy_var_1
-	)}}
-
-happyReduce_332 = happySpecReduce_3  83# happyReduction_332
-happyReduction_332 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut23 happy_x_1 of { happy_var_1 -> 
-	case happyOut36 happy_x_3 of { happy_var_3 -> 
-	happyIn92
-		 (map (fmap (\ x -> TypeSig defaultArgInfo x happy_var_3)) happy_var_1
-	)}}
-
-happyReduce_333 = happySpecReduce_2  83# happyReduction_333
-happyReduction_333 happy_x_2
-	happy_x_1
-	 =  case happyOut157 happy_x_2 of { happy_var_2 -> 
-	happyIn92
-		 (let
-      setInstance (TypeSig info x t) = TypeSig (setHiding Instance info) x t
-      setInstance _ = __IMPOSSIBLE__ in
-    map (fmap setInstance) happy_var_2
-	)}
-
-happyReduce_334 = happyMonadReduce 3# 84# happyReduction_334
-happyReduction_334 (happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOut84 happy_x_1 of { happy_var_1 -> 
-	case happyOut94 happy_x_2 of { happy_var_2 -> 
-	case happyOut88 happy_x_3 of { happy_var_3 -> 
-	( funClauseOrTypeSigs happy_var_1 happy_var_2 happy_var_3)}}}
-	) (\r -> happyReturn (happyIn93 r))
-
-happyReduce_335 = happySpecReduce_2  85# happyReduction_335
-happyReduction_335 happy_x_2
-	happy_x_1
-	 =  case happyOut36 happy_x_2 of { happy_var_2 -> 
-	happyIn94
-		 (JustRHS (RHS happy_var_2)
-	)}
-
-happyReduce_336 = happySpecReduce_2  85# happyReduction_336
-happyReduction_336 happy_x_2
-	happy_x_1
-	 =  case happyOut36 happy_x_2 of { happy_var_2 -> 
-	happyIn94
-		 (TypeSigsRHS happy_var_2
-	)}
-
-happyReduce_337 = happySpecReduce_0  85# happyReduction_337
-happyReduction_337  =  happyIn94
-		 (JustRHS AbsurdRHS
-	)
-
-happyReduce_338 = happyReduce 7# 86# happyReduction_338
-happyReduction_338 (happy_x_7 `HappyStk`
-	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 happyOutTok happy_x_1 of { (TokKeyword KwData happy_var_1) -> 
-	case happyOut18 happy_x_2 of { happy_var_2 -> 
-	case happyOut69 happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { (TokSymbol SymColon happy_var_4) -> 
-	case happyOut36 happy_x_5 of { happy_var_5 -> 
-	case happyOutTok happy_x_6 of { (TokKeyword KwWhere happy_var_6) -> 
-	case happyOut165 happy_x_7 of { happy_var_7 -> 
-	happyIn95
-		 (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_339 = happyReduce 7# 86# happyReduction_339
-happyReduction_339 (happy_x_7 `HappyStk`
-	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 happyOutTok happy_x_1 of { (TokKeyword KwCoData happy_var_1) -> 
-	case happyOut18 happy_x_2 of { happy_var_2 -> 
-	case happyOut69 happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { (TokSymbol SymColon happy_var_4) -> 
-	case happyOut36 happy_x_5 of { happy_var_5 -> 
-	case happyOutTok happy_x_6 of { (TokKeyword KwWhere happy_var_6) -> 
-	case happyOut165 happy_x_7 of { happy_var_7 -> 
-	happyIn95
-		 (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_340 = happyReduce 5# 86# 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 happyOutTok happy_x_1 of { (TokKeyword KwData happy_var_1) -> 
-	case happyOut18 happy_x_2 of { happy_var_2 -> 
-	case happyOut69 happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { (TokKeyword KwWhere happy_var_4) -> 
-	case happyOut165 happy_x_5 of { happy_var_5 -> 
-	happyIn95
-		 (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_341 = happyReduce 5# 86# happyReduction_341
-happyReduction_341 (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 KwCoData happy_var_1) -> 
-	case happyOut18 happy_x_2 of { happy_var_2 -> 
-	case happyOut69 happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { (TokKeyword KwWhere happy_var_4) -> 
-	case happyOut165 happy_x_5 of { happy_var_5 -> 
-	happyIn95
-		 (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_342 = happyReduce 5# 87# happyReduction_342
-happyReduction_342 (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 KwData happy_var_1) -> 
-	case happyOut18 happy_x_2 of { happy_var_2 -> 
-	case happyOut69 happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { (TokSymbol SymColon happy_var_4) -> 
-	case happyOut36 happy_x_5 of { happy_var_5 -> 
-	happyIn96
-		 (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_343 = happyMonadReduce 7# 88# happyReduction_343
-happyReduction_343 (happy_x_7 `HappyStk`
-	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) tk
-	 = happyThen (case happyOutTok happy_x_1 of { (TokKeyword KwRecord happy_var_1) -> 
-	case happyOut44 happy_x_2 of { happy_var_2 -> 
-	case happyOut69 happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { (TokSymbol SymColon happy_var_4) -> 
-	case happyOut36 happy_x_5 of { happy_var_5 -> 
-	case happyOutTok happy_x_6 of { (TokKeyword KwWhere happy_var_6) -> 
-	case happyOut159 happy_x_7 of { happy_var_7 -> 
-	( exprToName happy_var_2 >>= \ n -> let ((x,y,z),ds) = happy_var_7 in 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 x y z happy_var_3 (Just happy_var_5) ds)}}}}}}}
-	) (\r -> happyReturn (happyIn97 r))
-
-happyReduce_344 = happyMonadReduce 5# 88# happyReduction_344
-happyReduction_344 (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 happyOut44 happy_x_2 of { happy_var_2 -> 
-	case happyOut69 happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { (TokKeyword KwWhere happy_var_4) -> 
-	case happyOut159 happy_x_5 of { happy_var_5 -> 
-	( exprToName happy_var_2 >>= \ n -> let ((x,y,z),ds) = happy_var_5 in return $ Record (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4,happy_var_5)) n x y z happy_var_3 Nothing ds)}}}}}
-	) (\r -> happyReturn (happyIn97 r))
-
-happyReduce_345 = happyMonadReduce 5# 89# happyReduction_345
-happyReduction_345 (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 happyOut44 happy_x_2 of { happy_var_2 -> 
-	case happyOut69 happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { (TokSymbol SymColon happy_var_4) -> 
-	case happyOut36 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 (happyIn98 r))
-
-happyReduce_346 = happySpecReduce_2  90# happyReduction_346
-happyReduction_346 happy_x_2
-	happy_x_1
-	 =  case happyOut18 happy_x_2 of { happy_var_2 -> 
-	happyIn99
-		 ((happy_var_2, NotInstanceDef)
-	)}
-
-happyReduce_347 = happyReduce 5# 90# happyReduction_347
-happyReduction_347 (happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOut18 happy_x_4 of { happy_var_4 -> 
-	happyIn99
-		 ((happy_var_4, InstanceDef)
-	) `HappyStk` happyRest}
-
-happyReduce_348 = happySpecReduce_3  91# happyReduction_348
-happyReduction_348 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwInfix happy_var_1) -> 
-	case happyOut17 happy_x_2 of { happy_var_2 -> 
-	case happyOut27 happy_x_3 of { happy_var_3 -> 
-	happyIn100
-		 (Infix (Fixity (getRange (happy_var_1,happy_var_3)) (Related happy_var_2) NonAssoc)   happy_var_3
-	)}}}
-
-happyReduce_349 = happySpecReduce_3  91# happyReduction_349
-happyReduction_349 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwInfixL happy_var_1) -> 
-	case happyOut17 happy_x_2 of { happy_var_2 -> 
-	case happyOut27 happy_x_3 of { happy_var_3 -> 
-	happyIn100
-		 (Infix (Fixity (getRange (happy_var_1,happy_var_3)) (Related happy_var_2) LeftAssoc)  happy_var_3
-	)}}}
-
-happyReduce_350 = happySpecReduce_3  91# happyReduction_350
-happyReduction_350 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwInfixR happy_var_1) -> 
-	case happyOut17 happy_x_2 of { happy_var_2 -> 
-	case happyOut27 happy_x_3 of { happy_var_3 -> 
-	happyIn100
-		 (Infix (Fixity (getRange (happy_var_1,happy_var_3)) (Related happy_var_2) RightAssoc) happy_var_3
-	)}}}
-
-happyReduce_351 = happySpecReduce_2  92# happyReduction_351
-happyReduction_351 happy_x_2
-	happy_x_1
-	 =  case happyOut157 happy_x_2 of { happy_var_2 -> 
-	happyIn101
-		 (let
-                inst i | getHiding i == Instance = InstanceDef
-                       | otherwise               = NotInstanceDef
-                toField (Arg info (TypeSig info' x t)) = Field (inst info') x (Arg info t)
-              in map toField happy_var_2
-	)}
-
-happyReduce_352 = happySpecReduce_2  93# happyReduction_352
-happyReduction_352 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwMutual happy_var_1) -> 
-	case happyOut164 happy_x_2 of { happy_var_2 -> 
-	happyIn102
-		 (Mutual (fuseRange happy_var_1 happy_var_2) happy_var_2
-	)}}
-
-happyReduce_353 = happySpecReduce_2  94# happyReduction_353
-happyReduction_353 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwAbstract happy_var_1) -> 
-	case happyOut164 happy_x_2 of { happy_var_2 -> 
-	happyIn103
-		 (Abstract (fuseRange happy_var_1 happy_var_2) happy_var_2
-	)}}
-
-happyReduce_354 = happySpecReduce_2  95# happyReduction_354
-happyReduction_354 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwPrivate happy_var_1) -> 
-	case happyOut164 happy_x_2 of { happy_var_2 -> 
-	happyIn104
-		 (Private (fuseRange happy_var_1 happy_var_2) happy_var_2
-	)}}
-
-happyReduce_355 = happySpecReduce_2  96# happyReduction_355
-happyReduction_355 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwInstance happy_var_1) -> 
-	case happyOut164 happy_x_2 of { happy_var_2 -> 
-	happyIn105
-		 (InstanceB (fuseRange happy_var_1 happy_var_2) happy_var_2
-	)}}
-
-happyReduce_356 = happySpecReduce_2  97# happyReduction_356
-happyReduction_356 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwMacro happy_var_1) -> 
-	case happyOut164 happy_x_2 of { happy_var_2 -> 
-	happyIn106
-		 (Macro (fuseRange happy_var_1 happy_var_2) happy_var_2
-	)}}
-
-happyReduce_357 = happySpecReduce_2  98# happyReduction_357
-happyReduction_357 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwPostulate happy_var_1) -> 
-	case happyOut164 happy_x_2 of { happy_var_2 -> 
-	happyIn107
-		 (Postulate (fuseRange happy_var_1 happy_var_2) happy_var_2
-	)}}
-
-happyReduce_358 = happySpecReduce_2  99# happyReduction_358
-happyReduction_358 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwPrimitive happy_var_1) -> 
-	case happyOut155 happy_x_2 of { happy_var_2 -> 
-	happyIn108
-		 (Primitive (fuseRange happy_var_1 happy_var_2) happy_var_2
-	)}}
-
-happyReduce_359 = happySpecReduce_3  100# happyReduction_359
-happyReduction_359 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwUnquoteDecl happy_var_1) -> 
-	case happyOut36 happy_x_3 of { happy_var_3 -> 
-	happyIn109
-		 (UnquoteDecl (fuseRange happy_var_1 happy_var_3) [] happy_var_3
-	)}}
-
-happyReduce_360 = happyReduce 4# 100# happyReduction_360
-happyReduction_360 (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 happyOut19 happy_x_2 of { happy_var_2 -> 
-	case happyOut36 happy_x_4 of { happy_var_4 -> 
-	happyIn109
-		 (UnquoteDecl (fuseRange happy_var_1 happy_var_4) happy_var_2 happy_var_4
-	) `HappyStk` happyRest}}}
-
-happyReduce_361 = happyReduce 4# 100# happyReduction_361
-happyReduction_361 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { (TokKeyword KwUnquoteDef happy_var_1) -> 
-	case happyOut19 happy_x_2 of { happy_var_2 -> 
-	case happyOut36 happy_x_4 of { happy_var_4 -> 
-	happyIn109
-		 (UnquoteDef (fuseRange happy_var_1 happy_var_4) happy_var_2 happy_var_4
-	) `HappyStk` happyRest}}}
-
-happyReduce_362 = happyMonadReduce 5# 101# happyReduction_362
-happyReduction_362 (happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOut18 happy_x_2 of { happy_var_2 -> 
-	case happyOut114 happy_x_3 of { happy_var_3 -> 
-	case happyOut113 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 (happyIn110 r))
-
-happyReduce_363 = happyMonadReduce 5# 102# happyReduction_363
-happyReduction_363 (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 KwPatternSyn happy_var_1) -> 
-	case happyOut18 happy_x_2 of { happy_var_2 -> 
-	case happyOut112 happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { (TokSymbol SymEqual happy_var_4) -> 
-	case happyOut36 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 (happyIn111 r))
-
-happyReduce_364 = happySpecReduce_0  103# happyReduction_364
-happyReduction_364  =  happyIn112
-		 ([]
-	)
-
-happyReduce_365 = happyMonadReduce 1# 103# happyReduction_365
-happyReduction_365 (happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOut61 happy_x_1 of { happy_var_1 -> 
-	( patternSynArgs happy_var_1)}
-	) (\r -> happyReturn (happyIn112 r))
-
-happyReduce_366 = happySpecReduce_1  104# happyReduction_366
-happyReduction_366 happy_x_1
-	 =  case happyOut118 happy_x_1 of { happy_var_1 -> 
-	happyIn113
-		 ([happy_var_1]
-	)}
-
-happyReduce_367 = happySpecReduce_2  104# happyReduction_367
-happyReduction_367 happy_x_2
-	happy_x_1
-	 =  case happyOut113 happy_x_1 of { happy_var_1 -> 
-	case happyOut118 happy_x_2 of { happy_var_2 -> 
-	happyIn113
-		 (happy_var_1 ++ [happy_var_2]
-	)}}
-
-happyReduce_368 = happySpecReduce_1  105# happyReduction_368
-happyReduction_368 happy_x_1
-	 =  case happyOut115 happy_x_1 of { happy_var_1 -> 
-	happyIn114
-		 ([happy_var_1]
-	)}
-
-happyReduce_369 = happySpecReduce_2  105# happyReduction_369
-happyReduction_369 happy_x_2
-	happy_x_1
-	 =  case happyOut114 happy_x_1 of { happy_var_1 -> 
-	case happyOut115 happy_x_2 of { happy_var_2 -> 
-	happyIn114
-		 (happy_var_1 ++ [happy_var_2]
-	)}}
-
-happyReduce_370 = happySpecReduce_1  106# happyReduction_370
-happyReduction_370 happy_x_1
-	 =  case happyOut116 happy_x_1 of { happy_var_1 -> 
-	happyIn115
-		 (defaultNamedArg happy_var_1
-	)}
-
-happyReduce_371 = happySpecReduce_3  106# happyReduction_371
-happyReduction_371 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut117 happy_x_2 of { happy_var_2 -> 
-	happyIn115
-		 (setHiding Hidden   $ defaultNamedArg happy_var_2
-	)}
-
-happyReduce_372 = happySpecReduce_3  106# happyReduction_372
-happyReduction_372 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut117 happy_x_2 of { happy_var_2 -> 
-	happyIn115
-		 (setHiding Instance $ defaultNamedArg happy_var_2
-	)}
-
-happyReduce_373 = happyReduce 5# 106# happyReduction_373
-happyReduction_373 (happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOut118 happy_x_2 of { happy_var_2 -> 
-	case happyOut117 happy_x_4 of { happy_var_4 -> 
-	happyIn115
-		 (setHiding Hidden   $ defaultArg $ named happy_var_2 happy_var_4
-	) `HappyStk` happyRest}}
-
-happyReduce_374 = happyReduce 5# 106# happyReduction_374
-happyReduction_374 (happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOut118 happy_x_2 of { happy_var_2 -> 
-	case happyOut117 happy_x_4 of { happy_var_4 -> 
-	happyIn115
-		 (setHiding Instance $ defaultArg $ named happy_var_2 happy_var_4
-	) `HappyStk` happyRest}}
-
-happyReduce_375 = happySpecReduce_1  107# happyReduction_375
-happyReduction_375 happy_x_1
-	 =  case happyOut118 happy_x_1 of { happy_var_1 -> 
-	happyIn116
-		 (ExprHole (rangedThing happy_var_1)
-	)}
-
-happyReduce_376 = happyReduce 6# 107# happyReduction_376
-happyReduction_376 (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 happyOut118 happy_x_3 of { happy_var_3 -> 
-	case happyOut118 happy_x_5 of { happy_var_5 -> 
-	happyIn116
-		 (LambdaHole (rangedThing happy_var_3) (rangedThing happy_var_5)
-	) `HappyStk` happyRest}}
-
-happyReduce_377 = happyReduce 6# 107# happyReduction_377
-happyReduction_377 (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 happyOut118 happy_x_5 of { happy_var_5 -> 
-	happyIn116
-		 (LambdaHole "_" (rangedThing happy_var_5)
-	) `HappyStk` happyRest}
-
-happyReduce_378 = happySpecReduce_1  108# happyReduction_378
-happyReduction_378 happy_x_1
-	 =  case happyOut118 happy_x_1 of { happy_var_1 -> 
-	happyIn117
-		 (ExprHole (rangedThing happy_var_1)
-	)}
-
-happyReduce_379 = happyReduce 4# 108# happyReduction_379
-happyReduction_379 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOut118 happy_x_2 of { happy_var_2 -> 
-	case happyOut118 happy_x_4 of { happy_var_4 -> 
-	happyIn117
-		 (LambdaHole (rangedThing happy_var_2) (rangedThing happy_var_4)
-	) `HappyStk` happyRest}}
-
-happyReduce_380 = happyReduce 4# 108# happyReduction_380
-happyReduction_380 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOut118 happy_x_4 of { happy_var_4 -> 
-	happyIn117
-		 (LambdaHole "_" (rangedThing happy_var_4)
-	) `HappyStk` happyRest}
-
-happyReduce_381 = happySpecReduce_1  109# happyReduction_381
-happyReduction_381 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokId happy_var_1) -> 
-	happyIn118
-		 (Ranged (getRange $ fst happy_var_1) (stringToRawName $ snd happy_var_1)
-	)}
-
-happyReduce_382 = happySpecReduce_1  110# happyReduction_382
-happyReduction_382 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwOpen happy_var_1) -> 
-	happyIn119
-		 (Just (getRange happy_var_1)
-	)}
-
-happyReduce_383 = happySpecReduce_0  110# happyReduction_383
-happyReduction_383  =  happyIn119
-		 (Nothing
-	)
-
-happyReduce_384 = happyMonadReduce 5# 111# happyReduction_384
-happyReduction_384 (happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOut119 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (TokKeyword KwImport happy_var_2) -> 
-	case happyOut25 happy_x_3 of { happy_var_3 -> 
-	case happyOut121 happy_x_4 of { happy_var_4 -> 
-	case happyOut72 happy_x_5 of { happy_var_5 -> 
-	(
-    let
-    { doOpen = maybe DontOpen (const DoOpen) happy_var_1
-    ; m   = happy_var_3
-    ; es  = happy_var_4
-    ; dir = happy_var_5
-    ; r   = getRange (m, es, dir)
-    ; mr  = getRange m
-    ; unique = hashString $ show $ (Nothing :: Maybe ()) <$ r
-         -- turn range into unique id, but delete file path
-         -- which is absolute and messes up suite of failing tests
-         -- (different hashs on different installations)
-         -- TODO: Don't use (insecure) hashes in this way.
-    ; fresh = Name mr [ Id $ stringToRawName $ ".#" ++ show m ++ "-" ++ show unique ]
-    ; impStm asR = Import mr m (Just (AsName fresh asR)) DontOpen defaultImportDir
-    ; appStm m' es =
-        let r = getRange (m, es) in
-        Private r
-          [ ModuleMacro r m'
-             (SectionApp (getRange es) []
-               (RawApp (getRange es) (Ident (QName fresh) : es)))
-             doOpen dir
-          ]
-    ; (initArgs, last2Args) = splitAt (length es - 2) es
-    ; parseAsClause = case last2Args of
-      { [ Ident (QName (Name asR [Id x]))
-        , Ident (QName m')
-        ] | rawNameToString x == "as" -> Just (asR, m')
-      ; _ -> Nothing
-      }
-    } in
-    case es of
-      { [] -> return [Import mr m Nothing doOpen dir]
-      ; _ | Just (asR, m') <- parseAsClause ->
-              if null initArgs then return
-                 [ Import (getRange (m, asR, m', dir)) m
-                     (Just (AsName m' asR)) doOpen dir
-                 ]
-              else return [ impStm asR, appStm m' initArgs ]
-          | DontOpen <- doOpen -> parseErrorAt (fromJust $ rStart' $ getRange happy_var_2) "An import statement with module instantiation does not actually import the module.  This statement achieves nothing.  Either add the `open' keyword or bind the instantiated module with an `as' clause."
-          | otherwise -> return
-              [ impStm noRange
-              , appStm (noName $ beginningOf $ getRange m) es
-              ]
-      })}}}}}
-	) (\r -> happyReturn (happyIn120 r))
-
-happyReduce_385 = happyReduce 4# 111# happyReduction_385
-happyReduction_385 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOut25 happy_x_2 of { happy_var_2 -> 
-	case happyOut121 happy_x_3 of { happy_var_3 -> 
-	case happyOut72 happy_x_4 of { happy_var_4 -> 
-	happyIn120
-		 (let
-    { m   = happy_var_2
-    ; es  = happy_var_3
-    ; dir = happy_var_4
-    ; r   = getRange (m, es, dir)
-    } in
-    [ case es of
-      { []  -> Open r m dir
-      ; _   -> Private r [ ModuleMacro r (noName $ beginningOf $ getRange m)
-                             (SectionApp (getRange (m , es)) [] (RawApp (fuseRange m es) (Ident m : es)))
-                             DoOpen dir
-                         ]
-      }
-    ]
-	) `HappyStk` happyRest}}}
-
-happyReduce_386 = happyReduce 6# 111# happyReduction_386
-happyReduction_386 (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 happyOut25 happy_x_2 of { happy_var_2 -> 
-	case happyOut72 happy_x_6 of { happy_var_6 -> 
-	happyIn120
-		 (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
-                ]
-    ]
-	) `HappyStk` happyRest}}
-
-happyReduce_387 = happySpecReduce_0  112# happyReduction_387
-happyReduction_387  =  happyIn121
-		 ([]
-	)
-
-happyReduce_388 = happySpecReduce_2  112# happyReduction_388
-happyReduction_388 happy_x_2
-	happy_x_1
-	 =  case happyOut45 happy_x_1 of { happy_var_1 -> 
-	case happyOut121 happy_x_2 of { happy_var_2 -> 
-	happyIn121
-		 (happy_var_1 : happy_var_2
-	)}}
-
-happyReduce_389 = happyReduce 4# 113# happyReduction_389
-happyReduction_389 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOut25 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { (TokSymbol SymDoubleOpenBrace happy_var_2) -> 
-	case happyOutTok happy_x_3 of { (TokSymbol SymEllipsis happy_var_3) -> 
-	case happyOut20 happy_x_4 of { happy_var_4 -> 
-	happyIn122
-		 ((\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_390 = happySpecReduce_2  113# happyReduction_390
-happyReduction_390 happy_x_2
-	happy_x_1
-	 =  case happyOut25 happy_x_1 of { happy_var_1 -> 
-	case happyOut121 happy_x_2 of { happy_var_2 -> 
-	happyIn122
-		 ((\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_391 = happyMonadReduce 6# 114# happyReduction_391
-happyReduction_391 (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) tk
-	 = happyThen (case happyOutTok happy_x_1 of { (TokKeyword KwModule happy_var_1) -> 
-	case happyOut25 happy_x_2 of { happy_var_2 -> 
-	case happyOut69 happy_x_3 of { happy_var_3 -> 
-	case happyOut122 happy_x_5 of { happy_var_5 -> 
-	case happyOut72 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 (happyIn123 r))
-
-happyReduce_392 = happyMonadReduce 7# 114# happyReduction_392
-happyReduction_392 (happy_x_7 `HappyStk`
-	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) tk
-	 = happyThen (case happyOutTok happy_x_1 of { (TokKeyword KwOpen happy_var_1) -> 
-	case happyOutTok happy_x_2 of { (TokKeyword KwModule happy_var_2) -> 
-	case happyOut18 happy_x_3 of { happy_var_3 -> 
-	case happyOut69 happy_x_4 of { happy_var_4 -> 
-	case happyOut122 happy_x_6 of { happy_var_6 -> 
-	case happyOut72 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 (happyIn123 r))
-
-happyReduce_393 = happyReduce 5# 115# happyReduction_393
-happyReduction_393 (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 happyOut25 happy_x_2 of { happy_var_2 -> 
-	case happyOut69 happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { (TokKeyword KwWhere happy_var_4) -> 
-	case happyOut165 happy_x_5 of { happy_var_5 -> 
-	happyIn124
-		 (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_394 = happyReduce 5# 115# happyReduction_394
-happyReduction_394 (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 happyOut125 happy_x_2 of { happy_var_2 -> 
-	case happyOut69 happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { (TokKeyword KwWhere happy_var_4) -> 
-	case happyOut165 happy_x_5 of { happy_var_5 -> 
-	happyIn124
-		 (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_395 = happySpecReduce_1  116# happyReduction_395
-happyReduction_395 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokSymbol SymUnderscore happy_var_1) -> 
-	happyIn125
-		 (noName (getRange happy_var_1)
-	)}
-
-happyReduce_396 = happySpecReduce_1  117# happyReduction_396
-happyReduction_396 happy_x_1
-	 =  case happyOut167 happy_x_1 of { happy_var_1 -> 
-	happyIn126
-		 (figureOutTopLevelModule happy_var_1
-	)}
-
-happyReduce_397 = happySpecReduce_1  118# happyReduction_397
-happyReduction_397 happy_x_1
-	 =  case happyOut128 happy_x_1 of { happy_var_1 -> 
-	happyIn127
-		 (Pragma happy_var_1
-	)}
-
-happyReduce_398 = happySpecReduce_1  119# happyReduction_398
-happyReduction_398 happy_x_1
-	 =  case happyOut130 happy_x_1 of { happy_var_1 -> 
-	happyIn128
-		 (happy_var_1
-	)}
-
-happyReduce_399 = happySpecReduce_1  119# happyReduction_399
-happyReduction_399 happy_x_1
-	 =  case happyOut131 happy_x_1 of { happy_var_1 -> 
-	happyIn128
-		 (happy_var_1
-	)}
-
-happyReduce_400 = happySpecReduce_1  119# happyReduction_400
-happyReduction_400 happy_x_1
-	 =  case happyOut132 happy_x_1 of { happy_var_1 -> 
-	happyIn128
-		 (happy_var_1
-	)}
-
-happyReduce_401 = happySpecReduce_1  119# happyReduction_401
-happyReduction_401 happy_x_1
-	 =  case happyOut133 happy_x_1 of { happy_var_1 -> 
-	happyIn128
-		 (happy_var_1
-	)}
-
-happyReduce_402 = happySpecReduce_1  119# happyReduction_402
-happyReduction_402 happy_x_1
-	 =  case happyOut136 happy_x_1 of { happy_var_1 -> 
-	happyIn128
-		 (happy_var_1
-	)}
-
-happyReduce_403 = happySpecReduce_1  119# happyReduction_403
-happyReduction_403 happy_x_1
-	 =  case happyOut134 happy_x_1 of { happy_var_1 -> 
-	happyIn128
-		 (happy_var_1
-	)}
-
-happyReduce_404 = happySpecReduce_1  119# happyReduction_404
-happyReduction_404 happy_x_1
-	 =  case happyOut135 happy_x_1 of { happy_var_1 -> 
-	happyIn128
-		 (happy_var_1
-	)}
-
-happyReduce_405 = happySpecReduce_1  119# happyReduction_405
-happyReduction_405 happy_x_1
-	 =  case happyOut137 happy_x_1 of { happy_var_1 -> 
-	happyIn128
-		 (happy_var_1
-	)}
-
-happyReduce_406 = happySpecReduce_1  119# happyReduction_406
-happyReduction_406 happy_x_1
-	 =  case happyOut138 happy_x_1 of { happy_var_1 -> 
-	happyIn128
-		 (happy_var_1
-	)}
-
-happyReduce_407 = happySpecReduce_1  119# happyReduction_407
-happyReduction_407 happy_x_1
-	 =  case happyOut139 happy_x_1 of { happy_var_1 -> 
-	happyIn128
-		 (happy_var_1
-	)}
-
-happyReduce_408 = happySpecReduce_1  119# happyReduction_408
-happyReduction_408 happy_x_1
-	 =  case happyOut140 happy_x_1 of { happy_var_1 -> 
-	happyIn128
-		 (happy_var_1
-	)}
-
-happyReduce_409 = happySpecReduce_1  119# happyReduction_409
-happyReduction_409 happy_x_1
-	 =  case happyOut141 happy_x_1 of { happy_var_1 -> 
-	happyIn128
-		 (happy_var_1
-	)}
-
-happyReduce_410 = happySpecReduce_1  119# happyReduction_410
-happyReduction_410 happy_x_1
-	 =  case happyOut142 happy_x_1 of { happy_var_1 -> 
-	happyIn128
-		 (happy_var_1
-	)}
-
-happyReduce_411 = happySpecReduce_1  119# happyReduction_411
-happyReduction_411 happy_x_1
-	 =  case happyOut143 happy_x_1 of { happy_var_1 -> 
-	happyIn128
-		 (happy_var_1
-	)}
-
-happyReduce_412 = happySpecReduce_1  119# happyReduction_412
-happyReduction_412 happy_x_1
-	 =  case happyOut144 happy_x_1 of { happy_var_1 -> 
-	happyIn128
-		 (happy_var_1
-	)}
-
-happyReduce_413 = happySpecReduce_1  119# happyReduction_413
-happyReduction_413 happy_x_1
-	 =  case happyOut151 happy_x_1 of { happy_var_1 -> 
-	happyIn128
-		 (happy_var_1
-	)}
-
-happyReduce_414 = happySpecReduce_1  119# happyReduction_414
-happyReduction_414 happy_x_1
-	 =  case happyOut152 happy_x_1 of { happy_var_1 -> 
-	happyIn128
-		 (happy_var_1
-	)}
-
-happyReduce_415 = happySpecReduce_1  119# happyReduction_415
-happyReduction_415 happy_x_1
-	 =  case happyOut153 happy_x_1 of { happy_var_1 -> 
-	happyIn128
-		 (happy_var_1
-	)}
-
-happyReduce_416 = happySpecReduce_1  119# happyReduction_416
-happyReduction_416 happy_x_1
-	 =  case happyOut148 happy_x_1 of { happy_var_1 -> 
-	happyIn128
-		 (happy_var_1
-	)}
-
-happyReduce_417 = happySpecReduce_1  119# happyReduction_417
-happyReduction_417 happy_x_1
-	 =  case happyOut147 happy_x_1 of { happy_var_1 -> 
-	happyIn128
-		 (happy_var_1
-	)}
-
-happyReduce_418 = happySpecReduce_1  119# happyReduction_418
-happyReduction_418 happy_x_1
-	 =  case happyOut146 happy_x_1 of { happy_var_1 -> 
-	happyIn128
-		 (happy_var_1
-	)}
-
-happyReduce_419 = happySpecReduce_1  119# happyReduction_419
-happyReduction_419 happy_x_1
-	 =  case happyOut149 happy_x_1 of { happy_var_1 -> 
-	happyIn128
-		 (happy_var_1
-	)}
-
-happyReduce_420 = happySpecReduce_1  119# happyReduction_420
-happyReduction_420 happy_x_1
-	 =  case happyOut150 happy_x_1 of { happy_var_1 -> 
-	happyIn128
-		 (happy_var_1
-	)}
-
-happyReduce_421 = happySpecReduce_1  119# happyReduction_421
-happyReduction_421 happy_x_1
-	 =  case happyOut145 happy_x_1 of { happy_var_1 -> 
-	happyIn128
-		 (happy_var_1
-	)}
-
-happyReduce_422 = happySpecReduce_1  119# happyReduction_422
-happyReduction_422 happy_x_1
-	 =  case happyOut154 happy_x_1 of { happy_var_1 -> 
-	happyIn128
-		 (happy_var_1
-	)}
-
-happyReduce_423 = happySpecReduce_1  119# happyReduction_423
-happyReduction_423 happy_x_1
-	 =  case happyOut129 happy_x_1 of { happy_var_1 -> 
-	happyIn128
-		 (happy_var_1
-	)}
-
-happyReduce_424 = happyReduce 4# 120# happyReduction_424
-happyReduction_424 (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 happyOut31 happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { (TokSymbol SymClosePragma happy_var_4) -> 
-	happyIn129
-		 (OptionsPragma (getRange (happy_var_1,happy_var_2,happy_var_4)) happy_var_3
-	) `HappyStk` happyRest}}}}
-
-happyReduce_425 = happyReduce 5# 121# happyReduction_425
-happyReduction_425 (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 { (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 happyOut35 happy_x_4 of { happy_var_4 -> 
-	case happyOutTok happy_x_5 of { (TokSymbol SymClosePragma happy_var_5) -> 
-	happyIn130
-		 (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_426 = happyReduce 5# 121# happyReduction_426
-happyReduction_426 (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 { (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 happyOut35 happy_x_4 of { happy_var_4 -> 
-	case happyOutTok happy_x_5 of { (TokSymbol SymClosePragma happy_var_5) -> 
-	happyIn130
-		 (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_427 = happyReduce 4# 122# happyReduction_427
-happyReduction_427 (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 happyOut35 happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { (TokSymbol SymClosePragma happy_var_4) -> 
-	happyIn131
-		 (RewritePragma (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4)) happy_var_3
-	) `HappyStk` happyRest}}}}
-
-happyReduce_428 = happyReduce 5# 123# happyReduction_428
-happyReduction_428 (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 { (TokSymbol SymOpenPragma happy_var_1) -> 
-	case happyOutTok happy_x_2 of { (TokKeyword KwCOMPILED happy_var_2) -> 
-	case happyOut35 happy_x_3 of { happy_var_3 -> 
-	case happyOut31 happy_x_4 of { happy_var_4 -> 
-	case happyOutTok happy_x_5 of { (TokSymbol SymClosePragma happy_var_5) -> 
-	happyIn132
-		 (CompiledPragma (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_5)) happy_var_3 (unwords happy_var_4)
-	) `HappyStk` happyRest}}}}}
-
-happyReduce_429 = happyReduce 5# 124# happyReduction_429
-happyReduction_429 (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 { (TokSymbol SymOpenPragma happy_var_1) -> 
-	case happyOutTok happy_x_2 of { (TokKeyword KwCOMPILED_EXPORT happy_var_2) -> 
-	case happyOut35 happy_x_3 of { happy_var_3 -> 
-	case happyOut32 happy_x_4 of { happy_var_4 -> 
-	case happyOutTok happy_x_5 of { (TokSymbol SymClosePragma happy_var_5) -> 
-	happyIn133
-		 (CompiledExportPragma (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_5)) happy_var_3 happy_var_4
-	) `HappyStk` happyRest}}}}}
-
-happyReduce_430 = happyReduce 5# 125# happyReduction_430
-happyReduction_430 (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 { (TokSymbol SymOpenPragma happy_var_1) -> 
-	case happyOutTok happy_x_2 of { (TokKeyword KwCOMPILED_DECLARE_DATA happy_var_2) -> 
-	case happyOut35 happy_x_3 of { happy_var_3 -> 
-	case happyOut31 happy_x_4 of { happy_var_4 -> 
-	case happyOutTok happy_x_5 of { (TokSymbol SymClosePragma happy_var_5) -> 
-	happyIn134
-		 (CompiledDeclareDataPragma (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_5)) happy_var_3 (unwords happy_var_4)
-	) `HappyStk` happyRest}}}}}
-
-happyReduce_431 = happyReduce 5# 126# happyReduction_431
-happyReduction_431 (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 { (TokSymbol SymOpenPragma happy_var_1) -> 
-	case happyOutTok happy_x_2 of { (TokKeyword KwCOMPILED_TYPE happy_var_2) -> 
-	case happyOut35 happy_x_3 of { happy_var_3 -> 
-	case happyOut31 happy_x_4 of { happy_var_4 -> 
-	case happyOutTok happy_x_5 of { (TokSymbol SymClosePragma happy_var_5) -> 
-	happyIn135
-		 (CompiledTypePragma (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_5)) happy_var_3 (unwords happy_var_4)
-	) `HappyStk` happyRest}}}}}
-
-happyReduce_432 = happyReduce 6# 127# happyReduction_432
-happyReduction_432 (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 happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) -> 
-	case happyOutTok happy_x_2 of { (TokKeyword KwCOMPILED_DATA happy_var_2) -> 
-	case happyOut35 happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { (TokString happy_var_4) -> 
-	case happyOut31 happy_x_5 of { happy_var_5 -> 
-	case happyOutTok happy_x_6 of { (TokSymbol SymClosePragma happy_var_6) -> 
-	happyIn136
-		 (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_433 = happyReduce 5# 128# happyReduction_433
-happyReduction_433 (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 { (TokSymbol SymOpenPragma happy_var_1) -> 
-	case happyOutTok happy_x_2 of { (TokKeyword KwCOMPILED_EPIC happy_var_2) -> 
-	case happyOut35 happy_x_3 of { happy_var_3 -> 
-	case happyOut31 happy_x_4 of { happy_var_4 -> 
-	case happyOutTok happy_x_5 of { (TokSymbol SymClosePragma happy_var_5) -> 
-	happyIn137
-		 (CompiledEpicPragma (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_5)) happy_var_3 (unwords happy_var_4)
-	) `HappyStk` happyRest}}}}}
-
-happyReduce_434 = happyReduce 5# 129# happyReduction_434
-happyReduction_434 (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 { (TokSymbol SymOpenPragma happy_var_1) -> 
-	case happyOutTok happy_x_2 of { (TokKeyword KwCOMPILED_JS happy_var_2) -> 
-	case happyOut35 happy_x_3 of { happy_var_3 -> 
-	case happyOut31 happy_x_4 of { happy_var_4 -> 
-	case happyOutTok happy_x_5 of { (TokSymbol SymClosePragma happy_var_5) -> 
-	happyIn138
-		 (CompiledJSPragma (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_5)) happy_var_3 (unwords happy_var_4)
-	) `HappyStk` happyRest}}}}}
-
-happyReduce_435 = happyReduce 5# 130# happyReduction_435
-happyReduction_435 (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 { (TokSymbol SymOpenPragma happy_var_1) -> 
-	case happyOutTok happy_x_2 of { (TokKeyword KwCOMPILED_UHC happy_var_2) -> 
-	case happyOut35 happy_x_3 of { happy_var_3 -> 
-	case happyOut31 happy_x_4 of { happy_var_4 -> 
-	case happyOutTok happy_x_5 of { (TokSymbol SymClosePragma happy_var_5) -> 
-	happyIn139
-		 (CompiledUHCPragma (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_5)) happy_var_3 (unwords happy_var_4)
-	) `HappyStk` happyRest}}}}}
-
-happyReduce_436 = happyReduce 6# 131# happyReduction_436
-happyReduction_436 (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 happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) -> 
-	case happyOutTok happy_x_2 of { (TokKeyword KwCOMPILED_DATA_UHC happy_var_2) -> 
-	case happyOut35 happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { (TokString happy_var_4) -> 
-	case happyOut31 happy_x_5 of { happy_var_5 -> 
-	case happyOutTok happy_x_6 of { (TokSymbol SymClosePragma happy_var_6) -> 
-	happyIn140
-		 (CompiledDataUHCPragma (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_437 = happyReduce 4# 132# happyReduction_437
-happyReduction_437 (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 KwHASKELL happy_var_2) -> 
-	case happyOut33 happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { (TokSymbol SymClosePragma happy_var_4) -> 
-	happyIn141
-		 (HaskellCodePragma (getRange (happy_var_1, happy_var_2, happy_var_4)) (recoverLayout happy_var_3)
-	) `HappyStk` happyRest}}}}
-
-happyReduce_438 = happyReduce 4# 133# happyReduction_438
-happyReduction_438 (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 KwNO_SMASHING happy_var_2) -> 
-	case happyOut35 happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { (TokSymbol SymClosePragma happy_var_4) -> 
-	happyIn142
-		 (NoSmashingPragma (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4)) happy_var_3
-	) `HappyStk` happyRest}}}}
-
-happyReduce_439 = happyReduce 4# 134# happyReduction_439
-happyReduction_439 (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 happyOut35 happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { (TokSymbol SymClosePragma happy_var_4) -> 
-	happyIn143
-		 (StaticPragma (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4)) happy_var_3
-	) `HappyStk` happyRest}}}}
-
-happyReduce_440 = happyReduce 4# 135# happyReduction_440
-happyReduction_440 (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 KwINLINE happy_var_2) -> 
-	case happyOut35 happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { (TokSymbol SymClosePragma happy_var_4) -> 
-	happyIn144
-		 (InlinePragma (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4)) happy_var_3
-	) `HappyStk` happyRest}}}}
-
-happyReduce_441 = happyMonadReduce 5# 136# happyReduction_441
-happyReduction_441 (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 { (TokSymbol SymOpenPragma happy_var_1) -> 
-	case happyOutTok happy_x_3 of { (TokString happy_var_3) -> 
-	case happyOut31 happy_x_4 of { happy_var_4 -> 
-	case happyOutTok happy_x_5 of { (TokSymbol SymClosePragma happy_var_5) -> 
-	(
-      let (r, s) = happy_var_3 in
-      parseDisplayPragma (fuseRange happy_var_1 happy_var_5) (iStart r) (unwords (s : happy_var_4)))}}}}
-	) (\r -> happyReturn (happyIn145 r))
-
-happyReduce_442 = happySpecReduce_3  137# happyReduction_442
-happyReduction_442 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) -> 
-	happyIn146
-		 (TerminationCheckPragma (getRange (happy_var_1,happy_var_2,happy_var_3)) NoTerminationCheck
-	)}}}
-
-happyReduce_443 = happySpecReduce_3  138# happyReduction_443
-happyReduction_443 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) -> 
-	happyIn147
-		 (TerminationCheckPragma (getRange (happy_var_1,happy_var_2,happy_var_3)) NonTerminating
-	)}}}
-
-happyReduce_444 = happySpecReduce_3  139# happyReduction_444
-happyReduction_444 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) -> 
-	happyIn148
-		 (TerminationCheckPragma (getRange (happy_var_1,happy_var_2,happy_var_3)) Terminating
-	)}}}
-
-happyReduce_445 = happyReduce 4# 140# happyReduction_445
-happyReduction_445 (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 happyOut34 happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { (TokSymbol SymClosePragma happy_var_4) -> 
-	happyIn149
-		 (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_446 = happySpecReduce_3  141# happyReduction_446
-happyReduction_446 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 KwCATCHALL happy_var_2) -> 
-	case happyOutTok happy_x_3 of { (TokSymbol SymClosePragma happy_var_3) -> 
-	happyIn150
-		 (CatchallPragma (getRange (happy_var_1,happy_var_2,happy_var_3))
-	)}}}
-
-happyReduce_447 = happyMonadReduce 4# 142# happyReduction_447
-happyReduction_447 (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 { (TokSymbol SymOpenPragma happy_var_1) -> 
-	case happyOutTok happy_x_2 of { (TokKeyword KwIMPORT happy_var_2) -> 
-	case happyOutTok happy_x_3 of { (TokString happy_var_3) -> 
-	case happyOutTok happy_x_4 of { (TokSymbol SymClosePragma happy_var_4) -> 
-	( let s = snd happy_var_3 in
-       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 (happyIn151 r))
-
-happyReduce_448 = happyMonadReduce 4# 143# happyReduction_448
-happyReduction_448 (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 { (TokSymbol SymOpenPragma happy_var_1) -> 
-	case happyOutTok happy_x_2 of { (TokKeyword KwIMPORT_UHC happy_var_2) -> 
-	case happyOutTok happy_x_3 of { (TokString happy_var_3) -> 
-	case happyOutTok happy_x_4 of { (TokSymbol SymClosePragma happy_var_4) -> 
-	( let s = snd happy_var_3 in
-       if validHaskellModuleName s
-       then return $ ImportUHCPragma (getRange (happy_var_1,happy_var_2,fst happy_var_3,happy_var_4)) s
-       else parseError $ "Malformed module name: " ++ s ++ ".")}}}}
-	) (\r -> happyReturn (happyIn152 r))
-
-happyReduce_449 = happySpecReduce_3  144# happyReduction_449
-happyReduction_449 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) -> 
-	happyIn153
-		 (ImpossiblePragma (getRange (happy_var_1,happy_var_2,happy_var_3))
-	)}}}
-
-happyReduce_450 = happySpecReduce_3  145# happyReduction_450
-happyReduction_450 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_POSITIVITY_CHECK happy_var_2) -> 
-	case happyOutTok happy_x_3 of { (TokSymbol SymClosePragma happy_var_3) -> 
-	happyIn154
-		 (NoPositivityCheckPragma (getRange (happy_var_1,happy_var_2,happy_var_3))
-	)}}}
-
-happyReduce_451 = happySpecReduce_3  146# happyReduction_451
-happyReduction_451 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut156 happy_x_2 of { happy_var_2 -> 
-	happyIn155
-		 (reverse happy_var_2
-	)}
-
-happyReduce_452 = happySpecReduce_3  147# happyReduction_452
-happyReduction_452 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut156 happy_x_1 of { happy_var_1 -> 
-	case happyOut91 happy_x_3 of { happy_var_3 -> 
-	happyIn156
-		 (reverse happy_var_3 ++ happy_var_1
-	)}}
-
-happyReduce_453 = happySpecReduce_1  147# happyReduction_453
-happyReduction_453 happy_x_1
-	 =  case happyOut91 happy_x_1 of { happy_var_1 -> 
-	happyIn156
-		 (reverse happy_var_1
-	)}
-
-happyReduce_454 = happySpecReduce_3  148# happyReduction_454
-happyReduction_454 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut158 happy_x_2 of { happy_var_2 -> 
-	happyIn157
-		 (reverse happy_var_2
-	)}
-
-happyReduce_455 = happySpecReduce_3  149# happyReduction_455
-happyReduction_455 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut158 happy_x_1 of { happy_var_1 -> 
-	case happyOut92 happy_x_3 of { happy_var_3 -> 
-	happyIn158
-		 (reverse happy_var_3 ++ happy_var_1
-	)}}
-
-happyReduce_456 = happySpecReduce_1  149# happyReduction_456
-happyReduction_456 happy_x_1
-	 =  case happyOut92 happy_x_1 of { happy_var_1 -> 
-	happyIn158
-		 (reverse happy_var_1
-	)}
-
-happyReduce_457 = happyMonadReduce 3# 150# happyReduction_457
-happyReduction_457 (happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOut160 happy_x_2 of { happy_var_2 -> 
-	( ((,) `fmap` verifyRecordDirectives happy_var_2 <*> pure []))}
-	) (\r -> happyReturn (happyIn159 r))
-
-happyReduce_458 = happyMonadReduce 5# 150# happyReduction_458
-happyReduction_458 (happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOut160 happy_x_2 of { happy_var_2 -> 
-	case happyOut166 happy_x_4 of { happy_var_4 -> 
-	( ((,) `fmap` verifyRecordDirectives happy_var_2 <*> pure happy_var_4))}}
-	) (\r -> happyReturn (happyIn159 r))
-
-happyReduce_459 = happyMonadReduce 3# 150# happyReduction_459
-happyReduction_459 (happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest) tk
-	 = happyThen (case happyOut166 happy_x_2 of { happy_var_2 -> 
-	( ((,) `fmap` verifyRecordDirectives [] <*> pure happy_var_2))}
-	) (\r -> happyReturn (happyIn159 r))
-
-happyReduce_460 = happySpecReduce_0  151# happyReduction_460
-happyReduction_460  =  happyIn160
-		 ([]
-	)
-
-happyReduce_461 = happySpecReduce_3  151# happyReduction_461
-happyReduction_461 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut160 happy_x_1 of { happy_var_1 -> 
-	case happyOut161 happy_x_3 of { happy_var_3 -> 
-	happyIn160
-		 (happy_var_3 : happy_var_1
-	)}}
-
-happyReduce_462 = happySpecReduce_1  151# happyReduction_462
-happyReduction_462 happy_x_1
-	 =  case happyOut161 happy_x_1 of { happy_var_1 -> 
-	happyIn160
-		 ([happy_var_1]
-	)}
-
-happyReduce_463 = happySpecReduce_1  152# happyReduction_463
-happyReduction_463 happy_x_1
-	 =  case happyOut99 happy_x_1 of { happy_var_1 -> 
-	happyIn161
-		 (Constructor happy_var_1
-	)}
-
-happyReduce_464 = happySpecReduce_1  152# happyReduction_464
-happyReduction_464 happy_x_1
-	 =  case happyOut163 happy_x_1 of { happy_var_1 -> 
-	happyIn161
-		 (Induction happy_var_1
-	)}
-
-happyReduce_465 = happySpecReduce_1  152# happyReduction_465
-happyReduction_465 happy_x_1
-	 =  case happyOut162 happy_x_1 of { happy_var_1 -> 
-	happyIn161
-		 (Eta happy_var_1
-	)}
-
-happyReduce_466 = happySpecReduce_1  153# happyReduction_466
-happyReduction_466 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwEta happy_var_1) -> 
-	happyIn162
-		 (Ranged (getRange happy_var_1) True
-	)}
-
-happyReduce_467 = happySpecReduce_1  153# happyReduction_467
-happyReduction_467 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwNoEta happy_var_1) -> 
-	happyIn162
-		 (Ranged (getRange happy_var_1) False
-	)}
-
-happyReduce_468 = happySpecReduce_1  154# happyReduction_468
-happyReduction_468 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwInductive happy_var_1) -> 
-	happyIn163
-		 (Ranged (getRange happy_var_1) Inductive
-	)}
-
-happyReduce_469 = happySpecReduce_1  154# happyReduction_469
-happyReduction_469 happy_x_1
-	 =  case happyOutTok happy_x_1 of { (TokKeyword KwCoInductive happy_var_1) -> 
-	happyIn163
-		 (Ranged (getRange happy_var_1) CoInductive
-	)}
-
-happyReduce_470 = happySpecReduce_3  155# happyReduction_470
-happyReduction_470 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut166 happy_x_2 of { happy_var_2 -> 
-	happyIn164
-		 (happy_var_2
-	)}
-
-happyReduce_471 = happySpecReduce_2  156# happyReduction_471
-happyReduction_471 happy_x_2
-	happy_x_1
-	 =  happyIn165
-		 ([]
-	)
-
-happyReduce_472 = happySpecReduce_1  156# happyReduction_472
-happyReduction_472 happy_x_1
-	 =  case happyOut164 happy_x_1 of { happy_var_1 -> 
-	happyIn165
-		 (happy_var_1
-	)}
-
-happyReduce_473 = happySpecReduce_3  157# happyReduction_473
-happyReduction_473 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut90 happy_x_1 of { happy_var_1 -> 
-	case happyOut166 happy_x_3 of { happy_var_3 -> 
-	happyIn166
-		 (happy_var_1 ++ happy_var_3
-	)}}
-
-happyReduce_474 = happySpecReduce_1  157# happyReduction_474
-happyReduction_474 happy_x_1
-	 =  case happyOut90 happy_x_1 of { happy_var_1 -> 
-	happyIn166
-		 (happy_var_1
-	)}
-
-happyReduce_475 = happySpecReduce_0  158# happyReduction_475
-happyReduction_475  =  happyIn167
-		 ([]
-	)
-
-happyReduce_476 = happySpecReduce_1  158# happyReduction_476
-happyReduction_476 happy_x_1
-	 =  case happyOut166 happy_x_1 of { happy_var_1 -> 
-	happyIn167
-		 (happy_var_1
-	)}
-
-happyNewToken action sts stk
-	= lexer(\tk -> 
-	let cont i = happyDoAction i tk action sts stk in
-	case tk of {
-	TokEOF -> happyDoAction 102# tk action sts stk;
-	TokKeyword KwAbstract happy_dollar_dollar -> cont 1#;
-	TokKeyword KwCoData happy_dollar_dollar -> cont 2#;
-	TokKeyword KwCoInductive happy_dollar_dollar -> cont 3#;
-	TokKeyword KwConstructor happy_dollar_dollar -> cont 4#;
-	TokKeyword KwData happy_dollar_dollar -> cont 5#;
-	TokKeyword KwEta happy_dollar_dollar -> cont 6#;
-	TokKeyword KwField happy_dollar_dollar -> cont 7#;
-	TokKeyword KwForall happy_dollar_dollar -> cont 8#;
-	TokKeyword KwHiding happy_dollar_dollar -> cont 9#;
-	TokKeyword KwImport happy_dollar_dollar -> cont 10#;
-	TokKeyword KwIn happy_dollar_dollar -> cont 11#;
-	TokKeyword KwInductive happy_dollar_dollar -> cont 12#;
-	TokKeyword KwInfix happy_dollar_dollar -> cont 13#;
-	TokKeyword KwInfixL happy_dollar_dollar -> cont 14#;
-	TokKeyword KwInfixR happy_dollar_dollar -> cont 15#;
-	TokKeyword KwInstance happy_dollar_dollar -> cont 16#;
-	TokKeyword KwLet happy_dollar_dollar -> cont 17#;
-	TokKeyword KwMacro happy_dollar_dollar -> cont 18#;
-	TokKeyword KwModule happy_dollar_dollar -> cont 19#;
-	TokKeyword KwMutual happy_dollar_dollar -> cont 20#;
-	TokKeyword KwNoEta happy_dollar_dollar -> cont 21#;
-	TokKeyword KwOpen happy_dollar_dollar -> cont 22#;
-	TokKeyword KwPatternSyn happy_dollar_dollar -> cont 23#;
-	TokKeyword KwPostulate happy_dollar_dollar -> cont 24#;
-	TokKeyword KwPrimitive happy_dollar_dollar -> cont 25#;
-	TokKeyword KwPrivate happy_dollar_dollar -> cont 26#;
-	TokKeyword KwProp happy_dollar_dollar -> cont 27#;
-	TokKeyword KwPublic happy_dollar_dollar -> cont 28#;
-	TokKeyword KwQuote happy_dollar_dollar -> cont 29#;
-	TokKeyword KwQuoteContext happy_dollar_dollar -> cont 30#;
-	TokKeyword KwQuoteGoal happy_dollar_dollar -> cont 31#;
-	TokKeyword KwQuoteTerm happy_dollar_dollar -> cont 32#;
-	TokKeyword KwRecord happy_dollar_dollar -> cont 33#;
-	TokKeyword KwRenaming happy_dollar_dollar -> cont 34#;
-	TokKeyword KwRewrite happy_dollar_dollar -> cont 35#;
-	TokKeyword KwSet happy_dollar_dollar -> cont 36#;
-	TokKeyword KwSyntax happy_dollar_dollar -> cont 37#;
-	TokKeyword KwTactic happy_dollar_dollar -> cont 38#;
-	TokKeyword KwTo happy_dollar_dollar -> cont 39#;
-	TokKeyword KwUnquote happy_dollar_dollar -> cont 40#;
-	TokKeyword KwUnquoteDecl happy_dollar_dollar -> cont 41#;
-	TokKeyword KwUnquoteDef happy_dollar_dollar -> cont 42#;
-	TokKeyword KwUsing happy_dollar_dollar -> cont 43#;
-	TokKeyword KwWhere happy_dollar_dollar -> cont 44#;
-	TokKeyword KwWith happy_dollar_dollar -> cont 45#;
-	TokKeyword KwBUILTIN happy_dollar_dollar -> cont 46#;
-	TokKeyword KwCATCHALL happy_dollar_dollar -> cont 47#;
-	TokKeyword KwCOMPILED happy_dollar_dollar -> cont 48#;
-	TokKeyword KwCOMPILED_DATA happy_dollar_dollar -> cont 49#;
-	TokKeyword KwCOMPILED_DATA_UHC happy_dollar_dollar -> cont 50#;
-	TokKeyword KwCOMPILED_DECLARE_DATA happy_dollar_dollar -> cont 51#;
-	TokKeyword KwCOMPILED_EPIC happy_dollar_dollar -> cont 52#;
-	TokKeyword KwCOMPILED_EXPORT happy_dollar_dollar -> cont 53#;
-	TokKeyword KwCOMPILED_JS happy_dollar_dollar -> cont 54#;
-	TokKeyword KwCOMPILED_TYPE happy_dollar_dollar -> cont 55#;
-	TokKeyword KwCOMPILED_UHC happy_dollar_dollar -> cont 56#;
-	TokKeyword KwHASKELL happy_dollar_dollar -> cont 57#;
-	TokKeyword KwDISPLAY happy_dollar_dollar -> cont 58#;
-	TokKeyword KwIMPORT happy_dollar_dollar -> cont 59#;
-	TokKeyword KwIMPORT_UHC happy_dollar_dollar -> cont 60#;
-	TokKeyword KwIMPOSSIBLE happy_dollar_dollar -> cont 61#;
-	TokKeyword KwINLINE happy_dollar_dollar -> cont 62#;
-	TokKeyword KwMEASURE happy_dollar_dollar -> cont 63#;
-	TokKeyword KwNO_SMASHING happy_dollar_dollar -> cont 64#;
-	TokKeyword KwNO_TERMINATION_CHECK happy_dollar_dollar -> cont 65#;
-	TokKeyword KwNO_POSITIVITY_CHECK happy_dollar_dollar -> cont 66#;
-	TokKeyword KwNON_TERMINATING happy_dollar_dollar -> cont 67#;
-	TokKeyword KwOPTIONS happy_dollar_dollar -> cont 68#;
-	TokKeyword KwREWRITE happy_dollar_dollar -> cont 69#;
-	TokKeyword KwSTATIC happy_dollar_dollar -> cont 70#;
-	TokKeyword KwTERMINATING happy_dollar_dollar -> cont 71#;
-	TokSetN happy_dollar_dollar -> cont 72#;
-	TokTeX happy_dollar_dollar -> cont 73#;
-	TokComment happy_dollar_dollar -> cont 74#;
-	TokSymbol SymEllipsis happy_dollar_dollar -> cont 75#;
-	TokSymbol SymDotDot happy_dollar_dollar -> cont 76#;
-	TokSymbol SymDot happy_dollar_dollar -> cont 77#;
-	TokSymbol SymSemi happy_dollar_dollar -> cont 78#;
-	TokSymbol SymColon happy_dollar_dollar -> cont 79#;
-	TokSymbol SymEqual happy_dollar_dollar -> cont 80#;
-	TokSymbol SymUnderscore happy_dollar_dollar -> cont 81#;
-	TokSymbol SymQuestionMark happy_dollar_dollar -> cont 82#;
-	TokSymbol SymArrow happy_dollar_dollar -> cont 83#;
-	TokSymbol SymLambda happy_dollar_dollar -> cont 84#;
-	TokSymbol SymAs happy_dollar_dollar -> cont 85#;
-	TokSymbol SymBar happy_dollar_dollar -> cont 86#;
-	TokSymbol SymOpenParen happy_dollar_dollar -> cont 87#;
-	TokSymbol SymCloseParen happy_dollar_dollar -> cont 88#;
-	TokSymbol SymDoubleOpenBrace happy_dollar_dollar -> cont 89#;
-	TokSymbol SymDoubleCloseBrace happy_dollar_dollar -> cont 90#;
-	TokSymbol SymOpenBrace happy_dollar_dollar -> cont 91#;
-	TokSymbol SymCloseBrace happy_dollar_dollar -> cont 92#;
-	TokSymbol SymOpenVirtualBrace happy_dollar_dollar -> cont 93#;
-	TokSymbol SymCloseVirtualBrace happy_dollar_dollar -> cont 94#;
-	TokSymbol SymVirtualSemi happy_dollar_dollar -> cont 95#;
-	TokSymbol SymOpenPragma happy_dollar_dollar -> cont 96#;
-	TokSymbol SymClosePragma happy_dollar_dollar -> cont 97#;
-	TokId happy_dollar_dollar -> cont 98#;
-	TokQId happy_dollar_dollar -> cont 99#;
-	TokString happy_dollar_dollar -> cont 100#;
-	TokLiteral happy_dollar_dollar -> cont 101#;
-	_ -> happyError' tk
-	})
-
-happyError_ 102# tk = happyError' tk
-happyError_ _ tk = happyError' tk
-
-happyThen :: () => Parser a -> (a -> Parser b) -> Parser b
-happyThen = (>>=)
-happyReturn :: () => a -> Parser a
-happyReturn = (return)
-happyThen1 = happyThen
-happyReturn1 :: () => a -> Parser a
-happyReturn1 = happyReturn
-happyError' :: () => (Token) -> Parser a
-happyError' tk = (\token -> happyError) tk
-
-tokensParser = happySomeParser where
-  happySomeParser = happyThen (happyParse 0#) (\x -> happyReturn (happyOut9 x))
-
-exprParser = happySomeParser where
-  happySomeParser = happyThen (happyParse 1#) (\x -> happyReturn (happyOut36 x))
-
-exprWhereParser = happySomeParser where
-  happySomeParser = happyThen (happyParse 2#) (\x -> happyReturn (happyOut89 x))
-
-moduleParser = happySomeParser where
-  happySomeParser = happyThen (happyParse 3#) (\x -> happyReturn (happyOut12 x))
-
-moduleNameParser = happySomeParser where
-  happySomeParser = happyThen (happyParse 4#) (\x -> happyReturn (happyOut25 x))
-
-funclauseParser = happySomeParser where
-  happySomeParser = happyThen (happyParse 5#) (\x -> happyReturn (happyOut93 x))
-
-happySeq = happyDontSeq
-
-
-{--------------------------------------------------------------------------
-    Parsers
- --------------------------------------------------------------------------}
-
--- | Parse the token stream. Used by the TeX compiler.
-tokensParser :: Parser [Token]
-
--- | Parse an expression. Could be used in interactions.
-exprParser :: Parser Expr
-
--- | Parse an expression followed by a where clause. Could be used in interactions.
-exprWhereParser :: Parser ExprWhere
-
--- | Parse a module.
-moduleParser :: Parser Module
-
-
-{--------------------------------------------------------------------------
-    Happy stuff
- --------------------------------------------------------------------------}
-
--- | Required by Happy.
-happyError :: Parser a
-happyError = parseError "Parse error"
-
-
-{--------------------------------------------------------------------------
-    Utility functions
- --------------------------------------------------------------------------}
-
--- | Grab leading OPTIONS pragmas.
-takeOptionsPragmas :: [Declaration] -> ([Pragma], [Declaration])
-takeOptionsPragmas = spanJust $ \ d -> case d of
-  Pragma p@OptionsPragma{} -> Just p
-  _                        -> Nothing
-
--- | Insert a top-level module if there is none.
---   Also fix-up for the case the declarations in the top-level module
---   are not indented (this is allowed as a special case).
-figureOutTopLevelModule :: [Declaration] -> [Declaration]
-figureOutTopLevelModule ds =
-  case spanAllowedBeforeModule ds of
-    -- Andreas 2016-02-01, issue #1388.
-    -- We need to distinguish two additional cases.
-    -- Case 1: Regular file layout: imports followed by one module. Nothing to do.
-    (ds0, [ Module{} ]) -> ds
-    -- Case 2: The declarations in the module are not indented.
-    -- This is allowed for the top level module, and thus rectified here.
-    (ds0, Module r m tel [] : ds2) -> ds0 ++ [Module r m tel ds2]
-    -- Case 3: There is a module with indented declarations,
-    -- followed by non-indented declarations.  This should be a
-    -- parse error and be reported later (see @toAbstract TopLevel{}@),
-    -- thus, we do not do anything here.
-    (ds0, Module r m tel ds1 : ds2) -> ds  -- Gives parse error in scope checker.
-    -- OLD code causing issue 1388:
-    -- (ds0, Module r m tel ds1 : ds2) -> ds0 ++ [Module r m tel $ ds1 ++ ds2]
-    -- Case 4: a top-level module declaration is missing.
-    (ds0, ds1)                      -> ds0 ++ [Module (getRange ds1) (QName noName_) [] ds1]
-
--- | Create a name from a string.
-
-mkName :: (Interval, String) -> Parser Name
-mkName (i, s) = do
-    let xs = C.stringNameParts s
-    mapM_ isValidId xs
-    unless (alternating xs) $ fail $ "a name cannot contain two consecutive underscores"
-    return $ Name (getRange i) xs
-    where
-        isValidId Hole   = return ()
-        isValidId (Id y) = do
-          let x = rawNameToString y
-          case parse defaultParseFlags [0] (lexer return) x of
-            ParseOk _ (TokId _) -> return ()
-            _                   -> fail $ "in the name " ++ s ++ ", the part " ++ x ++ " is not valid"
-
-        -- we know that there are no two Ids in a row
-        alternating (Hole : Hole : _) = False
-        alternating (_ : xs)          = alternating xs
-        alternating []                = True
-
--- | Create a qualified name from a list of strings
-mkQName :: [(Interval, String)] -> Parser QName
-mkQName ss = do
-    xs <- mapM mkName ss
-    return $ foldr Qual (QName $ last xs) (init xs)
-
-recoverLayout :: [(Interval, String)] -> String
-recoverLayout [] = ""
-recoverLayout xs@((i, _) : _) = go (iStart i) xs
-  where
-    c0 = posCol (iStart i)
-
-    go cur [] = ""
-    go cur ((i, s) : xs) = padding cur (iStart i) ++ s ++ go (iEnd i) xs
-
-    padding Pn{ posLine = l1, posCol = c1 } Pn{ posLine = l2, posCol = c2 }
-      | l1 < l2  = genericReplicate (l2 - l1) '\n' ++ genericReplicate (max 0 (c2 - c0)) ' '
-      | l1 == l2 = genericReplicate (c2 - c1) ' '
-
-ensureUnqual :: QName -> Parser Name
-ensureUnqual (QName x) = return x
-ensureUnqual q@Qual{}  = parseError' (rStart' $ getRange q) "Qualified name not allowed here"
-
--- | Match a particular name.
-isName :: String -> (Interval, String) -> Parser ()
-isName s (_,s')
-    | s == s'   = return ()
-    | otherwise = fail $ "expected " ++ s ++ ", found " ++ s'
-
--- | Build a forall pi (forall x y z -> ...)
-forallPi :: [LamBinding] -> Expr -> Expr
-forallPi bs e = Pi (map addType bs) e
-
--- | Build a telescoping let (let Ds)
-tLet :: Range -> [Declaration] -> TypedBindings
-tLet r = TypedBindings r . Arg defaultArgInfo . TLet r
-
--- | Converts lambda bindings to typed bindings.
-addType :: LamBinding -> TypedBindings
-addType (DomainFull b)   = b
-addType (DomainFree info x) = TypedBindings r $ Arg info $ TBind r [pure x] $ Underscore r Nothing
-  where r = getRange x
-
-mergeImportDirectives :: [ImportDirective] -> Parser ImportDirective
-mergeImportDirectives is = do
-  i <- foldl merge (return defaultImportDir) is
-  verifyImportDirective i
-  where
-    merge mi i2 = do
-      i1 <- mi
-      let err = parseError' (rStart' $ getRange i2) "Cannot mix using and hiding module directives"
-      return $ ImportDirective
-        { importDirRange = fuseRange i1 i2
-        , using          = mappend (using i1) (using i2)
-        , hiding         = hiding i1 ++ hiding i2
-        , impRenaming    = impRenaming i1 ++ impRenaming i2
-        , publicOpen     = publicOpen i1 || publicOpen i2 }
-
--- | Check that an import directive doesn't contain repeated names
-verifyImportDirective :: ImportDirective -> Parser ImportDirective
-verifyImportDirective i =
-    case filter ((>1) . length)
-         $ group
-         $ sort xs
-    of
-        []  -> return i
-        yss -> let Just pos = rStart' $ getRange $ head $ concat yss in
-               parseErrorAt pos $
-                "Repeated name" ++ s ++ " in import directive: " ++
-                concat (intersperse ", " $ map (show . head) yss)
-            where
-                s = case yss of
-                        [_] -> ""
-                        _   -> "s"
-    where
-        xs = names (using i) ++ hiding i ++ map renFrom (impRenaming i)
-        names (Using xs)    = xs
-        names UseEverything = []
-
-data RecordDirective
-   = Induction (Ranged Induction)
-   | Constructor (Name, IsInstance)
-   | Eta         (Ranged Bool)
-   deriving (Eq,Show)
-
-verifyRecordDirectives :: [RecordDirective] -> Parser (Maybe (Ranged Induction), Maybe Bool, Maybe (Name, IsInstance))
-verifyRecordDirectives xs | null rs = return (ltm is, ltm es, ltm cs)
-                          | otherwise = let Just pos = rStart' $ (head rs) in
-                                          parseErrorAt pos $ "Repeated record directives at: \n" ++ intercalate "\n" (map show rs)
-
- where
-  ltm :: [a] -> Maybe a
-  ltm [] = Nothing
-  ltm (x:xs) = Just x
-  errorFromList [] = []
-  errorFromList [x] = []
-  errorFromList xs = map getRange xs
-  rs = sort (concat ([errorFromList is, errorFromList es', errorFromList cs]))
-  is = [ i | Induction i <- xs ]
-  es' = [ i | Eta i <- xs ]
-  es = map rangedThing es'
-  cs = [ i | Constructor i <- xs ]
-
-
--- | Breaks up a string into substrings. Returns every maximal
--- subsequence of zero or more characters distinct from @'.'@.
---
--- > splitOnDots ""         == [""]
--- > splitOnDots "foo.bar"  == ["foo", "bar"]
--- > splitOnDots ".foo.bar" == ["", "foo", "bar"]
--- > splitOnDots "foo.bar." == ["foo", "bar", ""]
--- > splitOnDots "foo..bar" == ["foo", "", "bar"]
-splitOnDots :: String -> [String]
-splitOnDots ""        = [""]
-splitOnDots ('.' : s) = [] : splitOnDots s
-splitOnDots (c   : s) = case splitOnDots s of
-  p : ps -> (c : p) : ps
-
-prop_splitOnDots = and
-  [ splitOnDots ""         == [""]
-  , splitOnDots "foo.bar"  == ["foo", "bar"]
-  , splitOnDots ".foo.bar" == ["", "foo", "bar"]
-  , splitOnDots "foo.bar." == ["foo", "bar", ""]
-  , splitOnDots "foo..bar" == ["foo", "", "bar"]
-  ]
-
--- | Returns 'True' iff the name is a valid Haskell (hierarchical)
--- module name.
-validHaskellModuleName :: String -> Bool
-validHaskellModuleName = all ok . splitOnDots
-  where
-  -- Checks if a dot-less module name is well-formed.
-  ok :: String -> Bool
-  ok []      = False
-  ok (c : s) =
-    isUpper c &&
-    all (\c -> isLower c || c == '_' ||
-               isUpper c ||
-               generalCategory c == DecimalNumber ||
-               c == '\'')
-        s
-
-{--------------------------------------------------------------------------
-    Patterns
- --------------------------------------------------------------------------}
-
--- | Turn an expression into a left hand side.
-exprToLHS :: Expr -> Parser ([Expr] -> [Expr] -> LHS)
-exprToLHS e = case e of
-  WithApp r e es -> LHS <$> exprToPattern e <*> mapM exprToPattern es
-  _              -> LHS <$> exprToPattern e <*> return []
-
--- | Turn an expression into a pattern. Fails if the expression is not a
---   valid pattern.
-exprToPattern :: Expr -> Parser Pattern
-exprToPattern e = do
-    let Just pos = rStart' $ getRange e
-        failure = parseErrorAt pos $ "Not a valid pattern: " ++ show e
-    case e of
-        Ident x                 -> return $ IdentP x
-        App _ e1 e2             -> AppP <$> exprToPattern e1
-                                        <*> T.mapM (T.mapM exprToPattern) e2
-        Paren r e               -> ParenP r
-                                        <$> exprToPattern e
-        Underscore r _          -> return $ WildP r
-        Absurd r                -> return $ AbsurdP r
-        As r x e                -> AsP r x <$> exprToPattern e
-        Dot r (HiddenArg _ e)   -> return $ HiddenP r $ fmap (DotP r) e
-        Dot r e                 -> return $ DotP r e
-        Lit l                   -> return $ LitP l
-        HiddenArg r e           -> HiddenP r <$> T.mapM exprToPattern e
-        InstanceArg r e         -> InstanceP r <$> T.mapM exprToPattern e
-        RawApp r es             -> RawAppP r <$> mapM exprToPattern es
-        Quote r                 -> return $ QuoteP r
-        Rec r es | Just fs <- mapM maybeLeft es -> do
-          RecP r <$> T.mapM (T.mapM exprToPattern) fs
-        _                       -> failure
-
-opAppExprToPattern :: OpApp Expr -> Parser Pattern
-opAppExprToPattern (SyntaxBindingLambda _ _ _) = parseError "Syntax binding lambda cannot appear in a pattern"
-opAppExprToPattern (Ordinary e) = exprToPattern e
-
--- | Turn an expression into a name. Fails if the expression is not a
---   valid identifier.
-exprToName :: Expr -> Parser Name
-exprToName (Ident (QName x)) = return x
-exprToName e =
-  let Just pos = rStart' $ getRange e in
-  parseErrorAt pos $ "Not a valid identifier: " ++ show e
-
-stripSingletonRawApp :: Expr -> Expr
-stripSingletonRawApp (RawApp _ [e]) = stripSingletonRawApp e
-stripSingletonRawApp e = e
-
-isEqual :: Expr -> Maybe (Expr, Expr)
-isEqual e =
-  case stripSingletonRawApp e of
-    Equal _ a b -> Just (stripSingletonRawApp a, stripSingletonRawApp b)
-    _           -> Nothing
-
-maybeNamed :: Expr -> Named_ Expr
-maybeNamed e =
-  case isEqual e of
-    Just (Ident (QName x), b) -> named (Ranged (getRange x) (nameToRawName x)) b
-    _                         -> unnamed e
-
-patternSynArgs :: [Either Hiding LamBinding] -> Parser [Arg Name]
-patternSynArgs = mapM pSynArg
-  where
-    pSynArg Left{}                   = parseError "Absurd patterns are not allowed in pattern synonyms"
-    pSynArg (Right DomainFull{})     = parseError "Unexpected type signature in pattern synonym argument"
-    pSynArg (Right (DomainFree a x))
-      | getHiding a `notElem` [Hidden, NotHidden] = parseError $ show (getHiding a) ++ " arguments not allowed to pattern synonyms"
-      | getRelevance a /= Relevant                = parseError "Arguments to pattern synonyms must be relevant"
-      | otherwise                                 = return $ Arg a (boundName x)
-
-parsePanic s = parseError $ "Internal parser error: " ++ s ++ ". Please report this as a bug."
-
-{- RHS or type signature -}
-
-data RHSOrTypeSigs
- = JustRHS RHS
- | TypeSigsRHS Expr
- deriving Show
-
-patternToNames :: Pattern -> Parser [(ArgInfo, Name)]
-patternToNames p =
-  case p of
-    IdentP (QName i)         -> return [(defaultArgInfo, i)]
-    WildP r                  -> return [(defaultArgInfo, C.noName r)]
-    DotP _ (Ident (QName i)) -> return [(setRelevance Irrelevant defaultArgInfo, i)]
-    RawAppP _ ps             -> concat <$> mapM patternToNames ps
-    _                        -> parseError $
-      "Illegal name in type signature: " ++ prettyShow p
-
-funClauseOrTypeSigs :: LHS -> RHSOrTypeSigs -> WhereClause -> Parser [Declaration]
-funClauseOrTypeSigs lhs mrhs wh = do
-  -- traceShowM lhs
-  case mrhs of
-    JustRHS rhs   -> return [FunClause lhs rhs wh False]
-    TypeSigsRHS e -> case wh of
-      NoWhere -> case lhs of
-        Ellipsis{}      -> parseError "The ellipsis ... cannot have a type signature"
-        LHS _ _ _ (_:_) -> parseError "Illegal: with in type signature"
-        LHS _ _ (_:_) _ -> parseError "Illegal: rewrite in type signature"
-        LHS _ (_:_) _ _ -> parseError "Illegal: with patterns in type signature"
-        LHS p [] [] []  -> map (\ (x, y) -> TypeSig x y e) <$> patternToNames p
-      _ -> parseError "A type signature cannot have a where clause"
-
-parseDisplayPragma :: Range -> Position -> String -> Parser Pragma
-parseDisplayPragma r pos s =
-  case parsePosString pos defaultParseFlags [normal] funclauseParser s of
-    ParseOk s [FunClause (LHS lhs [] [] []) (RHS rhs) NoWhere ca] | null (parseInp s) ->
-      return $ DisplayPragma r lhs rhs
-    _ -> parseError "Invalid DISPLAY pragma. Should have form {-# DISPLAY LHS = RHS #-}."
-
-{--------------------------------------------------------------------------
-    Tests
- --------------------------------------------------------------------------}
-
--- | Test suite.
-tests :: IO Bool
-tests = runTests "Agda.Syntax.Parser.Parser"
-  [ quickCheck' prop_splitOnDots
-  ]
-{-# LINE 1 "templates/GenericTemplate.hs" #-}
-{-# LINE 1 "templates/GenericTemplate.hs" #-}
-{-# LINE 1 "<command-line>" #-}
+    , splitOnDots  -- only used by the internal test-suite
+    ) where
+
+import Control.Monad
+
+import Data.Char
+import Data.Functor
+import Data.List
+import Data.Maybe
+import Data.Monoid
+import qualified Data.Traversable as T
+
+import Debug.Trace
+
+import Agda.Syntax.Position hiding (tests)
+import Agda.Syntax.Parser.Monad
+import Agda.Syntax.Parser.Lexer
+import Agda.Syntax.Parser.Tokens
+import Agda.Syntax.Concrete as C
+import Agda.Syntax.Concrete.Pretty ()
+import Agda.Syntax.Common
+import Agda.Syntax.Fixity
+import Agda.Syntax.Notation
+import Agda.Syntax.Literal
+
+import Agda.TypeChecking.Positivity.Occurrence hiding (tests)
+
+import Agda.Utils.Either hiding (tests)
+import Agda.Utils.Hash
+import Agda.Utils.List ( spanJust, chopWhen )
+import Agda.Utils.Monad
+import Agda.Utils.Pretty
+import Agda.Utils.Singleton
+import Agda.Utils.Tuple
+
+import Agda.Utils.Impossible
+#include "undefined.h"
+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.5
+
+newtype HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84 = HappyAbsSyn HappyAny
+#if __GLASGOW_HASKELL__ >= 607
+type HappyAny = Happy_GHC_Exts.Any
+#else
+type HappyAny = forall a . a
+#endif
+happyIn9 :: ([Token]) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn9 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn9 #-}
+happyOut9 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> ([Token])
+happyOut9 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut9 #-}
+happyIn10 :: ([Token]) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn10 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn10 #-}
+happyOut10 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> ([Token])
+happyOut10 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut10 #-}
+happyIn11 :: (Token) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn11 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn11 #-}
+happyOut11 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (Token)
+happyOut11 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut11 #-}
+happyIn12 :: (([Pragma], [Declaration])) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn12 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn12 #-}
+happyOut12 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (([Pragma], [Declaration]))
+happyOut12 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut12 #-}
+happyIn13 :: t13 -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn13 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn13 #-}
+happyOut13 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> t13
+happyOut13 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut13 #-}
+happyIn14 :: t14 -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn14 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn14 #-}
+happyOut14 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> t14
+happyOut14 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut14 #-}
+happyIn15 :: t15 -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn15 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn15 #-}
+happyOut15 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> t15
+happyOut15 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut15 #-}
+happyIn16 :: (()) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn16 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn16 #-}
+happyOut16 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (())
+happyOut16 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut16 #-}
+happyIn17 :: (Integer) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn17 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn17 #-}
+happyOut17 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (Integer)
+happyOut17 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut17 #-}
+happyIn18 :: (Name) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn18 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn18 #-}
+happyOut18 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (Name)
+happyOut18 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut18 #-}
+happyIn19 :: ([Name]) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn19 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn19 #-}
+happyOut19 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> ([Name])
+happyOut19 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut19 #-}
+happyIn20 :: (Range) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn20 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn20 #-}
+happyOut20 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (Range)
+happyOut20 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut20 #-}
+happyIn21 :: (Arg Name) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn21 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn21 #-}
+happyOut21 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (Arg Name)
+happyOut21 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut21 #-}
+happyIn22 :: ([Arg Name]) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn22 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn22 #-}
+happyOut22 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> ([Arg Name])
+happyOut22 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut22 #-}
+happyIn23 :: ([Arg Name]) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn23 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn23 #-}
+happyOut23 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> ([Arg Name])
+happyOut23 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut23 #-}
+happyIn24 :: (QName) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn24 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn24 #-}
+happyOut24 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (QName)
+happyOut24 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut24 #-}
+happyIn25 :: (QName) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn25 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn25 #-}
+happyOut25 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (QName)
+happyOut25 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut25 #-}
+happyIn26 :: (Name) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn26 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn26 #-}
+happyOut26 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (Name)
+happyOut26 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut26 #-}
+happyIn27 :: ([Name]) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn27 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn27 #-}
+happyOut27 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> ([Name])
+happyOut27 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut27 #-}
+happyIn28 :: ([Name]) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn28 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn28 #-}
+happyOut28 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> ([Name])
+happyOut28 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut28 #-}
+happyIn29 :: (Either [Name] [Expr]) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn29 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn29 #-}
+happyOut29 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (Either [Name] [Expr])
+happyOut29 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut29 #-}
+happyIn30 :: ([WithHiding Name]) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn30 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn30 #-}
+happyOut30 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> ([WithHiding Name])
+happyOut30 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut30 #-}
+happyIn31 :: ([String]) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn31 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn31 #-}
+happyOut31 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> ([String])
+happyOut31 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut31 #-}
+happyIn32 :: (String) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn32 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn32 #-}
+happyOut32 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (String)
+happyOut32 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut32 #-}
+happyIn33 :: ([(Interval, String)]) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn33 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn33 #-}
+happyOut33 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> ([(Interval, String)])
+happyOut33 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut33 #-}
+happyIn34 :: (Name) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn34 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn34 #-}
+happyOut34 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (Name)
+happyOut34 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut34 #-}
+happyIn35 :: (QName) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn35 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn35 #-}
+happyOut35 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (QName)
+happyOut35 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut35 #-}
+happyIn36 :: ([QName]) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn36 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn36 #-}
+happyOut36 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> ([QName])
+happyOut36 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut36 #-}
+happyIn37 :: (Expr) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn37 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn37 #-}
+happyOut37 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (Expr)
+happyOut37 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut37 #-}
+happyIn38 :: t38 -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn38 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn38 #-}
+happyOut38 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> t38
+happyOut38 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut38 #-}
+happyIn39 :: ([Expr]) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn39 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn39 #-}
+happyOut39 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> ([Expr])
+happyOut39 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut39 #-}
+happyIn40 :: ([Expr]) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn40 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn40 #-}
+happyOut40 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> ([Expr])
+happyOut40 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut40 #-}
+happyIn41 :: t41 -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn41 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn41 #-}
+happyOut41 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> t41
+happyOut41 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut41 #-}
+happyIn42 :: (Expr) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn42 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn42 #-}
+happyOut42 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (Expr)
+happyOut42 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut42 #-}
+happyIn43 :: ([Expr]) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn43 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn43 #-}
+happyOut43 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> ([Expr])
+happyOut43 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut43 #-}
+happyIn44 :: t44 -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn44 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn44 #-}
+happyOut44 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> t44
+happyOut44 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut44 #-}
+happyIn45 :: t45 -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn45 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn45 #-}
+happyOut45 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> t45
+happyOut45 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut45 #-}
+happyIn46 :: t46 -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn46 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn46 #-}
+happyOut46 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> t46
+happyOut46 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut46 #-}
+happyIn47 :: (RecordAssignments) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn47 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn47 #-}
+happyOut47 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (RecordAssignments)
+happyOut47 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut47 #-}
+happyIn48 :: (RecordAssignments) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn48 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn48 #-}
+happyOut48 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (RecordAssignments)
+happyOut48 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut48 #-}
+happyIn49 :: (RecordAssignment) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn49 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn49 #-}
+happyOut49 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (RecordAssignment)
+happyOut49 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut49 #-}
+happyIn50 :: (ModuleAssignment) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn50 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn50 #-}
+happyOut50 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (ModuleAssignment)
+happyOut50 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut50 #-}
+happyIn51 :: ([FieldAssignment]) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn51 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn51 #-}
+happyOut51 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> ([FieldAssignment])
+happyOut51 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut51 #-}
+happyIn52 :: ([FieldAssignment]) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn52 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn52 #-}
+happyOut52 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> ([FieldAssignment])
+happyOut52 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut52 #-}
+happyIn53 :: (FieldAssignment) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn53 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn53 #-}
+happyOut53 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (FieldAssignment)
+happyOut53 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut53 #-}
+happyIn54 :: t54 -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn54 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn54 #-}
+happyOut54 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> t54
+happyOut54 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut54 #-}
+happyIn55 :: t55 -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn55 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn55 #-}
+happyOut55 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> t55
+happyOut55 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut55 #-}
+happyIn56 :: ([TypedBindings]) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn56 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn56 #-}
+happyOut56 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> ([TypedBindings])
+happyOut56 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut56 #-}
+happyIn57 :: (TypedBindings) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn57 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn57 #-}
+happyOut57 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (TypedBindings)
+happyOut57 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut57 #-}
+happyIn58 :: (TypedBindings) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn58 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn58 #-}
+happyOut58 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (TypedBindings)
+happyOut58 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut58 #-}
+happyIn59 :: (TypedBindings) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn59 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn59 #-}
+happyOut59 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (TypedBindings)
+happyOut59 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut59 #-}
+happyIn60 :: ([LamBinding]) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn60 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn60 #-}
+happyOut60 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> ([LamBinding])
+happyOut60 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut60 #-}
+happyIn61 :: (Either ([LamBinding], Hiding) [Expr]) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn61 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn61 #-}
+happyOut61 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (Either ([LamBinding], Hiding) [Expr])
+happyOut61 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut61 #-}
+happyIn62 :: ([Either Hiding LamBinding]) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn62 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn62 #-}
+happyOut62 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> ([Either Hiding LamBinding])
+happyOut62 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut62 #-}
+happyIn63 :: (Either [Either Hiding LamBinding] [Expr]) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn63 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn63 #-}
+happyOut63 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (Either [Either Hiding LamBinding] [Expr])
+happyOut63 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut63 #-}
+happyIn64 :: ((LHS,RHS,WhereClause,Bool)) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn64 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn64 #-}
+happyOut64 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> ((LHS,RHS,WhereClause,Bool))
+happyOut64 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut64 #-}
+happyIn65 :: ((LHS,RHS,WhereClause,Bool)) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn65 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn65 #-}
+happyOut65 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> ((LHS,RHS,WhereClause,Bool))
+happyOut65 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut65 #-}
+happyIn66 :: ((LHS,RHS,WhereClause,Bool)) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn66 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn66 #-}
+happyOut66 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> ((LHS,RHS,WhereClause,Bool))
+happyOut66 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut66 #-}
+happyIn67 :: ([(LHS,RHS,WhereClause,Bool)]) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn67 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn67 #-}
+happyOut67 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> ([(LHS,RHS,WhereClause,Bool)])
+happyOut67 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut67 #-}
+happyIn68 :: ([LamBinding]) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn68 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn68 #-}
+happyOut68 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> ([LamBinding])
+happyOut68 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut68 #-}
+happyIn69 :: ([LamBinding]) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn69 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn69 #-}
+happyOut69 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> ([LamBinding])
+happyOut69 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut69 #-}
+happyIn70 :: ([LamBinding]) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn70 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn70 #-}
+happyOut70 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> ([LamBinding])
+happyOut70 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut70 #-}
+happyIn71 :: ([LamBinding]) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn71 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn71 #-}
+happyOut71 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> ([LamBinding])
+happyOut71 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut71 #-}
+happyIn72 :: (Either [LamBinding] [Expr]) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn72 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn72 #-}
+happyOut72 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (Either [LamBinding] [Expr])
+happyOut72 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut72 #-}
+happyIn73 :: (ImportDirective) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn73 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn73 #-}
+happyOut73 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (ImportDirective)
+happyOut73 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut73 #-}
+happyIn74 :: ([ImportDirective]) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn74 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn74 #-}
+happyOut74 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> ([ImportDirective])
+happyOut74 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut74 #-}
+happyIn75 :: (ImportDirective) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn75 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn75 #-}
+happyOut75 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (ImportDirective)
+happyOut75 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut75 #-}
+happyIn76 :: ((Using, Range)) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn76 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn76 #-}
+happyOut76 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> ((Using, Range))
+happyOut76 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut76 #-}
+happyIn77 :: (([ImportedName], Range)) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn77 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn77 #-}
+happyOut77 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (([ImportedName], Range))
+happyOut77 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut77 #-}
+happyIn78 :: (([Renaming] , Range)) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn78 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn78 #-}
+happyOut78 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (([Renaming] , Range))
+happyOut78 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut78 #-}
+happyIn79 :: ([Renaming]) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn79 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn79 #-}
+happyOut79 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> ([Renaming])
+happyOut79 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut79 #-}
+happyIn80 :: (Renaming) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn80 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn80 #-}
+happyOut80 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (Renaming)
+happyOut80 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut80 #-}
+happyIn81 :: (ImportedName) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn81 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn81 #-}
+happyOut81 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (ImportedName)
+happyOut81 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut81 #-}
+happyIn82 :: (ImportedName) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn82 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn82 #-}
+happyOut82 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (ImportedName)
+happyOut82 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut82 #-}
+happyIn83 :: ([ImportedName]) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn83 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn83 #-}
+happyOut83 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> ([ImportedName])
+happyOut83 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut83 #-}
+happyIn84 :: t84 -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn84 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn84 #-}
+happyOut84 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> t84
+happyOut84 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut84 #-}
+happyIn85 :: (LHS) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn85 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn85 #-}
+happyOut85 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (LHS)
+happyOut85 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut85 #-}
+happyIn86 :: ([Pattern]) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn86 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn86 #-}
+happyOut86 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> ([Pattern])
+happyOut86 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut86 #-}
+happyIn87 :: ([Expr]) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn87 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn87 #-}
+happyOut87 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> ([Expr])
+happyOut87 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut87 #-}
+happyIn88 :: ([Expr]) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn88 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn88 #-}
+happyOut88 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> ([Expr])
+happyOut88 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut88 #-}
+happyIn89 :: (WhereClause) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn89 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn89 #-}
+happyOut89 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (WhereClause)
+happyOut89 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut89 #-}
+happyIn90 :: (ExprWhere) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn90 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn90 #-}
+happyOut90 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (ExprWhere)
+happyOut90 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut90 #-}
+happyIn91 :: ([Declaration]) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn91 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn91 #-}
+happyOut91 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> ([Declaration])
+happyOut91 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut91 #-}
+happyIn92 :: ([Declaration]) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn92 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn92 #-}
+happyOut92 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> ([Declaration])
+happyOut92 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut92 #-}
+happyIn93 :: ([Arg Declaration]) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn93 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn93 #-}
+happyOut93 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> ([Arg Declaration])
+happyOut93 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut93 #-}
+happyIn94 :: ([Declaration]) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn94 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn94 #-}
+happyOut94 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> ([Declaration])
+happyOut94 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut94 #-}
+happyIn95 :: (RHSOrTypeSigs) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn95 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn95 #-}
+happyOut95 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (RHSOrTypeSigs)
+happyOut95 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut95 #-}
+happyIn96 :: (Declaration) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn96 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn96 #-}
+happyOut96 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (Declaration)
+happyOut96 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut96 #-}
+happyIn97 :: (Declaration) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn97 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn97 #-}
+happyOut97 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (Declaration)
+happyOut97 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut97 #-}
+happyIn98 :: (Declaration) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn98 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn98 #-}
+happyOut98 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (Declaration)
+happyOut98 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut98 #-}
+happyIn99 :: (Declaration) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn99 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn99 #-}
+happyOut99 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (Declaration)
+happyOut99 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut99 #-}
+happyIn100 :: ((Name, IsInstance)) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn100 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn100 #-}
+happyOut100 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> ((Name, IsInstance))
+happyOut100 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut100 #-}
+happyIn101 :: (Declaration) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn101 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn101 #-}
+happyOut101 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (Declaration)
+happyOut101 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut101 #-}
+happyIn102 :: ([Declaration]) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn102 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn102 #-}
+happyOut102 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> ([Declaration])
+happyOut102 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut102 #-}
+happyIn103 :: (Declaration) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn103 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn103 #-}
+happyOut103 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (Declaration)
+happyOut103 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut103 #-}
+happyIn104 :: (Declaration) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn104 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn104 #-}
+happyOut104 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (Declaration)
+happyOut104 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut104 #-}
+happyIn105 :: (Declaration) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn105 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn105 #-}
+happyOut105 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (Declaration)
+happyOut105 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut105 #-}
+happyIn106 :: (Declaration) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn106 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn106 #-}
+happyOut106 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (Declaration)
+happyOut106 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut106 #-}
+happyIn107 :: (Declaration) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn107 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn107 #-}
+happyOut107 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (Declaration)
+happyOut107 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut107 #-}
+happyIn108 :: (Declaration) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn108 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn108 #-}
+happyOut108 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (Declaration)
+happyOut108 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut108 #-}
+happyIn109 :: (Declaration) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn109 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn109 #-}
+happyOut109 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (Declaration)
+happyOut109 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut109 #-}
+happyIn110 :: (Declaration) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn110 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn110 #-}
+happyOut110 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (Declaration)
+happyOut110 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut110 #-}
+happyIn111 :: (Declaration) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn111 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn111 #-}
+happyOut111 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (Declaration)
+happyOut111 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut111 #-}
+happyIn112 :: (Declaration) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn112 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn112 #-}
+happyOut112 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (Declaration)
+happyOut112 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut112 #-}
+happyIn113 :: ([Arg Name]) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn113 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn113 #-}
+happyOut113 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> ([Arg Name])
+happyOut113 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut113 #-}
+happyIn114 :: ([RString]) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn114 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn114 #-}
+happyOut114 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> ([RString])
+happyOut114 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut114 #-}
+happyIn115 :: ([NamedArg HoleName]) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn115 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn115 #-}
+happyOut115 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> ([NamedArg HoleName])
+happyOut115 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut115 #-}
+happyIn116 :: (NamedArg HoleName) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn116 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn116 #-}
+happyOut116 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (NamedArg HoleName)
+happyOut116 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut116 #-}
+happyIn117 :: (HoleName) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn117 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn117 #-}
+happyOut117 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (HoleName)
+happyOut117 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut117 #-}
+happyIn118 :: (HoleName) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn118 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn118 #-}
+happyOut118 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (HoleName)
+happyOut118 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut118 #-}
+happyIn119 :: (RString) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn119 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn119 #-}
+happyOut119 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (RString)
+happyOut119 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut119 #-}
+happyIn120 :: (Maybe Range) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn120 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn120 #-}
+happyOut120 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (Maybe Range)
+happyOut120 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut120 #-}
+happyIn121 :: ([Declaration]) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn121 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn121 #-}
+happyOut121 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> ([Declaration])
+happyOut121 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut121 #-}
+happyIn122 :: ([Expr]) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn122 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn122 #-}
+happyOut122 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> ([Expr])
+happyOut122 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut122 #-}
+happyIn123 :: ([TypedBindings] -> Parser ModuleApplication) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn123 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn123 #-}
+happyOut123 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> ([TypedBindings] -> Parser ModuleApplication)
+happyOut123 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut123 #-}
+happyIn124 :: (Declaration) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn124 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn124 #-}
+happyOut124 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (Declaration)
+happyOut124 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut124 #-}
+happyIn125 :: (Declaration) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn125 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn125 #-}
+happyOut125 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (Declaration)
+happyOut125 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut125 #-}
+happyIn126 :: (Name) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn126 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn126 #-}
+happyOut126 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (Name)
+happyOut126 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut126 #-}
+happyIn127 :: ([Declaration]) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn127 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn127 #-}
+happyOut127 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> ([Declaration])
+happyOut127 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut127 #-}
+happyIn128 :: (Declaration) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn128 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn128 #-}
+happyOut128 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (Declaration)
+happyOut128 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut128 #-}
+happyIn129 :: (Pragma) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn129 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn129 #-}
+happyOut129 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (Pragma)
+happyOut129 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut129 #-}
+happyIn130 :: (Pragma) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn130 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn130 #-}
+happyOut130 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (Pragma)
+happyOut130 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut130 #-}
+happyIn131 :: (Pragma) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn131 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn131 #-}
+happyOut131 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (Pragma)
+happyOut131 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut131 #-}
+happyIn132 :: (Pragma) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn132 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn132 #-}
+happyOut132 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (Pragma)
+happyOut132 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut132 #-}
+happyIn133 :: (Pragma) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn133 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn133 #-}
+happyOut133 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (Pragma)
+happyOut133 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut133 #-}
+happyIn134 :: (Pragma) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn134 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn134 #-}
+happyOut134 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (Pragma)
+happyOut134 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut134 #-}
+happyIn135 :: (Pragma) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn135 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn135 #-}
+happyOut135 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (Pragma)
+happyOut135 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut135 #-}
+happyIn136 :: (Pragma) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn136 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn136 #-}
+happyOut136 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (Pragma)
+happyOut136 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut136 #-}
+happyIn137 :: (Pragma) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn137 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn137 #-}
+happyOut137 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (Pragma)
+happyOut137 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut137 #-}
+happyIn138 :: (Pragma) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn138 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn138 #-}
+happyOut138 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (Pragma)
+happyOut138 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut138 #-}
+happyIn139 :: (Pragma) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn139 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn139 #-}
+happyOut139 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (Pragma)
+happyOut139 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut139 #-}
+happyIn140 :: (Pragma) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn140 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn140 #-}
+happyOut140 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (Pragma)
+happyOut140 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut140 #-}
+happyIn141 :: (Pragma) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn141 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn141 #-}
+happyOut141 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (Pragma)
+happyOut141 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut141 #-}
+happyIn142 :: (Pragma) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn142 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn142 #-}
+happyOut142 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (Pragma)
+happyOut142 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut142 #-}
+happyIn143 :: (Pragma) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn143 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn143 #-}
+happyOut143 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (Pragma)
+happyOut143 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut143 #-}
+happyIn144 :: (Pragma) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn144 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn144 #-}
+happyOut144 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (Pragma)
+happyOut144 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut144 #-}
+happyIn145 :: (Pragma) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn145 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn145 #-}
+happyOut145 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (Pragma)
+happyOut145 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut145 #-}
+happyIn146 :: (Pragma) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn146 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn146 #-}
+happyOut146 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (Pragma)
+happyOut146 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut146 #-}
+happyIn147 :: (Pragma) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn147 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn147 #-}
+happyOut147 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (Pragma)
+happyOut147 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut147 #-}
+happyIn148 :: (Pragma) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn148 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn148 #-}
+happyOut148 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (Pragma)
+happyOut148 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut148 #-}
+happyIn149 :: (Pragma) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn149 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn149 #-}
+happyOut149 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (Pragma)
+happyOut149 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut149 #-}
+happyIn150 :: (Pragma) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn150 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn150 #-}
+happyOut150 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (Pragma)
+happyOut150 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut150 #-}
+happyIn151 :: (Pragma) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn151 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn151 #-}
+happyOut151 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (Pragma)
+happyOut151 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut151 #-}
+happyIn152 :: (Pragma) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn152 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn152 #-}
+happyOut152 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (Pragma)
+happyOut152 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut152 #-}
+happyIn153 :: (Pragma) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn153 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn153 #-}
+happyOut153 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (Pragma)
+happyOut153 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut153 #-}
+happyIn154 :: (Pragma) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn154 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn154 #-}
+happyOut154 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (Pragma)
+happyOut154 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut154 #-}
+happyIn155 :: (Pragma) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn155 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn155 #-}
+happyOut155 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (Pragma)
+happyOut155 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut155 #-}
+happyIn156 :: ([(Range, Occurrence)]) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn156 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn156 #-}
+happyOut156 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> ([(Range, Occurrence)])
+happyOut156 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut156 #-}
+happyIn157 :: ((Range, Occurrence)) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn157 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn157 #-}
+happyOut157 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> ((Range, Occurrence))
+happyOut157 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut157 #-}
+happyIn158 :: ([TypeSignature]) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn158 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn158 #-}
+happyOut158 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> ([TypeSignature])
+happyOut158 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut158 #-}
+happyIn159 :: ([TypeSignature]) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn159 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn159 #-}
+happyOut159 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> ([TypeSignature])
+happyOut159 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut159 #-}
+happyIn160 :: ([Arg TypeSignature]) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn160 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn160 #-}
+happyOut160 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> ([Arg TypeSignature])
+happyOut160 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut160 #-}
+happyIn161 :: ([Arg TypeSignature]) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn161 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn161 #-}
+happyOut161 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> ([Arg TypeSignature])
+happyOut161 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut161 #-}
+happyIn162 :: (((Maybe (Ranged Induction), Maybe Bool, Maybe (Name, IsInstance)), [Declaration])) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn162 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn162 #-}
+happyOut162 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (((Maybe (Ranged Induction), Maybe Bool, Maybe (Name, IsInstance)), [Declaration]))
+happyOut162 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut162 #-}
+happyIn163 :: ([RecordDirective]) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn163 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn163 #-}
+happyOut163 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> ([RecordDirective])
+happyOut163 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut163 #-}
+happyIn164 :: (RecordDirective) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn164 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn164 #-}
+happyOut164 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (RecordDirective)
+happyOut164 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut164 #-}
+happyIn165 :: (Ranged Bool) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn165 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn165 #-}
+happyOut165 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (Ranged Bool)
+happyOut165 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut165 #-}
+happyIn166 :: (Ranged Induction) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn166 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn166 #-}
+happyOut166 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (Ranged Induction)
+happyOut166 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut166 #-}
+happyIn167 :: ([Declaration]) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn167 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn167 #-}
+happyOut167 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> ([Declaration])
+happyOut167 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut167 #-}
+happyIn168 :: ([Declaration]) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn168 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn168 #-}
+happyOut168 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> ([Declaration])
+happyOut168 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut168 #-}
+happyIn169 :: ([Declaration]) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn169 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn169 #-}
+happyOut169 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> ([Declaration])
+happyOut169 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut169 #-}
+happyIn170 :: ([Declaration]) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyIn170 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn170 #-}
+happyOut170 :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> ([Declaration])
+happyOut170 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut170 #-}
+happyInTok :: (Token) -> (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84)
+happyInTok x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyInTok #-}
+happyOutTok :: (HappyAbsSyn t13 t14 t15 t38 t41 t44 t45 t46 t54 t55 t84) -> (Token)
+happyOutTok x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOutTok #-}
+
+
+happyActOffsets :: HappyAddr
+happyActOffsets = HappyA# "\x00\x00\xd4\x0b\xd4\x0b\xf6\x06\xde\x04\xb6\x0b\x00\x00\x9d\x04\xff\x06\x00\x00\x2c\x07\x00\x00\x00\x00\x00\x00\x00\x00\xf7\x06\x00\x00\x00\x00\xb7\x09\xef\x04\xe8\x06\xd6\x0a\xec\x06\x00\x00\x00\x00\x00\x00\xe5\x06\x00\x00\xb2\x0d\x00\x00\x67\x0d\x00\x00\x00\x00\xf1\x06\x67\x0d\x00\x00\x00\x00\x1b\x03\x9c\x09\x68\x0b\x9a\x07\x4e\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xde\x06\xde\x06\x34\x04\xc6\x00\xea\x06\x51\x01\x68\x0b\xed\x06\x00\x00\x05\x02\xcf\x06\x25\x03\x4e\x0d\x7c\x07\x24\x07\x4e\x09\xcf\x06\xcf\x06\xe7\x06\x00\x00\xda\x06\x1b\x02\xd5\x06\x00\x00\x00\x00\xb2\xff\xb2\xff\x00\x00\xca\x06\xe3\x06\xd9\x06\xb6\x01\xd8\x06\x12\x07\xd1\x06\xc3\x06\xd8\x04\x00\x00\x00\x00\x30\x09\x24\x07\xe2\x08\x22\x0c\x22\x0c\x22\x0c\x00\x00\x20\x01\x4a\x0b\x22\x0c\x22\x0c\x00\x00\x00\x00\xf5\x0a\x22\x0c\xf5\x0a\x00\x00\x6f\x01\xbf\x06\x04\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\xc0\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbb\x06\xb5\x06\xb5\x06\xb9\x06\xab\x06\xab\x06\xab\x06\xac\x06\xac\x06\xc6\xff\xac\x06\xff\xff\x9d\x06\xa8\x06\xa3\x06\xa0\x06\x03\x0d\x93\x06\xe5\x00\x93\x06\xf1\x12\x9c\x06\x00\x00\x00\x00\x49\x08\xf5\x0a\x00\x00\xa2\x06\x00\x00\x66\x0a\xb8\x05\x95\x06\xbd\x05\xf9\x01\x00\x00\xc4\x08\x6c\x08\x51\x08\xd0\x06\xea\x0c\x9b\x06\xea\x0c\x91\x06\xd8\x04\xe2\x06\xe0\x06\x3d\x06\xfd\x09\xf5\x0a\x96\x06\xfd\x09\x00\x00\x22\x0c\x22\x0c\xc6\x00\xf5\x0a\xf5\x0a\x00\x00\x00\x00\xb0\x06\x22\x0c\xea\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf5\x0a\x00\x00\x00\x00\x00\x00\x8a\x06\x00\x00\x22\x0c\xf9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\xf5\x0a\xf5\x0a\x92\x06\xea\x0c\x85\x06\x00\x00\x8d\x06\x00\x00\x00\x00\x7b\x06\x22\x0c\x84\x06\xa7\x06\x61\x01\x7f\x06\x00\x00\x04\x01\xf5\x00\x22\x0c\x7e\x06\x77\x06\x7d\x06\x00\x00\x7c\x06\x00\x00\x22\x0c\x22\x0c\x22\x0c\x00\x00\x22\x0c\x22\x0c\xd7\x0a\x94\x09\x7a\x06\x94\x09\x03\x08\xe8\x07\x89\x0a\x00\x00\x00\x00\x75\x06\x00\x00\x5c\x00\x5e\x06\x61\x06\x61\x06\x61\x06\x61\x06\x61\x06\x61\x06\x61\x06\x61\x06\x61\x06\x5f\x06\x5d\x06\x53\x06\x52\x06\x46\x06\x4e\x06\x3a\x06\x44\x06\x42\x06\x3b\x06\x36\x06\x35\x06\x33\x06\x2f\x06\x30\x06\x2e\x06\x40\x06\x3c\x06\x6e\x0a\xee\x02\xc3\x08\x00\x00\x00\x00\x27\x06\x00\x00\x23\x04\x9f\x0c\x27\x06\x00\x00\xaf\x03\xaf\x03\x00\x00\x00\x00\x00\x00\xd2\x00\x00\x00\xd2\x00\xd2\x00\x00\x00\x75\x01\xaf\x03\xaf\x03\x00\x00\x00\x00\x00\x00\x3d\x06\x00\x00\x00\x00\x00\x00\x00\x00\xcc\x03\x5b\x06\x5a\x06\x00\x00\x00\x00\x00\x00\x22\x0c\x22\x0c\x26\x06\xb2\xff\x2b\x06\x24\x06\xb2\xff\x25\x06\x39\x00\x00\x00\xd8\x04\x00\x00\x00\x00\x6e\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x0a\x00\x00\x00\x00\x86\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1a\x06\x1a\x06\x00\x00\x00\x00\x00\x00\x00\x00\xaf\x03\x6c\x00\xaf\x03\xe7\xff\x00\x00\x8b\x01\x29\x06\x00\x00\x69\x00\x18\x06\x8b\x01\x79\x01\x96\x00\x52\x00\x52\x00\xd2\x00\x00\x00\x00\x00\x00\x00\x43\x06\xdd\xff\xaf\x03\x86\x0c\x24\x00\x06\x07\x00\x00\x1e\x06\x1d\x06\x00\x00\x69\x00\xd9\xff\x22\x0c\xbb\x03\x00\x00\x00\x00\x00\x00\xe7\x05\x68\x00\x68\x00\x00\x00\x00\x00\x6e\x0a\x6e\x0a\x00\x00\x00\x00\x0a\x06\x00\x00\x00\x00\x08\x06\x03\x06\x00\x00\x00\x00\x05\x06\xfa\x05\x00\x00\x00\x00\x00\x00\xfc\x05\xf6\x05\x00\x00\xef\x05\xea\x05\xe2\x05\xdf\x05\xcf\x05\xcf\x05\xcf\x05\xce\x05\xcd\x05\xcd\x05\xc9\x05\xc7\x05\xc5\x05\x00\x00\xc4\x05\xc4\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\x00\x05\x01\xf9\x00\x78\x00\xf9\x00\x00\x00\xd2\x05\x20\x0a\x00\x00\x20\x0a\x05\x0a\x00\x00\x00\x00\x00\x00\xd8\x05\xc6\x05\x00\x00\xb3\x05\xd8\x04\x00\x00\x24\x00\x05\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x00\x00\x00\x00\xcc\x05\x00\x00\xc8\x05\xab\x05\x00\x00\xb7\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbb\x05\xb4\x05\xad\x05\xb0\x05\xb0\x05\xaa\x05\xa9\x05\xa5\x05\x00\x00\xa4\x05\xa3\x05\xa0\x05\x00\x00\x9d\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9e\x05\xa7\x05\x64\x00\x9c\x05\x9a\x05\xe1\xff\x00\x00\x8d\x05\x7a\x01\x86\x05\x05\x0a\x00\x00\x76\x05\x05\x0a\x05\x0a\xb2\xff\x00\x00\x00\x00\x7e\x05\x74\x05\xd8\x04\x74\x05\x00\x00\x52\x00\x82\x05\x73\x05\x73\x05\xb2\xff\x00\x00\x73\x05\x73\x05\x00\x00\x73\x05\x73\x05\x7d\x05\x00\x00\x00\x00\x75\x01\x05\x0a\x00\x00\x6e\x05\x05\x0a\x00\x00\x6e\x05\x05\x0a\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x9f\x05\x00\x00\x9b\x05\x00\x00\x00\x00\x00\x00\x05\x0a\x6b\x05\xb2\xff\x5e\x05\xb2\xff\x8b\x01\x8b\x01\x00\x00\x00\x00\x3b\x0c\x24\x00\x00\x00\xd8\x04\x24\x00\x00\x00\x00\x00\x00\x00\x99\x05\x00\x00\x05\x05\x55\x05\x00\x00\x70\x05\x6f\x05\x68\x00\x00\x00\x6a\x05\x68\x05\x68\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x05\x53\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\xf4\xff\x2c\x00\x00\x00\x00\x00\x5d\x05\x52\x05\x00\x00\x49\x05\x49\x05\x4d\x05\x58\x05\x75\x05\x00\x00\x00\x00\x4c\x05\x00\x00\x00\x00\x4a\x05\x00\x00\x48\x05\x48\x05\x44\x05\x43\x05\x43\x05\x00\x00\x00\x00\x69\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x37\x05\x00\x00\x00\x00\x42\x05\x00\x00\x40\x05\x00\x00\x24\x00\x00\x00\x00\x00\xb8\x06\x00\x00\x00\x00\x8b\x01\x8b\x01\x8b\x01\x8b\x01\x00\x00\x3e\x05\x3e\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb2\xff\x00\x00\x00\x00\xd5\x05\x00\x00\x00\x00\x00\x00\x6d\x05\x41\x05\x3c\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x05\x2c\x05\x7c\x05\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x25\x05\x00\x00\x1d\x05\x00\x00\x00\x00\x00\x00"#
+
+happyGotoOffsets :: HappyAddr
+happyGotoOffsets = HappyA# "\x38\x05\xef\x12\x42\x03\x69\x05\x40\x03\xcb\x02\x66\x05\x64\x05\x00\x00\x00\x00\x16\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x0b\x0e\x05\x00\x00\xb6\x02\xc4\x04\x00\x00\x00\x00\x00\x00\x57\x05\x00\x00\xcd\x00\x00\x00\x7f\x03\x00\x00\x00\x00\x11\x05\xe0\x03\x00\x00\x00\x00\xb2\x06\xd2\x12\xb5\x12\xa6\x0f\x98\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x86\x00\x0c\x05\x00\x00\x00\x00\x7b\x12\x00\x00\x00\x00\xf9\x04\x00\x00\x00\x00\xe0\x03\x8f\x06\x29\x0e\x6f\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x05\x4b\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb6\x04\x30\x02\x00\x00\x00\x00\xcf\x0d\x00\x0e\x4c\x0e\x53\x04\x89\x0f\x76\x0f\x00\x00\x00\x00\x5c\x06\x63\x0f\x50\x0f\x00\x00\x00\x00\x5e\x12\x44\x09\x41\x12\x00\x00\xf9\xff\xf5\x03\x4f\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\x4e\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa8\x04\x47\x05\x46\x05\xaa\x04\x3d\x05\x32\x05\x06\x05\x96\x04\x8f\x04\x21\x00\x84\x04\x30\x02\x0d\x05\x72\x04\x06\x04\xfa\x03\xb5\x00\x8d\x04\x81\x04\x7a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07\x24\x12\x00\x00\x00\x00\x00\x00\xbe\x06\x00\x00\x00\x00\x3e\x01\x61\x00\x00\x00\x5c\x06\x90\x05\x03\x00\x40\x04\xba\x02\x00\x00\xb3\x02\x00\x00\x1a\x01\x00\x00\x00\x00\x38\x03\xfe\x06\x07\x12\x00\x00\x3c\x03\x00\x00\x3d\x0f\x2a\x0f\x41\x04\xea\x11\xcd\x11\x00\x00\x00\x00\x3f\x04\x90\x07\xf5\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb0\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd8\x02\x73\x04\x00\x00\x00\x00\x00\x00\x00\x00\x77\x04\x93\x11\x76\x11\x00\x00\xdf\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x22\x01\xd8\x08\x04\x04\x21\x04\x00\x00\x00\x00\x00\x00\x3a\x04\x2d\x04\xeb\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x02\x17\x0f\x04\x0f\x00\x00\xf1\x0e\xde\x0e\xa5\x01\x02\x06\x00\x00\xf9\x03\x5c\x06\x28\x05\xcb\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x04\x2b\x04\x20\x04\x09\x04\x03\x04\xfc\x03\xee\x03\xec\x03\xe5\x03\xe2\x03\x00\x00\x00\x00\x00\x00\x00\x00\xc8\x03\xdb\x03\x00\x00\x00\x00\x00\x00\xda\x03\xc4\x03\x27\x00\xb1\x03\x00\x00\x70\x04\x00\x00\x00\x00\x59\x11\xa4\x03\xbc\x06\x00\x00\x00\x00\x04\x00\x00\x00\xff\x01\x36\x01\x9c\x03\x00\x00\x79\x06\x09\x06\x00\x00\x00\x00\x00\x00\xaf\x02\x00\x00\x88\x02\xd9\x01\x00\x00\xfb\xff\xa1\x05\x39\x05\x00\x00\x00\x00\x00\x00\xae\x02\x00\x00\x00\x00\x00\x00\x00\x00\xfc\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb8\x0e\xa5\x0e\x00\x00\x95\x03\x00\x00\x00\x00\x81\x03\x00\x00\x00\x00\x00\x00\xfc\x01\x00\x00\x00\x00\x3c\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x11\x00\x00\x00\x00\xb0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc2\x03\xb9\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x4f\x02\x00\x00\x00\x00\x19\x04\x00\x00\x00\x00\x26\x04\xe5\x02\xf2\x03\x6d\x03\x65\x03\x29\x05\x9d\x03\x70\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb1\x00\xac\x00\xae\x08\xa6\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x16\x04\x00\x00\x92\x0e\x0f\x01\x00\x00\x00\x00\x00\x00\x00\x00\x8b\x03\x62\x03\x00\x00\x00\x00\x02\x11\xe5\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xde\x02\xbf\x02\x00\x00\x00\x00\x3e\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x03\x00\x00\x09\x03\x00\x03\xf3\x02\xcd\x02\xe9\x02\xdd\x02\x00\x00\x00\x00\xcc\x02\x00\x00\xc1\x02\xa4\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa8\x03\x00\x00\xce\x02\x00\x00\xbb\x02\x00\x00\x00\x00\x19\x01\x00\x00\x8e\x00\xc8\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa6\x01\x00\x00\x3f\x08\xab\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x22\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x95\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8e\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa3\x02\x80\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfe\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfd\x01\x00\x00\x00\x00\xf4\x01\x00\x00\xb7\x00\x00\x00\xc6\x01\x71\x10\x00\x00\x41\x00\x54\x10\x37\x10\x25\x02\x00\x00\x00\x00\x00\x00\xe0\x02\x29\x00\xd6\x02\x00\x00\x2f\x02\x00\x00\x53\x02\x43\x02\xfb\x01\x00\x00\x61\x03\x39\x03\x00\x00\x1a\x03\x12\x03\x00\x00\x00\x00\x00\x00\x41\x02\x1a\x10\x00\x00\x63\x02\xfd\x0f\x00\x00\x1c\x02\xe0\x0f\x00\x00\x00\x00\x00\x00\x9b\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc3\x0f\x00\x00\xe2\x01\x00\x00\xd0\x01\xc9\x03\x7d\x03\x00\x00\x00\x00\x43\x00\x66\x07\x00\x00\x26\x00\x32\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x01\x68\x01\x00\x00\x00\x00\x00\x00\x22\x02\x00\x00\x00\x00\x00\x00\x07\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x02\x27\x02\x15\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc3\x01\x5a\x01\x00\x00\x00\x00\x00\x00\x13\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf3\x00\xef\x00\x00\x00\xbe\x00\xae\x00\x00\x00\x00\x00\xdb\x01\x00\x00\x00\x00\x00\x00\xc9\x00\x00\x00\xc3\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x08\x00\x00\x00\x29\x04\x00\x00\x00\x00\xa6\x0f\x00\x00\x00\x00\x79\x03\xd7\x02\xbc\x02\x4d\x02\x00\x00\x14\x01\x59\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\x00\x00\x00\x00\x00\x24\x02\x00\x00\x00\x00\x00\x00\x9a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x35\x00\x9d\x01\x00\x00\x00\x00\x00\x00\x00\x00\xfa\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x37\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#
+
+happyDefActions :: HappyAddr
+happyDefActions = HappyA# "\xf7\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf9\xff\x6c\xff\x43\xff\xc9\xfe\x57\xff\x55\xff\x54\xff\x51\xff\x00\x00\x2f\xff\x2e\xff\x4e\xff\xa6\xfe\x00\x00\x00\x00\x00\x00\x3f\xff\x3d\xff\x3b\xff\x00\x00\x3c\xff\x00\x00\x3e\xff\x00\x00\x3a\xff\x39\xff\xcd\xfe\x00\x00\x40\xff\x41\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x85\xff\x6d\xff\x42\xff\x6c\xff\x6b\xff\x00\x00\x00\x00\x78\xfe\xc7\xfe\x58\xff\x00\x00\x00\x00\x00\x00\x20\xff\x1e\xff\x00\x00\x00\x00\x00\x00\x78\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\xff\x00\x00\x65\xff\x00\x00\x44\xff\x34\xff\x00\x00\x00\x00\x82\xff\x00\x00\x00\x00\x00\x00\x64\xff\x00\x00\x00\x00\x00\x00\x00\x00\x79\xfe\x35\xff\x32\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\xff\x00\x00\x78\xfe\x00\x00\x00\x00\x21\xff\x5b\xff\x00\x00\x00\x00\x00\x00\xc3\xfe\x00\x00\x00\x00\x1a\xfe\xc1\xfe\xc0\xfe\xbf\xfe\xbe\xfe\xbd\xfe\xbc\xfe\xc2\xfe\xbb\xfe\xba\xfe\xb9\xfe\xb8\xfe\xb7\xfe\xb6\xfe\xb5\xfe\xae\xfe\xb0\xfe\xaf\xfe\xb4\xfe\xb3\xfe\xb2\xfe\x8d\xff\xb1\xfe\x6a\xfe\x50\xfe\x69\xfe\x68\xfe\x67\xfe\x66\xfe\x64\xfe\x63\xfe\x65\xfe\x62\xfe\x61\xfe\x60\xfe\x5f\xfe\x5e\xfe\x5d\xfe\x5c\xfe\x53\xfe\x56\xfe\x57\xfe\x58\xfe\x55\xfe\x54\xfe\x5b\xfe\x5a\xfe\x59\xfe\x52\xfe\x51\xfe\x18\xfe\x6b\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x79\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\xff\xee\xfe\x04\xff\x00\x00\x48\xff\x00\x00\x0f\xff\x0c\xff\x05\xff\x00\x00\x00\x00\x00\x00\x69\xff\x78\xfe\x00\x00\x00\x00\xc9\xfe\x00\x00\x4c\xff\x47\xff\x00\x00\x2d\xff\x00\x00\x00\x00\x78\xfe\xf3\xfe\x00\x00\x00\x00\xf4\xfe\xef\xfe\x00\x00\x00\x00\xc7\xfe\x00\x00\x00\x00\x53\xff\x46\xff\xcb\xfe\x00\x00\x00\x00\xf8\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\xd3\xff\xd2\xff\xd1\xff\xd0\xff\xcf\xff\xce\xff\xcd\xff\xcc\xff\xcb\xff\xca\xff\xc9\xff\xc8\xff\xc7\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\xa1\xff\xa0\xff\x9f\xff\x9e\xff\x9d\xff\x9c\xff\x9b\xff\x9a\xff\x99\xff\x98\xff\x97\xff\x96\xff\x95\xff\x94\xff\x93\xff\x92\xff\x91\xff\x90\xff\x8f\xff\x33\xff\xc8\xfe\xcf\xfe\x00\x00\xa8\xfe\xa7\xfe\xa9\xfe\x66\xff\x65\xff\x4e\xff\x00\x00\xf6\xfe\xf7\xfe\x50\xff\xf5\xfe\x00\x00\x00\x00\x00\x00\x6c\xff\x74\xfe\x00\x00\x2c\xff\x2b\xff\x28\xff\x29\xff\x26\xff\x00\x00\xcd\xfe\xcb\xfe\xfe\xfe\x00\x00\xf8\xfe\x00\x00\x00\x00\x00\x00\x02\xff\x00\x00\x01\xff\x64\xff\x03\xff\xed\xfe\x00\x00\x00\x00\x00\x00\xec\xfe\x00\x00\x00\x00\x00\x00\x0b\xff\x07\xff\x0c\xff\x78\xfe\x00\x00\x00\x00\x10\xff\x52\xff\x06\xff\x36\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\xff\x00\x00\x60\xff\x00\x00\x00\x00\x83\xff\x00\x00\x00\x00\x00\x00\x00\x00\xf0\xfe\x95\xfe\x91\xfe\x00\x00\x92\xfe\x8b\xfe\x74\xfe\x00\x00\x97\xfe\xf0\xfe\xf0\xfe\x6c\xfe\x93\xfe\x94\xfe\x00\x00\x86\xff\x00\x00\x00\x00\x98\xfe\x00\x00\xf0\xfe\xf0\xfe\x96\xfe\x8e\xff\x8c\xff\x78\xfe\x89\xff\x88\xff\x1c\xfe\xc6\xfe\x00\x00\x00\x00\x00\x00\x59\xff\x56\xff\x5a\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\xff\x00\x00\x17\xff\x37\xff\x00\x00\x81\xff\x16\xff\x38\xff\x15\xff\x45\xff\x00\x00\x12\xff\x11\xff\x74\xfe\x13\xff\x1d\xff\x1b\xff\x1c\xff\x1a\xff\x18\xff\x19\xff\x00\x00\x00\x00\x1d\xfe\x8a\xff\x8b\xff\x1b\xfe\xf0\xfe\x00\x00\xf0\xfe\x00\x00\x7e\xff\x7a\xff\x00\x00\x2c\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\xff\x9b\xfe\x9a\xfe\x99\xfe\x00\x00\x00\x00\xf0\xfe\x74\xfe\xe3\xfe\x00\x00\x8a\xfe\x00\x00\x00\x00\x2f\xfe\x00\x00\x00\x00\x26\xff\x00\x00\x87\xfe\x85\xfe\x80\xfe\x00\x00\x00\x00\x00\x00\x7a\xfe\x90\xfe\x00\x00\x00\x00\x84\xff\x3c\xfe\x00\x00\x5d\xff\x5c\xff\x00\x00\x60\xff\x34\xfe\x5e\xff\x00\x00\x63\xff\x3d\xfe\x36\xfe\x3e\xfe\x00\x00\x00\x00\x37\xfe\x00\x00\x00\x00\x63\xff\x00\x00\x63\xff\x63\xff\x63\xff\x00\x00\x63\xff\x63\xff\x00\x00\x00\x00\x63\xff\x3a\xfe\x00\x00\x00\x00\x09\xff\x08\xff\x0a\xff\x0e\xff\x0d\xff\xfe\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfd\xfe\x00\x00\x00\x00\x4a\xff\x00\x00\x00\x00\xce\xfe\xcc\xfe\x4b\xff\x00\x00\x00\x00\x25\xff\x24\xff\x00\x00\x31\xff\xe3\xfe\x00\x00\x4d\xff\x4f\xff\x1e\xfe\xea\xfe\xeb\xfe\xca\xfe\x22\xff\x27\xff\xe5\xfe\xe3\xfe\xe1\xfe\xe0\xfe\xdf\xfe\x00\x00\xe2\xfe\x00\x00\x00\x00\x2a\xff\x00\x00\x30\xff\x00\xff\xfc\xfe\xfb\xfe\xf9\xfe\xfa\xfe\x00\x00\xe8\xfe\xe9\xfe\xe6\xfe\xe7\xfe\x49\xff\x00\x00\x00\x00\x00\x00\x63\xff\x63\xff\x00\x00\x00\x00\x00\x00\x61\xff\x00\x00\x00\x00\x00\x00\x42\xfe\x00\x00\x39\xfe\x38\xfe\x40\xfe\x3b\xfe\x62\xff\x4f\xfe\x00\x00\x5f\xff\x4c\xfe\x41\xfe\x8e\xfe\x8f\xfe\x00\x00\x7d\xfe\x00\x00\x00\x00\x7d\xfe\x00\x00\x86\xfe\x00\x00\x6c\xff\x00\x00\x00\x00\x31\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x76\xfe\x73\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x68\xff\x7c\xff\x00\x00\x00\x00\x00\x00\x00\x00\x7f\xff\x00\x00\x00\x00\x80\xff\x00\x00\x00\x00\x00\x00\xaa\xfe\x2e\xfe\x00\x00\x00\x00\x7b\xff\x00\x00\x00\x00\xf2\xfe\x00\x00\x00\x00\xf1\xfe\xc5\xfe\xc4\xfe\xe3\xfe\x77\xfe\x00\x00\xa2\xfe\xa1\xfe\xa3\xfe\xac\xfe\x2d\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x78\xff\x76\xff\x7d\xff\x6d\xfe\x74\xfe\xe3\xfe\x6e\xfe\x00\x00\xe3\xfe\x8c\xfe\xad\xfe\x30\xfe\x9e\xfe\x9f\xfe\x28\xfe\x8d\xfe\x89\xfe\x00\x00\x00\x00\x00\x00\x83\xfe\x00\x00\x00\x00\x00\x00\x84\xfe\x33\xfe\x35\xfe\x32\xfe\x3f\xfe\x44\xfe\x48\xfe\x45\xfe\x4a\xfe\x46\xfe\x49\xfe\x00\x00\x00\x00\x4b\xfe\x4d\xfe\x4e\xfe\xff\xfe\x23\xff\xd3\xfe\x87\xff\xd3\xfe\xe4\xfe\xd5\xfe\xd1\xfe\x00\x00\xd2\xfe\x00\x00\x00\x00\x00\x00\xd9\xfe\x00\x00\x87\xff\xdb\xfe\x00\x00\x47\xfe\x43\xfe\x00\x00\x7d\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x88\xfe\x25\xfe\x00\x00\x26\xfe\x23\xfe\x24\xfe\x00\x00\x1f\xfe\x00\x00\x22\xfe\x20\xfe\x00\x00\x21\xfe\x00\x00\x75\xfe\xe3\xfe\x70\xfe\x71\xfe\x00\x00\x77\xff\x79\xff\x72\xff\x74\xff\x6e\xff\x70\xff\xab\xfe\x00\x00\x00\x00\xa4\xfe\xa5\xfe\x71\xff\x6f\xff\x75\xff\x73\xff\x00\x00\x6f\xfe\xa0\xfe\x78\xfe\x9d\xfe\x29\xfe\x2b\xfe\x78\xfe\x00\x00\x00\x00\x81\xfe\x7c\xfe\x7b\xfe\x82\xfe\xde\xfe\x00\x00\x00\x00\x87\xff\xdc\xfe\xd7\xfe\xd4\xfe\xdd\xfe\x00\x00\xd0\xfe\xda\xfe\xd8\xfe\xd6\xfe\x7e\xfe\x7f\xfe\x27\xfe\x00\x00\x00\x00\x72\xfe\x00\x00\x2a\xfe\x9c\xfe"#
+
+happyCheck :: HappyAddr
+happyCheck = HappyA# "\xff\xff\x05\x00\x09\x00\x09\x00\x09\x00\x09\x00\x2d\x00\x0c\x00\x14\x00\x0e\x00\x2d\x00\x0f\x00\x09\x00\x09\x00\x0a\x00\x5d\x00\x00\x00\x5f\x00\x0f\x00\x14\x00\x2d\x00\x09\x00\x13\x00\x14\x00\x52\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x50\x00\x09\x00\x65\x00\x66\x00\x09\x00\x51\x00\x09\x00\x0f\x00\x10\x00\x09\x00\x52\x00\x31\x00\x0f\x00\x10\x00\x50\x00\x0f\x00\x10\x00\x37\x00\x38\x00\x05\x00\x3a\x00\x09\x00\x18\x00\x14\x00\x1d\x00\x1b\x00\x49\x00\x0b\x00\x4b\x00\x65\x00\x23\x00\x4c\x00\x09\x00\x09\x00\x0a\x00\x09\x00\x59\x00\x52\x00\x54\x00\x2c\x00\x55\x00\x0f\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x53\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x65\x00\x66\x00\x23\x00\x24\x00\x25\x00\x00\x00\x09\x00\x6f\x00\x70\x00\x0b\x00\x75\x00\x73\x00\x74\x00\x61\x00\x11\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x09\x00\x8d\x00\x65\x00\x59\x00\x98\x00\x53\x00\x0f\x00\x75\x00\x09\x00\x72\x00\x2d\x00\x96\x00\x72\x00\xa0\x00\x0f\x00\x09\x00\x4d\x00\x4e\x00\x99\x00\x46\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x9e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x71\x00\x09\x00\x52\x00\x65\x00\x4f\x00\x09\x00\x09\x00\x0f\x00\x50\x00\x55\x00\x09\x00\x0f\x00\x2b\x00\x2c\x00\x11\x00\x67\x00\x0f\x00\x37\x00\x38\x00\x39\x00\x50\x00\x65\x00\x61\x00\x62\x00\x09\x00\x65\x00\x05\x00\x23\x00\x24\x00\x25\x00\x4c\x00\x23\x00\x24\x00\x25\x00\x09\x00\x5f\x00\x52\x00\x24\x00\x14\x00\x55\x00\x0f\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x30\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x3d\x00\x3e\x00\x3f\x00\x24\x00\x5c\x00\x2d\x00\x5e\x00\x6f\x00\x70\x00\x9e\x00\x9f\x00\x73\x00\x74\x00\x65\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x09\x00\x07\x00\x8d\x00\x6e\x00\x71\x00\x09\x00\x0f\x00\x69\x00\x71\x00\x09\x00\x09\x00\x52\x00\x6e\x00\xa0\x00\xa1\x00\x0f\x00\x0f\x00\x10\x00\x09\x00\x6e\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x51\x00\x65\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x09\x00\x26\x00\x27\x00\x28\x00\x29\x00\x4f\x00\x0f\x00\x2c\x00\x09\x00\x64\x00\x50\x00\x65\x00\x67\x00\x2a\x00\x2b\x00\x2c\x00\x11\x00\x37\x00\x38\x00\x39\x00\x4f\x00\x5f\x00\x50\x00\x5d\x00\x62\x00\x5f\x00\x23\x00\x24\x00\x25\x00\x4c\x00\x6e\x00\x49\x00\x4a\x00\x4b\x00\x6e\x00\x52\x00\x09\x00\x5f\x00\x55\x00\x62\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x58\x00\x09\x00\x6b\x00\x6c\x00\x5c\x00\x6e\x00\x5e\x00\x6f\x00\x70\x00\x11\x00\x12\x00\x73\x00\x74\x00\x10\x00\x11\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x09\x00\x07\x00\x54\x00\x8d\x00\x71\x00\x57\x00\x0f\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x09\x00\x09\x00\xa0\x00\x50\x00\x9e\x00\x9f\x00\x0f\x00\x0f\x00\x10\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x5f\x00\x52\x00\x4d\x00\x4e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x51\x00\x09\x00\x27\x00\x28\x00\x29\x00\x56\x00\x5c\x00\x2c\x00\x5e\x00\x65\x00\x5c\x00\x6e\x00\x5e\x00\x4d\x00\x4e\x00\x65\x00\x0b\x00\x37\x00\x38\x00\x65\x00\x3a\x00\x05\x00\x06\x00\x09\x00\x46\x00\x47\x00\x48\x00\x4c\x00\x5c\x00\x09\x00\x5e\x00\x11\x00\x12\x00\x52\x00\x0b\x00\x0f\x00\x55\x00\x65\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x23\x00\x24\x00\x25\x00\x09\x00\x0b\x00\x51\x00\x09\x00\x6f\x00\x70\x00\x0f\x00\x10\x00\x73\x00\x74\x00\x59\x00\x11\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x09\x00\x07\x00\x30\x00\x0b\x00\x09\x00\x8d\x00\x0f\x00\x35\x00\x9b\x00\x9c\x00\x9d\x00\x09\x00\x09\x00\xa0\x00\x0c\x00\x0d\x00\x3e\x00\x3f\x00\x0f\x00\x10\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x09\x00\x52\x00\x09\x00\x0c\x00\x09\x00\x0e\x00\x71\x00\x58\x00\x4d\x00\x4e\x00\x0f\x00\x5c\x00\x09\x00\x5e\x00\x09\x00\x0c\x00\x15\x00\x0e\x00\x09\x00\x58\x00\x65\x00\x99\x00\x11\x00\x5c\x00\x6e\x00\x5e\x00\x1f\x00\x20\x00\x21\x00\x68\x00\x23\x00\x24\x00\x25\x00\x6e\x00\x51\x00\x46\x00\x47\x00\x48\x00\x4c\x00\x49\x00\x4a\x00\x4b\x00\x6d\x00\x6e\x00\x52\x00\x32\x00\x5d\x00\x55\x00\x5f\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x30\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x3d\x00\x3e\x00\x3f\x00\x6d\x00\x6e\x00\x09\x00\x94\x00\x6f\x00\x70\x00\x54\x00\x16\x00\x73\x00\x74\x00\x11\x00\x12\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x09\x00\x09\x00\x16\x00\x9e\x00\x9f\x00\x09\x00\x0f\x00\x1a\x00\x09\x00\x11\x00\x12\x00\x0f\x00\x09\x00\xa0\x00\x09\x00\x0b\x00\x11\x00\x0c\x00\x0f\x00\x0e\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x09\x00\x22\x00\x23\x00\x24\x00\x25\x00\x0b\x00\x0f\x00\x1a\x00\x22\x00\x23\x00\x24\x00\x25\x00\x09\x00\x09\x00\x16\x00\x0c\x00\x17\x00\x0e\x00\x30\x00\x0f\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x3b\x00\x3c\x00\x16\x00\x3e\x00\x3f\x00\x18\x00\x1f\x00\x20\x00\x21\x00\x4c\x00\x23\x00\x24\x00\x25\x00\x09\x00\x16\x00\x52\x00\x9e\x00\x9f\x00\x55\x00\x0f\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x16\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x16\x00\x4c\x00\x23\x00\x24\x00\x25\x00\x09\x00\x0a\x00\x6f\x00\x70\x00\x16\x00\x55\x00\x73\x00\x74\x00\x09\x00\x0a\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x09\x00\x09\x00\x0a\x00\x16\x00\x09\x00\x58\x00\x0f\x00\x2d\x00\x09\x00\x5c\x00\x09\x00\x5e\x00\x11\x00\xa0\x00\x0f\x00\x10\x00\x0f\x00\x93\x00\x65\x00\x16\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x4d\x00\x4e\x00\x09\x00\x0a\x00\x30\x00\x52\x00\x09\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x58\x00\x9e\x00\x9f\x00\x09\x00\x5c\x00\x3c\x00\x5e\x00\x3e\x00\x3f\x00\x97\x00\x58\x00\x9e\x00\x9f\x00\x65\x00\x5c\x00\x09\x00\x5e\x00\x4c\x00\x0c\x00\x09\x00\x0e\x00\x09\x00\x0c\x00\x52\x00\x0e\x00\x0b\x00\x55\x00\x0f\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x51\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x0b\x00\x22\x00\x23\x00\x24\x00\x25\x00\x09\x00\x09\x00\x6f\x00\x70\x00\x0c\x00\x0d\x00\x73\x00\x74\x00\x05\x00\x06\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x1a\x00\x00\x00\x01\x00\x02\x00\x6d\x00\x6e\x00\x05\x00\x09\x00\x07\x00\x08\x00\x0c\x00\x0a\x00\x0e\x00\xa0\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x19\x00\x12\x00\x13\x00\x14\x00\x15\x00\x1a\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x09\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x0f\x00\x16\x00\x25\x00\x26\x00\x27\x00\x19\x00\x29\x00\x2a\x00\x2b\x00\x6d\x00\x6e\x00\x18\x00\x09\x00\x4d\x00\x4e\x00\x0c\x00\x1a\x00\x0e\x00\x52\x00\x09\x00\x23\x00\x24\x00\x25\x00\x1a\x00\x58\x00\x1a\x00\x09\x00\x11\x00\x5c\x00\x51\x00\x5e\x00\x6a\x00\x6b\x00\x6c\x00\x11\x00\x6e\x00\x58\x00\x65\x00\x49\x00\x1a\x00\x5c\x00\x4c\x00\x5e\x00\x4e\x00\x05\x00\x06\x00\x1a\x00\x52\x00\x53\x00\x65\x00\x55\x00\x09\x00\x1a\x00\x58\x00\x0c\x00\x5a\x00\x0e\x00\x5c\x00\x30\x00\x5e\x00\x05\x00\x06\x00\x61\x00\x35\x00\x63\x00\x30\x00\x65\x00\x66\x00\x06\x00\x68\x00\x01\x00\x02\x00\x3e\x00\x3f\x00\x05\x00\x1a\x00\x07\x00\x08\x00\x3d\x00\x3e\x00\x3f\x00\x06\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x1a\x00\x12\x00\x13\x00\x14\x00\x15\x00\x1a\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x4d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x9e\x00\x9f\x00\x25\x00\x26\x00\x27\x00\x09\x00\x29\x00\x2a\x00\x2b\x00\x9e\x00\x9f\x00\x0f\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x15\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x4e\x00\x4d\x00\x4e\x00\x1f\x00\x20\x00\x21\x00\x52\x00\x23\x00\x24\x00\x25\x00\x09\x00\x0a\x00\x58\x00\x05\x00\x49\x00\x0b\x00\x5c\x00\x4c\x00\x5e\x00\x4e\x00\x09\x00\x0a\x00\x32\x00\x52\x00\x53\x00\x65\x00\x55\x00\x09\x00\x0a\x00\x58\x00\x4e\x00\x5a\x00\x4f\x00\x5c\x00\x50\x00\x5e\x00\x9e\x00\x9f\x00\x61\x00\x09\x00\x63\x00\x9e\x00\x65\x00\x66\x00\x95\x00\x68\x00\x69\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\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x08\x00\x0a\x00\x9e\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x09\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x9e\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x2f\x00\x30\x00\x25\x00\x26\x00\x27\x00\x9e\x00\x29\x00\x2a\x00\x2b\x00\x09\x00\x09\x00\x0b\x00\x9e\x00\x0c\x00\x0d\x00\x0f\x00\x00\x00\x01\x00\x08\x00\x13\x00\x14\x00\x65\x00\x66\x00\x50\x00\x51\x00\x97\x00\x09\x00\x65\x00\x66\x00\x08\x00\x9e\x00\x1f\x00\x20\x00\x21\x00\x11\x00\x23\x00\x24\x00\x25\x00\x49\x00\x09\x00\x09\x00\x4c\x00\x04\x00\x4e\x00\x9e\x00\x06\x00\x0b\x00\x52\x00\x53\x00\x31\x00\x55\x00\x0b\x00\x50\x00\x58\x00\x4d\x00\x5a\x00\x09\x00\x5c\x00\x9e\x00\x5e\x00\x56\x00\x4f\x00\x02\x00\x01\x00\x63\x00\x30\x00\x65\x00\x66\x00\x03\x00\x68\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x3d\x00\x3e\x00\x3f\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x61\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x65\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x14\x00\x65\x00\x25\x00\x26\x00\x27\x00\x59\x00\x29\x00\x2a\x00\x2b\x00\x09\x00\x59\x00\x0b\x00\x65\x00\x28\x00\x60\x00\x0f\x00\x60\x00\x5d\x00\x60\x00\x13\x00\x14\x00\x59\x00\x59\x00\x4f\x00\x65\x00\x5f\x00\x09\x00\x59\x00\x4f\x00\x65\x00\x65\x00\x1f\x00\x20\x00\x21\x00\x11\x00\x23\x00\x24\x00\x25\x00\x49\x00\x64\x00\x64\x00\x4c\x00\x65\x00\x4e\x00\x54\x00\x5f\x00\x54\x00\x52\x00\x53\x00\x31\x00\x55\x00\x54\x00\x54\x00\x58\x00\x2d\x00\x5a\x00\x2d\x00\x5c\x00\x5f\x00\x5e\x00\x2d\x00\x50\x00\x60\x00\x51\x00\x63\x00\x30\x00\x65\x00\x66\x00\x60\x00\x68\x00\x01\x00\x02\x00\x65\x00\x04\x00\x05\x00\x65\x00\x07\x00\x08\x00\x3d\x00\x3e\x00\x3f\x00\x5f\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x60\x00\x12\x00\x13\x00\x14\x00\x15\x00\x51\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x65\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x51\x00\x5d\x00\x25\x00\x26\x00\x27\x00\x5f\x00\x29\x00\x2a\x00\x2b\x00\x64\x00\x4f\x00\x58\x00\x64\x00\x4d\x00\x4e\x00\x64\x00\x64\x00\x64\x00\x52\x00\x09\x00\x54\x00\x64\x00\x64\x00\x52\x00\x58\x00\x64\x00\x09\x00\x11\x00\x5c\x00\x58\x00\x5e\x00\x67\x00\x64\x00\x5c\x00\x11\x00\x5e\x00\x65\x00\x65\x00\x49\x00\x64\x00\x58\x00\x4c\x00\x65\x00\x4e\x00\x58\x00\x5f\x00\x54\x00\x52\x00\x53\x00\x51\x00\x55\x00\x67\x00\x67\x00\x58\x00\x67\x00\x5a\x00\x67\x00\x5c\x00\x30\x00\x5e\x00\x67\x00\x67\x00\x67\x00\x35\x00\x63\x00\x30\x00\x65\x00\x66\x00\x55\x00\x68\x00\x01\x00\x02\x00\x3e\x00\x3f\x00\x05\x00\x64\x00\x07\x00\x08\x00\x3d\x00\x3e\x00\x3f\x00\x67\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x64\x00\x12\x00\x13\x00\x14\x00\x15\x00\x64\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x64\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x64\x00\x67\x00\x25\x00\x26\x00\x27\x00\x09\x00\x29\x00\x2a\x00\x2b\x00\x64\x00\x67\x00\x0f\x00\x64\x00\x50\x00\x64\x00\x51\x00\x2d\x00\x15\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x60\x00\x50\x00\x60\x00\x1f\x00\x20\x00\x21\x00\x59\x00\x23\x00\x24\x00\x25\x00\x09\x00\x5f\x00\x59\x00\x5f\x00\x49\x00\x2d\x00\x2d\x00\x4c\x00\x11\x00\x4e\x00\x65\x00\x51\x00\x32\x00\x52\x00\x53\x00\x51\x00\x55\x00\x65\x00\x64\x00\x58\x00\x67\x00\x5a\x00\x09\x00\x5c\x00\x67\x00\x5e\x00\x67\x00\x67\x00\x0f\x00\x64\x00\x63\x00\x67\x00\x65\x00\x66\x00\x15\x00\x68\x00\x64\x00\x30\x00\x64\x00\x30\x00\x64\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x67\x00\x3d\x00\x3e\x00\x3f\x00\x67\x00\x67\x00\x09\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x08\x00\x32\x00\x64\x00\x11\x00\x67\x00\x09\x00\x67\x00\x09\x00\x67\x00\x54\x00\x12\x00\x6f\x00\x70\x00\x11\x00\x54\x00\x11\x00\x54\x00\x54\x00\x54\x00\x54\x00\x1c\x00\x2e\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x57\x00\x4f\x00\x25\x00\x2e\x00\x27\x00\x65\x00\x29\x00\x30\x00\x51\x00\x5f\x00\x33\x00\x34\x00\x35\x00\x36\x00\x5f\x00\x54\x00\x0b\x00\x30\x00\x0b\x00\x30\x00\x5e\x00\x3e\x00\x3f\x00\x57\x00\x35\x00\x24\x00\x60\x00\x54\x00\x5b\x00\x65\x00\x3d\x00\x3e\x00\x3f\x00\x3e\x00\x3f\x00\x6f\x00\x70\x00\x60\x00\x49\x00\x65\x00\x60\x00\x4c\x00\x4d\x00\x4e\x00\x09\x00\x60\x00\x09\x00\x52\x00\x53\x00\x60\x00\x55\x00\x08\x00\x11\x00\x58\x00\x11\x00\x5a\x00\x68\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x12\x00\x60\x00\x65\x00\x60\x00\x0a\x00\x65\x00\x66\x00\x60\x00\x68\x00\x61\x00\x1c\x00\x60\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x5f\x00\x59\x00\x25\x00\x08\x00\x27\x00\x30\x00\x29\x00\x30\x00\x59\x00\x59\x00\x50\x00\x5f\x00\x35\x00\x12\x00\x50\x00\x69\x00\x5f\x00\x3c\x00\x51\x00\x3e\x00\x3f\x00\x3e\x00\x3f\x00\x1c\x00\x54\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x69\x00\x57\x00\x25\x00\x65\x00\x27\x00\x60\x00\x29\x00\x57\x00\x49\x00\x24\x00\x69\x00\x4c\x00\x4d\x00\x4e\x00\x56\x00\x60\x00\xff\xff\x52\x00\x53\x00\xff\xff\x55\x00\xff\xff\xff\xff\x58\x00\xff\xff\x5a\x00\xff\xff\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x65\x00\x66\x00\x49\x00\x68\x00\xff\xff\xff\xff\x4d\x00\x4e\x00\xff\xff\xff\xff\xff\xff\x52\x00\x53\x00\xff\xff\x55\x00\xff\xff\xff\xff\x58\x00\xff\xff\x5a\x00\xff\xff\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x08\x00\xff\xff\xff\xff\xff\xff\xff\xff\x65\x00\x66\x00\xff\xff\x68\x00\xff\xff\x12\x00\xff\xff\xff\xff\xff\xff\xff\xff\x17\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\x09\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x0f\x00\xff\xff\x25\x00\x08\x00\x27\x00\xff\xff\x29\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x12\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\xff\xff\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\xff\xff\x49\x00\xff\xff\xff\xff\xff\xff\x4d\x00\x4e\x00\xff\xff\xff\xff\xff\xff\x52\x00\x53\x00\xff\xff\x55\x00\xff\xff\xff\xff\x58\x00\x59\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x65\x00\x66\x00\x49\x00\x68\x00\xff\xff\xff\xff\x4d\x00\x4e\x00\xff\xff\xff\xff\xff\xff\x52\x00\x53\x00\xff\xff\x55\x00\x08\x00\xff\xff\x58\x00\xff\xff\x5a\x00\xff\xff\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x12\x00\xff\xff\xff\xff\xff\xff\xff\xff\x65\x00\x66\x00\xff\xff\x68\x00\xff\xff\x1c\x00\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x08\x00\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\xff\xff\xff\xff\xff\xff\x12\x00\xff\xff\xff\xff\xff\xff\xff\xff\x17\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\xff\xff\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\xff\xff\xff\xff\xff\xff\xff\xff\x49\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4e\x00\xff\xff\xff\xff\xff\xff\x52\x00\x53\x00\xff\xff\x55\x00\xff\xff\xff\xff\x58\x00\xff\xff\x5a\x00\xff\xff\x5c\x00\x5d\x00\x5e\x00\x5f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x49\x00\x65\x00\x66\x00\xff\xff\x68\x00\x4e\x00\xff\xff\xff\xff\xff\xff\x52\x00\x53\x00\xff\xff\x55\x00\x08\x00\xff\xff\x58\x00\x59\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\xff\xff\x12\x00\xff\xff\xff\xff\xff\xff\xff\xff\x65\x00\x66\x00\xff\xff\x68\x00\xff\xff\x1c\x00\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x08\x00\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\xff\xff\xff\xff\xff\xff\x12\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\xff\xff\xff\xff\xff\xff\x1c\x00\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\xff\xff\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\x4d\x00\x4e\x00\xff\xff\xff\xff\x49\x00\x52\x00\xff\xff\x54\x00\xff\xff\x4e\x00\xff\xff\x58\x00\xff\xff\x52\x00\x53\x00\x5c\x00\x55\x00\x5e\x00\xff\xff\x58\x00\xff\xff\x5a\x00\xff\xff\x5c\x00\x65\x00\x5e\x00\x5f\x00\xff\xff\xff\xff\xff\xff\x63\x00\x49\x00\x65\x00\x66\x00\xff\xff\x68\x00\x4e\x00\xff\xff\xff\xff\xff\xff\x52\x00\x53\x00\xff\xff\x55\x00\xff\xff\xff\xff\x58\x00\xff\xff\x5a\x00\xff\xff\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x08\x00\xff\xff\xff\xff\xff\xff\xff\xff\x65\x00\x66\x00\xff\xff\x68\x00\xff\xff\x12\x00\xff\xff\xff\xff\xff\xff\xff\xff\x17\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\x09\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x0f\x00\xff\xff\x25\x00\x08\x00\x27\x00\xff\xff\x29\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x12\x00\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\xff\xff\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4d\x00\x4e\x00\x4e\x00\xff\xff\xff\xff\x52\x00\x52\x00\x53\x00\xff\xff\x55\x00\xff\xff\x58\x00\x58\x00\x59\x00\x5a\x00\x5c\x00\x5c\x00\x5e\x00\x5e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x65\x00\x65\x00\x66\x00\x49\x00\x68\x00\xff\xff\xff\xff\x4d\x00\x4e\x00\xff\xff\xff\xff\xff\xff\x52\x00\x53\x00\xff\xff\x55\x00\x08\x00\xff\xff\x58\x00\xff\xff\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x12\x00\xff\xff\xff\xff\xff\xff\xff\xff\x65\x00\x66\x00\xff\xff\x68\x00\xff\xff\x1c\x00\x09\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x0f\x00\xff\xff\x25\x00\x08\x00\x27\x00\xff\xff\x29\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\xff\xff\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\xff\xff\x49\x00\xff\xff\xff\xff\xff\xff\x4d\x00\x4e\x00\xff\xff\xff\xff\xff\xff\x52\x00\x53\x00\xff\xff\x55\x00\xff\xff\xff\xff\x58\x00\x59\x00\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x65\x00\x66\x00\x49\x00\x68\x00\xff\xff\xff\xff\x4d\x00\x4e\x00\xff\xff\xff\xff\xff\xff\x52\x00\x53\x00\xff\xff\x55\x00\x08\x00\xff\xff\x58\x00\xff\xff\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x12\x00\xff\xff\xff\xff\xff\xff\xff\xff\x65\x00\x66\x00\xff\xff\x68\x00\xff\xff\x1c\x00\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x08\x00\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\xff\xff\xff\xff\xff\xff\x12\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\xff\xff\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\x4d\x00\x4e\x00\xff\xff\xff\xff\x49\x00\x52\x00\xff\xff\xff\xff\x4d\x00\x4e\x00\xff\xff\x58\x00\xff\xff\x52\x00\x53\x00\x5c\x00\x55\x00\x5e\x00\xff\xff\x58\x00\x59\x00\x5a\x00\xff\xff\x5c\x00\x65\x00\x5e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x49\x00\x65\x00\x66\x00\xff\xff\x68\x00\x4e\x00\xff\xff\xff\xff\xff\xff\x52\x00\x53\x00\x54\x00\x55\x00\x08\x00\x57\x00\x58\x00\xff\xff\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\xff\xff\x12\x00\xff\xff\xff\xff\xff\xff\xff\xff\x65\x00\x66\x00\xff\xff\x68\x00\xff\xff\x1c\x00\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x08\x00\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\xff\xff\xff\xff\xff\xff\x12\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\xff\xff\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\x4d\x00\x4e\x00\xff\xff\xff\xff\x49\x00\x52\x00\xff\xff\xff\xff\x4d\x00\x4e\x00\xff\xff\x58\x00\xff\xff\x52\x00\x53\x00\x5c\x00\x55\x00\x5e\x00\xff\xff\x58\x00\xff\xff\x5a\x00\xff\xff\x5c\x00\x65\x00\x5e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x49\x00\x65\x00\x66\x00\xff\xff\x68\x00\x4e\x00\xff\xff\xff\xff\xff\xff\x52\x00\x53\x00\xff\xff\x55\x00\x08\x00\xff\xff\x58\x00\xff\xff\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\xff\xff\x12\x00\xff\xff\xff\xff\x63\x00\xff\xff\x65\x00\x66\x00\xff\xff\x68\x00\xff\xff\x1c\x00\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x08\x00\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\xff\xff\xff\xff\xff\xff\x12\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\xff\xff\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\x4d\x00\x4e\x00\xff\xff\xff\xff\x49\x00\x52\x00\xff\xff\xff\xff\x4d\x00\x4e\x00\xff\xff\x58\x00\xff\xff\x52\x00\x53\x00\x5c\x00\x55\x00\x5e\x00\xff\xff\x58\x00\xff\xff\x5a\x00\xff\xff\x5c\x00\x65\x00\x5e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x49\x00\x65\x00\x66\x00\xff\xff\x68\x00\x4e\x00\xff\xff\xff\xff\xff\xff\x52\x00\x53\x00\xff\xff\x55\x00\x08\x00\xff\xff\x58\x00\xff\xff\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\x5f\x00\x12\x00\xff\xff\xff\xff\xff\xff\xff\xff\x65\x00\x66\x00\xff\xff\x68\x00\xff\xff\x1c\x00\x09\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x0f\x00\xff\xff\x25\x00\x08\x00\x27\x00\xff\xff\x29\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\xff\xff\xff\xff\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\xff\xff\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4d\x00\x4e\x00\x4e\x00\xff\xff\xff\xff\x52\x00\x52\x00\x53\x00\xff\xff\x55\x00\xff\xff\x58\x00\x58\x00\xff\xff\x5a\x00\x5c\x00\x5c\x00\x5e\x00\x5e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x63\x00\x65\x00\x65\x00\x66\x00\x49\x00\x68\x00\xff\xff\xff\xff\x4d\x00\x4e\x00\xff\xff\xff\xff\xff\xff\x52\x00\x53\x00\xff\xff\x55\x00\xff\xff\xff\xff\x58\x00\xff\xff\x5a\x00\xff\xff\x5c\x00\x08\x00\x5e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x65\x00\x66\x00\x12\x00\x68\x00\xff\xff\xff\xff\xff\xff\x17\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\x09\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x0f\x00\xff\xff\x25\x00\x08\x00\x27\x00\xff\xff\x29\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\xff\xff\xff\xff\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x1c\x00\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\xff\xff\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\xff\xff\x49\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4e\x00\xff\xff\xff\xff\xff\xff\x52\x00\x53\x00\xff\xff\x55\x00\xff\xff\xff\xff\x58\x00\xff\xff\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x65\x00\x66\x00\x49\x00\x68\x00\xff\xff\xff\xff\x4d\x00\x4e\x00\xff\xff\xff\xff\xff\xff\x52\x00\x53\x00\xff\xff\x55\x00\x08\x00\xff\xff\x58\x00\xff\xff\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\xff\xff\x12\x00\xff\xff\xff\xff\xff\xff\xff\xff\x65\x00\x66\x00\xff\xff\x68\x00\xff\xff\x1c\x00\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\xff\xff\xff\xff\x25\x00\x08\x00\x27\x00\xff\xff\x29\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x12\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\xff\xff\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\xff\xff\x49\x00\xff\xff\xff\xff\x4c\x00\xff\xff\x4e\x00\xff\xff\xff\xff\xff\xff\x52\x00\x53\x00\xff\xff\x55\x00\xff\xff\xff\xff\x58\x00\xff\xff\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x65\x00\x66\x00\x49\x00\x68\x00\xff\xff\xff\xff\x4d\x00\x4e\x00\xff\xff\xff\xff\xff\xff\x52\x00\x53\x00\xff\xff\x55\x00\x08\x00\xff\xff\x58\x00\xff\xff\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\xff\xff\x12\x00\xff\xff\xff\xff\xff\xff\xff\xff\x65\x00\x66\x00\xff\xff\x68\x00\xff\xff\x1c\x00\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\xff\xff\xff\xff\x25\x00\xff\xff\x27\x00\xff\xff\x29\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\xff\xff\x1e\x00\x1f\x00\xff\xff\x21\x00\x22\x00\xff\xff\xff\xff\x25\x00\xff\xff\xff\xff\xff\xff\x29\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x49\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4e\x00\xff\xff\xff\xff\xff\xff\x52\x00\x53\x00\xff\xff\x55\x00\xff\xff\xff\xff\x58\x00\xff\xff\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\xff\xff\xff\xff\xff\xff\x49\x00\xff\xff\xff\xff\x65\x00\x66\x00\x4e\x00\x68\x00\xff\xff\xff\xff\x52\x00\x53\x00\xff\xff\xff\xff\xff\xff\xff\xff\x58\x00\xff\xff\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x65\x00\x66\x00\x1c\x00\x68\x00\x1e\x00\x1f\x00\xff\xff\x21\x00\x22\x00\xff\xff\xff\xff\x25\x00\xff\xff\xff\xff\xff\xff\x29\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\xff\xff\x1e\x00\x1f\x00\xff\xff\x21\x00\x22\x00\xff\xff\xff\xff\x25\x00\xff\xff\xff\xff\xff\xff\x29\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x49\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4e\x00\xff\xff\xff\xff\xff\xff\x52\x00\x53\x00\xff\xff\xff\xff\xff\xff\xff\xff\x58\x00\xff\xff\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\xff\xff\xff\xff\xff\xff\x49\x00\xff\xff\xff\xff\x65\x00\x66\x00\x4e\x00\x68\x00\xff\xff\xff\xff\x52\x00\x53\x00\xff\xff\xff\xff\xff\xff\xff\xff\x58\x00\xff\xff\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x65\x00\x66\x00\x1c\x00\x68\x00\x1e\x00\x1f\x00\xff\xff\x21\x00\x22\x00\xff\xff\xff\xff\x25\x00\xff\xff\xff\xff\xff\xff\x29\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\xff\xff\x1e\x00\x1f\x00\xff\xff\x21\x00\x22\x00\xff\xff\xff\xff\x25\x00\xff\xff\xff\xff\xff\xff\x29\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x49\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4e\x00\xff\xff\xff\xff\xff\xff\x52\x00\x53\x00\xff\xff\xff\xff\xff\xff\xff\xff\x58\x00\xff\xff\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\xff\xff\xff\xff\xff\xff\x49\x00\xff\xff\xff\xff\x65\x00\x66\x00\x4e\x00\x68\x00\xff\xff\xff\xff\x52\x00\x53\x00\xff\xff\xff\xff\xff\xff\xff\xff\x58\x00\xff\xff\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x65\x00\x66\x00\x1c\x00\x68\x00\x1e\x00\x1f\x00\xff\xff\x21\x00\x22\x00\xff\xff\xff\xff\x25\x00\xff\xff\xff\xff\xff\xff\x29\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\xff\xff\x1e\x00\x1f\x00\xff\xff\x21\x00\x22\x00\xff\xff\xff\xff\x25\x00\xff\xff\xff\xff\xff\xff\x29\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x49\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4e\x00\xff\xff\xff\xff\xff\xff\x52\x00\x53\x00\xff\xff\xff\xff\xff\xff\xff\xff\x58\x00\xff\xff\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\xff\xff\xff\xff\xff\xff\x49\x00\xff\xff\xff\xff\x65\x00\x66\x00\x4e\x00\x68\x00\xff\xff\xff\xff\x52\x00\x53\x00\xff\xff\xff\xff\xff\xff\xff\xff\x58\x00\xff\xff\x5a\x00\xff\xff\x5c\x00\xff\xff\x5e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x65\x00\x66\x00\x1c\x00\x68\x00\x1e\x00\x1f\x00\xff\xff\x21\x00\x22\x00\xff\xff\xff\xff\x25\x00\x09\x00\xff\xff\xff\xff\x29\x00\xff\xff\xff\xff\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x15\x00\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\x23\x00\x24\x00\x25\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x49\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x4e\x00\x32\x00\xff\xff\xff\xff\x52\x00\x53\x00\xff\xff\xff\xff\xff\xff\x09\x00\x58\x00\x0b\x00\x5a\x00\xff\xff\x5c\x00\x0f\x00\x5e\x00\xff\xff\xff\xff\x13\x00\x14\x00\xff\xff\xff\xff\x65\x00\x66\x00\xff\xff\x68\x00\xff\xff\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\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\xff\xff\xff\xff\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x09\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\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\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x09\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\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\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x09\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\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\x09\x00\xff\xff\xff\xff\x1f\x00\x20\x00\x21\x00\x0f\x00\x23\x00\x24\x00\x25\x00\x13\x00\x14\x00\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\xff\xff\xff\xff\x09\x00\xff\xff\x31\x00\x1f\x00\x20\x00\x21\x00\x0f\x00\x23\x00\x24\x00\x25\x00\x13\x00\x14\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x09\x00\xff\xff\x31\x00\x1f\x00\x20\x00\x21\x00\x0f\x00\x23\x00\x24\x00\x25\x00\x13\x00\x14\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x09\x00\xff\xff\x31\x00\x1f\x00\x20\x00\x21\x00\x0f\x00\x23\x00\x24\x00\x25\x00\x13\x00\x14\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x09\x00\xff\xff\x31\x00\x1f\x00\x20\x00\x21\x00\x0f\x00\x23\x00\x24\x00\x25\x00\x13\x00\x14\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x09\x00\xff\xff\x31\x00\x1f\x00\x20\x00\x21\x00\x0f\x00\x23\x00\x24\x00\x25\x00\x13\x00\x14\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x09\x00\xff\xff\x31\x00\x1f\x00\x20\x00\x21\x00\x0f\x00\x23\x00\x24\x00\x25\x00\x13\x00\x14\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x09\x00\xff\xff\x31\x00\x1f\x00\x20\x00\x21\x00\x0f\x00\x23\x00\x24\x00\x25\x00\x13\x00\x14\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x09\x00\xff\xff\x31\x00\x1f\x00\x20\x00\x21\x00\x0f\x00\x23\x00\x24\x00\x25\x00\x13\x00\x14\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x09\x00\xff\xff\x31\x00\x1f\x00\x20\x00\x21\x00\x0f\x00\x23\x00\x24\x00\x25\x00\x13\x00\x14\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x09\x00\xff\xff\x31\x00\x1f\x00\x20\x00\x21\x00\x0f\x00\x23\x00\x24\x00\x25\x00\x13\x00\x14\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x09\x00\xff\xff\x31\x00\x1f\x00\x20\x00\x21\x00\x0f\x00\x23\x00\x24\x00\x25\x00\x13\x00\x14\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x09\x00\xff\xff\x31\x00\x1f\x00\x20\x00\x21\x00\x0f\x00\x23\x00\x24\x00\x25\x00\x13\x00\x14\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x31\x00\x1f\x00\x20\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\x09\x00\xff\xff\x0b\x00\xff\xff\xff\xff\xff\xff\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x31\x00\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\x23\x00\x24\x00\x25\x00\x09\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0f\x00\x2d\x00\x2e\x00\x2f\x00\x30\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\x23\x00\x24\x00\x25\x00\x09\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0f\x00\x2d\x00\x2e\x00\x2f\x00\x30\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\x23\x00\x24\x00\x25\x00\x09\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0f\x00\x2d\x00\x2e\x00\x2f\x00\x30\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\x23\x00\x24\x00\x25\x00\x09\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0f\x00\x2d\x00\x2e\x00\x2f\x00\x30\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\x23\x00\x24\x00\x25\x00\x09\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0f\x00\x2d\x00\x2e\x00\x2f\x00\x30\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\x23\x00\x24\x00\x25\x00\x09\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0f\x00\x2d\x00\x2e\x00\x2f\x00\x30\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\x23\x00\x24\x00\x25\x00\x09\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0f\x00\x2d\x00\x2e\x00\x2f\x00\x30\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\x23\x00\x24\x00\x25\x00\x09\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0f\x00\x2d\x00\x2e\x00\x2f\x00\x30\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\x23\x00\x24\x00\x25\x00\x09\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0f\x00\x2d\x00\x2e\x00\x2f\x00\x30\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\x23\x00\x24\x00\x25\x00\x09\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0f\x00\x2d\x00\x2e\x00\x2f\x00\x30\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\x23\x00\x24\x00\x25\x00\x09\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0f\x00\x2d\x00\x2e\x00\x2f\x00\x30\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\x23\x00\x24\x00\x25\x00\x09\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0f\x00\x2d\x00\x2e\x00\x2f\x00\x30\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\x23\x00\x24\x00\x25\x00\x09\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0f\x00\x2d\x00\x2e\x00\x2f\x00\x30\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\x23\x00\x24\x00\x25\x00\x09\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0f\x00\x2d\x00\x2e\x00\x2f\x00\x30\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\x23\x00\x24\x00\x25\x00\x09\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0f\x00\x2d\x00\x2e\x00\x2f\x00\x30\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\x23\x00\x24\x00\x25\x00\x09\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0f\x00\x2d\x00\x2e\x00\x2f\x00\x30\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\x23\x00\x24\x00\x25\x00\x09\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0f\x00\x2d\x00\x2e\x00\x2f\x00\x30\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\x23\x00\x24\x00\x25\x00\x09\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0f\x00\x2d\x00\x2e\x00\x2f\x00\x30\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\x23\x00\x24\x00\x25\x00\x09\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0f\x00\x2d\x00\x2e\x00\x2f\x00\x30\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\x23\x00\x24\x00\x25\x00\x09\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0f\x00\x2d\x00\x2e\x00\x2f\x00\x30\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\x23\x00\x24\x00\x25\x00\x09\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0f\x00\x2d\x00\x2e\x00\x2f\x00\x30\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\x23\x00\x24\x00\x25\x00\x09\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0f\x00\x2d\x00\x2e\x00\x2f\x00\x30\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\x23\x00\x24\x00\x25\x00\x09\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0f\x00\x2d\x00\x2e\x00\x2f\x00\x30\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\x23\x00\x24\x00\x25\x00\x09\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0f\x00\x2d\x00\x2e\x00\x2f\x00\x30\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\x23\x00\x24\x00\x25\x00\x09\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0f\x00\x2d\x00\x2e\x00\x2f\x00\x30\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\x23\x00\x24\x00\x25\x00\x09\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0f\x00\x2d\x00\x2e\x00\x2f\x00\x30\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\x23\x00\x24\x00\x25\x00\x09\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0f\x00\x2d\x00\x2e\x00\x2f\x00\x30\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\x23\x00\x24\x00\x25\x00\x09\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0f\x00\x2d\x00\x2e\x00\x2f\x00\x30\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\x23\x00\x24\x00\x25\x00\x09\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0f\x00\x2d\x00\x2e\x00\x2f\x00\x30\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\x23\x00\x24\x00\x25\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\x2e\x00\x2f\x00\x30\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xe1\x01\xbc\x01\xf1\x02\xe9\x01\x08\x00\x90\x02\xea\x01\xfb\x02\xeb\x01\x9a\x02\x09\x00\x08\x00\x98\x01\x00\x02\x4b\x00\xe3\x01\x4c\x00\x09\x00\xa5\x01\xaf\x02\x49\x03\x41\x00\x4b\x01\xa9\x01\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x61\x01\x0d\x00\x0e\x00\x62\x01\x10\x00\x11\x00\x12\x00\x91\x02\x2d\x00\x2b\x00\x2c\x00\x5b\x02\x9b\x02\x2d\x00\x2e\x00\xa6\x01\x2d\x00\xd6\x02\x45\x00\x2e\x00\xc7\x02\xb0\x02\x2e\x00\xc7\x02\x63\x01\x64\x01\x4a\x03\x65\x01\x41\x03\x14\x02\xf6\x02\x5c\x02\x15\x02\xf2\x02\x55\x01\x3f\x03\x0d\x02\x5d\x02\x13\x00\x42\x03\x98\x01\x00\x02\x08\x00\xfc\x02\x69\x00\xec\x01\x5e\x02\x6a\x00\x09\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x01\x02\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x2b\x00\x2c\x00\x10\x00\x11\x00\xfb\x01\xe3\x01\xb3\x00\x50\x00\x7b\x00\x48\x03\xbd\x01\x7c\x00\x7d\x00\xe4\x01\x6c\x01\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\x08\x00\x66\x01\x2b\x00\xd9\x01\xed\x01\xce\x02\x09\x00\xa7\x01\x08\x00\x15\x03\xb2\x02\x02\x02\xc8\x02\x53\x01\x09\x00\x45\x02\xa0\x02\xa1\x02\x2a\x03\x30\x02\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\xaa\x01\x36\x02\x0d\x00\x0e\x00\x62\x01\x10\x00\x11\x00\x12\x00\x17\x03\x08\x00\xda\x02\x2b\x00\xb8\x01\x08\x00\xb3\x00\x09\x00\xb3\x02\x89\x02\x08\x00\x09\x00\xec\x02\x48\x02\xb4\x00\x31\x02\x09\x00\x62\x02\x63\x02\x64\x02\xd5\x01\x0d\x02\xe4\x01\xb9\x01\x2c\x03\x0d\x02\x2d\x03\x10\x00\x11\x00\xfb\x01\x13\x00\x10\x00\x11\x00\xfb\x01\x08\x00\x69\x02\x69\x00\x9d\x01\x68\x00\x6a\x00\x09\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\xe5\x01\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x98\x02\xe7\x01\xd0\x00\xc7\x00\xa4\x02\x69\x00\xa5\x02\x50\x00\x7b\x00\xb9\x01\x22\x03\x7c\x00\x7d\x00\x2b\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\x08\x00\x37\x03\x66\x01\x30\x03\x97\x02\xf1\x02\x09\x00\xd2\x02\xb6\x02\x08\x00\x56\x01\xc0\x00\xd3\x02\x9b\x00\x9c\x00\x09\x00\x2e\x00\x57\x01\x45\x02\x31\x03\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x9c\x01\x2b\x00\x36\x02\x0d\x00\x0e\x00\x62\x01\x10\x00\x11\x00\x12\x00\x08\x00\x58\x01\x59\x01\x5a\x01\x5b\x01\xb8\x01\x09\x00\x5c\x01\xb3\x00\xde\x02\xd5\x01\x2b\x00\xdf\x02\x46\x02\x47\x02\x48\x02\x70\x01\x62\x02\x63\x02\x65\x02\xb8\x01\x40\x02\xd5\x01\x4b\x00\xb9\x01\x4c\x00\x10\x00\x11\x00\xfb\x01\x13\x00\x33\x03\xf2\x02\xf3\x02\xf4\x02\x34\x03\x69\x00\x3b\x03\x6b\x02\x6a\x00\xb9\x01\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x07\x03\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x6e\x01\xb3\x00\x8c\x02\x07\x02\xc2\x01\x08\x02\xc3\x01\x50\x00\x7b\x00\xf4\x01\x9c\x02\x7c\x00\x7d\x00\xef\x01\xf0\x01\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\x08\x00\xf6\x02\x64\x00\x66\x01\xfc\x01\x65\x00\x09\x00\x08\x03\x09\x03\x0a\x03\x0b\x03\x08\x00\x56\x01\x0c\x03\x65\xff\xb9\x01\x23\x03\x09\x00\x2e\x00\x57\x01\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x65\xff\xa9\x01\xf1\x01\xf2\x01\x36\x02\x0d\x00\x0e\x00\x62\x01\x10\x00\x11\x00\x12\x00\x4d\x02\x3c\x03\x5e\x02\x5a\x01\x5b\x01\xdb\x00\xf3\x01\x5c\x01\xf4\x01\x2b\x00\xa7\x02\x06\x03\xa8\x02\xf1\x01\xf2\x01\x2b\x00\x1b\x03\x63\x01\x64\x01\x2b\x00\x37\x02\x2e\x03\x2f\x03\xb3\x00\x40\x03\xf8\x02\xf9\x02\x13\x00\xf3\x01\x08\x00\xf4\x01\xf4\x01\xf5\x01\x69\x00\x1d\x03\x09\x00\x6a\x00\x2b\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x07\x03\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x10\x00\x11\x00\xfb\x01\x2d\x00\xc3\x02\x55\xff\xb3\x00\x50\x00\x7b\x00\x2e\x00\xd7\x01\x7c\x00\x7d\x00\x55\xff\xb4\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\x08\x00\xf6\x02\x74\x01\xcb\x02\xf1\x02\x66\x01\x09\x00\xfe\x01\x45\x03\x0a\x03\x0b\x03\xe9\x01\x2d\x00\x46\x03\x9d\x02\xc5\x02\x76\x01\xd0\x00\x2e\x00\xa3\x01\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\xe9\x01\xc0\x00\xa2\x02\xea\x01\x08\x00\xeb\x01\x4b\x02\x6e\x01\x3b\x00\x5e\x00\x09\x00\x6f\x01\xe9\x01\x70\x01\xb3\x00\xea\x01\x4c\x00\x24\x03\xa5\x02\x5f\x00\x2b\x00\xd0\x02\xb4\x00\x60\x00\xd4\x02\x61\x00\x6a\x01\x0d\x00\x0e\x00\xff\x01\x10\x00\x11\x00\x4d\x01\xd8\x02\x55\xff\xf7\x02\xf8\x02\xf9\x02\x13\x00\xf2\x02\xfc\x02\xf4\x02\xff\x02\x00\x03\x69\x00\xc8\x01\x55\xff\x6a\x00\x55\xff\x6b\x00\x6c\x00\x6d\x00\x6e\x00\xe5\x01\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xb0\x02\xe7\x01\xd0\x00\x03\x03\x00\x03\xb3\x00\xdc\x02\x50\x00\x7b\x00\xbd\x02\xe6\x02\x7c\x00\x7d\x00\xf4\x01\xf6\x01\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\x08\x00\xb3\x00\xe7\x02\xb9\x01\xb9\x02\x08\x00\x09\x00\x6c\x02\xb3\x00\xf4\x01\xf7\x01\x09\x00\x08\x00\x53\x01\xe9\x01\x67\x02\xb4\x00\xea\x01\x09\x00\x25\x03\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x08\x00\xd7\x00\x10\x00\x11\x00\xc6\x00\x69\x02\x09\x00\x6d\x02\x5f\x01\x10\x00\x11\x00\xc6\x00\xe9\x01\x08\x00\x6e\x02\xea\x01\x73\x02\x26\x03\xcc\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\xcd\x00\xce\x00\x71\x02\xcf\x00\xd0\x00\x81\x02\xd6\x00\x0d\x00\x0e\x00\x13\x00\x10\x00\x11\x00\x4d\x01\x08\x00\x72\x02\x69\x00\xb9\x01\xbb\x02\x6a\x00\x09\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x75\x02\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x76\x02\x13\x00\x10\x00\x11\x00\x44\x01\x98\x01\xbf\x02\x50\x00\x7b\x00\x77\x02\x14\x00\x7c\x00\x7d\x00\x98\x01\xc0\x02\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\x08\x00\x98\x01\xc1\x02\x79\x02\xb3\x00\x0a\x02\x09\x00\xbd\x00\x2d\x00\x0b\x02\x08\x00\x0c\x02\xb4\x00\xe4\x01\x2e\x00\x2f\x00\x09\x00\x80\x02\x0d\x02\x7e\x02\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x32\x00\x33\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x34\x00\x10\x00\x11\x00\x12\x00\xbe\x00\xbf\x00\x98\x01\xc2\x02\xcc\x00\xc0\x00\xa2\x02\x35\x00\x36\x00\x37\x00\x38\x00\xc1\x00\xb9\x01\xc6\x02\xa5\x02\xc2\x00\x4f\x01\xc3\x00\xcf\x00\xd0\x00\xa9\x02\x5a\x00\xb9\x01\xc9\x02\x2b\x00\x5b\x00\xe9\x01\x5c\x00\x13\x00\xea\x01\xe9\x01\x27\x03\x08\x00\xea\x01\x69\x00\x19\x03\xda\x01\x6a\x00\x09\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x39\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\xdd\x01\xc5\x00\x10\x00\x11\x00\xc6\x00\xfa\x01\xe9\x01\x50\x00\x7b\x00\x9d\x02\x9e\x02\x7c\x00\x7d\x00\x6b\x02\x3e\x02\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\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\x12\x02\xe3\x01\x9e\x00\x9f\x00\x86\x02\x87\x02\xa0\x00\xe9\x01\xa1\x00\x16\x00\xea\x01\x78\xfe\x1a\x03\x53\x01\xa2\x00\xa3\x00\xa4\x00\xa5\x00\x17\x02\x17\x00\xa6\x00\xa7\x00\xa8\x00\x1f\x02\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\x18\x00\x08\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xae\x00\x09\x00\x19\x02\x1e\x00\xaf\x00\x1f\x00\x1e\x02\x20\x00\xb0\x00\xb1\x00\x89\x02\x8a\x02\x24\x02\xe9\x01\xbe\x00\xbf\x00\xea\x01\x25\x02\xa8\x02\xc0\x00\xb3\x00\x10\x00\x11\x00\x55\x00\x26\x02\x5f\x00\x27\x02\xb3\x00\xb4\x00\xd2\x00\x8e\x02\xd3\x00\x05\x02\x06\x02\x07\x02\xb4\x00\x08\x02\x0a\x02\x2b\x00\x21\x00\x28\x02\x0b\x02\x22\x00\x0c\x02\x23\x00\x91\x02\x92\x02\x29\x02\x24\x00\x25\x00\x0d\x02\x26\x00\xe9\x01\x2a\x02\x27\x00\xea\x01\x28\x00\xad\x02\x29\x00\x74\x01\x2a\x00\xaa\x02\xab\x02\xe4\x01\x34\x02\xb2\x00\xe5\x01\x2b\x00\x2c\x00\x3e\x02\x2d\x00\x9e\x00\x9f\x00\x76\x01\xd0\x00\xa0\x00\x2b\x02\xa1\x00\x16\x00\xb3\x02\xe7\x01\xd0\x00\x40\x02\xa2\x00\xa3\x00\xa4\x00\xa5\x00\x2c\x02\x17\x00\xa6\x00\xa7\x00\xa8\x00\x2d\x02\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\x18\x00\x43\x02\x19\x00\x1a\x00\x1b\x00\x1c\x00\xae\x00\xb9\x01\xb4\x02\x1e\x00\xaf\x00\x1f\x00\x08\x00\x20\x00\xb0\x00\xb1\x00\xb9\x01\xb5\x02\x09\x00\xf0\x02\x56\x02\x57\x02\x58\x02\x59\x02\x4c\x00\x29\x03\x55\x02\x56\x02\x57\x02\x58\x02\x59\x02\x42\x02\xbe\x00\xbf\x00\x6a\x01\x0d\x00\x0e\x00\xc0\x00\x10\x00\x11\x00\x4d\x01\x98\x01\x10\x02\x78\x01\x4f\x02\x21\x00\x50\x02\x79\x01\x22\x00\x7a\x01\x23\x00\x98\x01\x99\x01\xc5\x01\x24\x00\x25\x00\x2b\x00\x26\x00\x98\x01\x9a\x01\x27\x00\x46\x01\x28\x00\x60\x01\x29\x00\x4a\x01\x2a\x00\xb9\x01\xba\x01\x19\xfe\x9c\x01\xb2\x00\x9e\x01\x2b\x00\x2c\x00\x9f\x01\x2d\x00\x19\xfe\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\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\x25\x01\x26\x01\x27\x01\x28\x01\x29\x01\x2a\x01\x2b\x01\x2c\x01\x2d\x01\x2e\x01\x2f\x01\x30\x01\x31\x01\x32\x01\x33\x01\x34\x01\x35\x01\x36\x01\x37\x01\x38\x01\x39\x01\x3a\x01\x3b\x01\x3c\x01\x3d\x01\x3e\x01\x3f\x01\x40\x01\x41\x01\x42\x01\x43\x01\x44\x01\x9e\x00\x9f\x00\x0e\x03\x0f\x03\xa0\x00\x10\x03\xa1\x00\x16\x00\xab\x01\x78\xfe\xa1\x01\x11\x03\xa2\x00\xa3\x00\xa4\x00\x12\x03\xa2\x01\x17\x00\xa6\x00\xa7\x00\xa8\x00\x13\x03\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\x18\x00\xa5\x01\x19\x00\x1a\x00\x1b\x00\x1c\x00\xae\x00\x5c\x00\x38\x00\x1e\x00\xaf\x00\x1f\x00\xa9\x01\x20\x00\xb0\x00\xb1\x00\x08\x00\xe9\x01\x32\x02\xaa\x01\x9d\x02\xa1\x02\x09\x00\x40\x00\x07\x00\xad\x01\x4e\x01\x42\x00\x2b\x00\x2c\x00\xd5\x00\xd6\x00\xaf\x01\xb3\x00\x2b\x00\x2c\x00\xae\x01\xb3\x01\x4c\x01\x0d\x00\x0e\x00\xb4\x00\x10\x00\x11\x00\x4d\x01\x21\x00\xb1\x01\xb2\x01\x22\x00\xb4\x01\x23\x00\xc9\x01\xb6\x01\xd0\x01\x24\x00\x25\x00\x49\x00\x26\x00\xd1\x01\x66\x00\x27\x00\xc3\x00\x28\x00\xc9\x00\x29\x00\xca\x00\x2a\x00\xd3\x00\xd8\x00\xdb\x00\x07\x00\xb2\x00\xe5\x01\x2b\x00\x2c\x00\x30\x00\x2d\x00\x9e\x00\x9f\x00\x0e\x03\x0f\x03\xa0\x00\x10\x03\xa1\x00\x16\x00\xe6\x01\xe7\x01\xd0\x00\x11\x03\xa2\x00\xa3\x00\xa4\x00\x12\x03\x4c\x03\x17\x00\xa6\x00\xa7\x00\xa8\x00\x13\x03\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\x18\x00\x2b\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\xae\x00\xfb\x02\x2b\x00\x1e\x00\xaf\x00\x1f\x00\x44\x03\x20\x00\xb0\x00\xb1\x00\x08\x00\x45\x03\x69\x01\x2b\x00\x39\x03\xbc\x01\x09\x00\xd2\x02\x33\x03\x2c\x03\x4e\x01\x42\x00\x37\x03\x3b\x03\x3a\x03\x0d\x02\x36\x03\xb3\x00\x3e\x03\x3f\x03\x0d\x02\x2b\x00\x4c\x01\x0d\x00\x0e\x00\xb4\x00\x10\x00\x11\x00\x4d\x01\x21\x00\xfe\x02\xff\x02\x22\x00\x0d\x02\x23\x00\x02\x03\x1d\x03\x03\x03\x24\x00\x25\x00\x49\x00\x26\x00\x05\x03\x06\x03\x27\x00\x14\x03\x28\x00\x21\x03\x29\x00\x1f\x03\x2a\x00\x22\x03\xbf\x02\xbc\x01\xcb\x02\xb2\x00\xe5\x01\x2b\x00\x2c\x00\xbc\x01\x2d\x00\x9e\x00\x9f\x00\x2b\x00\x48\x03\xa0\x00\x2b\x00\xa1\x00\x16\x00\xe8\x01\xe7\x01\xd0\x00\xc5\x02\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xd2\x02\x17\x00\xa6\x00\xa7\x00\xa8\x00\xd7\x02\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\x18\x00\x0d\x02\x19\x00\x1a\x00\x1b\x00\x1c\x00\xae\x00\xdb\x02\xd8\x02\x1e\x00\xaf\x00\x1f\x00\xdc\x02\x20\x00\xb0\x00\xb1\x00\xe0\x02\x60\x02\xee\x02\xe1\x02\xef\xfe\xef\xfe\xe2\x02\xe3\x02\xe4\x02\xef\xfe\xb3\x00\xef\xfe\xe5\x02\xe6\x02\xc0\x00\xef\xfe\xe9\x02\xb3\x00\xb4\x00\xef\xfe\x5a\x00\xef\xfe\x1b\x02\xea\x02\x72\x01\xb4\x00\x73\x01\x2b\x00\xef\xfe\x21\x00\xeb\x02\xef\x02\x22\x00\x2b\x00\x23\x00\xf0\x02\x61\x02\x67\x02\x24\x00\x25\x00\x4d\x02\x26\x00\x14\x02\x1b\x02\x27\x00\x70\x02\x28\x00\x71\x02\x29\x00\x74\x01\x2a\x00\x1b\x02\x75\x02\x1b\x02\x35\x02\xb2\x00\xe5\x01\x2b\x00\x2c\x00\x8c\x02\x2d\x00\x9e\x00\x9f\x00\x76\x01\xd0\x00\xa0\x00\x79\x02\xa1\x00\x16\x00\xf8\x01\xe7\x01\xd0\x00\x1b\x02\xa2\x00\xa3\x00\xa4\x00\xa5\x00\x7b\x02\x17\x00\xa6\x00\xa7\x00\xa8\x00\x7c\x02\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\x18\x00\x7d\x02\x19\x00\x1a\x00\x1b\x00\x1c\x00\xae\x00\x7e\x02\x1b\x02\x1e\x00\xaf\x00\x1f\x00\x08\x00\x20\x00\xb0\x00\xb1\x00\x80\x02\x17\x02\x09\x00\x83\x02\x94\x02\x84\x02\x95\x02\x9c\x02\x4c\x00\x14\x03\x55\x02\x56\x02\x57\x02\x58\x02\x59\x02\xb1\x01\xad\x02\xbc\x01\x6a\x01\x0d\x00\x0e\x00\xda\x01\x10\x00\x11\x00\x4d\x01\xb3\x00\xdc\x01\xdd\x01\xdf\x01\x21\x00\xe0\x01\xe1\x01\x22\x00\xb4\x00\x23\x00\x2b\x00\x0f\x02\x4f\x00\x24\x00\x25\x00\x10\x02\x26\x00\x2b\x00\x12\x02\x27\x00\x14\x02\x28\x00\x08\x00\x29\x00\x17\x02\x2a\x00\x19\x02\x1b\x02\x09\x00\x1c\x02\xb2\x00\x19\x02\x2b\x00\x2c\x00\x4c\x00\x2d\x00\x1d\x02\x80\x01\x1e\x02\xe5\x01\x21\x02\x4d\x00\x33\x00\x0b\x00\x4e\x00\x0d\x00\x0e\x00\x34\x00\x10\x00\x11\x00\x12\x00\x14\x02\xf9\x01\xe7\x01\xd0\x00\x22\x02\x23\x02\xb3\x00\x35\x00\x36\x00\x37\x00\x38\x00\x16\x00\x4f\x00\x2f\x02\xb4\x00\x24\x02\xb3\x00\x17\x02\xb3\x00\x14\x02\x0d\xff\x17\x00\x50\x00\x51\x00\xb4\x00\x0e\xff\xb4\x00\x0a\xff\x08\xff\x09\xff\x42\x02\x18\x00\x48\x01\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xc5\x00\x4a\x02\x1e\x00\x48\x01\x1f\x00\x2b\x00\x20\x00\xb5\x00\x4d\x02\x4b\x02\xb6\x00\xb7\x00\xb8\x00\xb9\x00\x52\x02\x51\x01\x55\x01\xe5\x01\x56\x01\x74\x01\x5e\x01\xba\x00\xbb\x00\x5f\x01\x75\x01\xda\x00\x74\x01\x7b\x01\x7e\x01\x2b\x00\x03\x02\xe7\x01\xd0\x00\x76\x01\xd0\x00\x50\x00\x51\x00\xcc\x00\x21\x00\x2b\x00\xa1\x01\x29\x03\x3b\x00\x3c\x00\xb3\x00\xcc\x00\xb3\x00\x24\x00\x25\x00\xcc\x00\x26\x00\x16\x00\xb4\x00\x3d\x00\xb4\x00\x28\x00\xad\x01\x3e\x00\x4b\x00\x3f\x00\x4c\x00\x17\x00\xb1\x01\x2b\x00\xcc\x00\xcc\x01\x2b\x00\x2c\x00\xbc\x01\x2d\x00\xb6\x01\x18\x00\xcc\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xd0\x01\xcb\x01\x1e\x00\x16\x00\x1f\x00\xcc\x00\x20\x00\x74\x01\xcd\x01\xce\x01\xcf\x01\xd3\x01\x7c\x01\x17\x00\xd5\x01\xff\xff\xd4\x01\x52\x01\x66\x00\xcf\x00\xd0\x00\x76\x01\xd0\x00\x18\x00\x62\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\xff\xff\xc5\x00\x1e\x00\x2b\x00\x1f\x00\xcc\x00\x20\x00\x65\x00\x21\x00\xda\x00\xff\xff\x96\x02\x3b\x00\x3c\x00\xdb\x00\x32\x00\x00\x00\x24\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x28\x00\x00\x00\x3e\x00\x4b\x00\x3f\x00\x4c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x21\x00\x2d\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x24\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x28\x00\x00\x00\x3e\x00\x4b\x00\x3f\x00\x4c\x00\x16\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x08\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x09\x00\x00\x00\x1e\x00\x16\x00\x1f\x00\x00\x00\x20\x00\x16\x03\x55\x02\x56\x02\x57\x02\x58\x02\x59\x02\x17\x00\x45\x01\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x18\x00\x00\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x24\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x3d\x00\x55\x00\x28\x00\x00\x00\x3e\x00\x00\x00\x3f\x00\xb7\x02\x55\x02\x56\x02\x57\x02\x58\x02\x59\x02\x2b\x00\x2c\x00\x21\x00\x2d\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x24\x00\x25\x00\x00\x00\x26\x00\x16\x00\x00\x00\x3d\x00\x00\x00\x28\x00\x00\x00\x3e\x00\x4b\x00\x3f\x00\x4c\x00\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x18\x00\x00\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x16\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x24\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x4b\x00\x2a\x00\x4c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x00\x2b\x00\x2c\x00\x00\x00\x2d\x00\x23\x00\x00\x00\x00\x00\x00\x00\x24\x00\x25\x00\x00\x00\x26\x00\x16\x00\x00\x00\x27\x00\x34\x02\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x18\x00\x00\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x16\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x17\x00\x54\x02\x55\x02\x56\x02\x57\x02\x58\x02\x59\x02\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\xbe\x00\xbf\x00\x00\x00\x00\x00\x21\x00\xc0\x00\x00\x00\x0b\xff\x00\x00\x23\x00\x00\x00\x78\x01\x00\x00\x24\x00\x25\x00\x79\x01\x26\x00\x7a\x01\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x2b\x00\x2a\x00\x68\x01\x00\x00\x00\x00\x00\x00\x69\x01\x21\x00\x2b\x00\x2c\x00\x00\x00\x2d\x00\x23\x00\x00\x00\x00\x00\x00\x00\x24\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x4b\x00\x2a\x00\x4c\x00\x16\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x08\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x09\x00\x00\x00\x1e\x00\x16\x00\x1f\x00\x00\x00\x20\x00\x96\x02\x55\x02\x56\x02\x57\x02\x58\x02\x59\x02\x17\x00\x00\x00\x44\x02\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x18\x00\x00\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\xbe\x00\xbf\x00\x23\x00\x00\x00\x00\x00\xc0\x00\x24\x00\x25\x00\x00\x00\x26\x00\x00\x00\x5f\x00\x27\x00\x6c\x01\x28\x00\xd2\x00\x29\x00\x05\x02\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2b\x00\x2c\x00\x21\x00\x2d\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x24\x00\x25\x00\x00\x00\x26\x00\x16\x00\x00\x00\x3d\x00\x00\x00\x28\x00\x00\x00\x3e\x00\x00\x00\x3f\x00\x47\x00\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x18\x00\x08\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x09\x00\x00\x00\x1e\x00\x16\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x17\x00\x00\x00\xbf\x01\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x18\x00\x00\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x24\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x3d\x00\x55\x00\x28\x00\x00\x00\x3e\x00\x00\x00\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x21\x00\x2d\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x24\x00\x25\x00\x00\x00\x26\x00\x16\x00\x00\x00\x3d\x00\x00\x00\x28\x00\x00\x00\x3e\x00\x00\x00\x3f\x00\x47\x00\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x18\x00\x00\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x16\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\xbe\x00\xbf\x00\x00\x00\x00\x00\x21\x00\xc0\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x78\x01\x00\x00\x24\x00\x25\x00\x79\x01\x26\x00\x7a\x01\x00\x00\x3d\x00\x55\x00\x28\x00\x00\x00\x3e\x00\x2b\x00\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x00\x2b\x00\x2c\x00\x00\x00\x2d\x00\x23\x00\x00\x00\x00\x00\x00\x00\x24\x00\x25\x00\x47\xff\x26\x00\x16\x00\x47\xff\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x18\x00\x00\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x16\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\xbe\x00\xbf\x00\x00\x00\x00\x00\x21\x00\xc0\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x5f\x00\x00\x00\x24\x00\x25\x00\xd2\x00\x26\x00\xd3\x00\x00\x00\x3d\x00\x00\x00\x28\x00\x00\x00\x3e\x00\x2b\x00\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x00\x2b\x00\x2c\x00\x00\x00\x2d\x00\x23\x00\x00\x00\x00\x00\x00\x00\x24\x00\x25\x00\x00\x00\x26\x00\x16\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x17\x00\x00\x00\x00\x00\x69\x01\x00\x00\x2b\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x18\x00\x00\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x16\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\xbe\x00\xbf\x00\x00\x00\x00\x00\x21\x00\xc0\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x78\x01\x00\x00\x24\x00\x25\x00\x79\x01\x26\x00\x7a\x01\x00\x00\x3d\x00\x00\x00\x28\x00\x00\x00\x3e\x00\x2b\x00\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x00\x2b\x00\x2c\x00\x00\x00\x2d\x00\x23\x00\x00\x00\x00\x00\x00\x00\x24\x00\x25\x00\x00\x00\x26\x00\x16\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x32\x02\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x18\x00\x08\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x09\x00\x00\x00\x1e\x00\x16\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x17\x00\x00\x00\x00\x00\x3c\x02\x0d\x00\x0e\x00\x3d\x02\x10\x00\x11\x00\x12\x00\x18\x00\x00\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\xbe\x00\xbf\x00\x23\x00\x00\x00\x00\x00\xc0\x00\x24\x00\x25\x00\x00\x00\x26\x00\x00\x00\x5f\x00\x27\x00\x00\x00\x28\x00\xd2\x00\x29\x00\xd3\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\x01\x2b\x00\x2b\x00\x2c\x00\x21\x00\x2d\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x24\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x28\x00\x00\x00\x3e\x00\x16\x00\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x53\x00\x2d\x00\x00\x00\x00\x00\x00\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x08\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x09\x00\x00\x00\x1e\x00\x16\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x17\x00\x00\x00\x00\x00\xd6\x00\x0d\x00\x0e\x00\xd7\x00\x10\x00\x11\x00\x12\x00\x18\x00\x00\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x24\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x21\x00\x2d\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x24\x00\x25\x00\x00\x00\x26\x00\x16\x00\x00\x00\x3d\x00\x00\x00\x28\x00\x00\x00\x3e\x00\x00\x00\x3f\x00\x00\x00\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x18\x00\x00\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x16\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x24\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x21\x00\x2d\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x24\x00\x25\x00\x00\x00\x26\x00\x16\x00\x00\x00\x3d\x00\x00\x00\x28\x00\x00\x00\x3e\x00\x00\x00\x3f\x00\x00\x00\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x18\x00\x00\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\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\x19\x00\x1a\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x24\x00\x25\x00\x00\x00\x26\x00\x00\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x21\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x23\x00\x2d\x00\x00\x00\x00\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x19\x03\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x18\x00\x2d\x00\x19\x00\x1a\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x00\x00\x00\x00\x20\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\x19\x00\x1a\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x21\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x23\x00\x2d\x00\x00\x00\x00\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\xfe\x01\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x18\x00\x2d\x00\x19\x00\x1a\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x00\x00\x00\x00\x20\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\x19\x00\x1a\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x21\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x23\x00\x2d\x00\x00\x00\x00\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\xc9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x18\x00\x2d\x00\x19\x00\x1a\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x00\x00\x00\x00\x20\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\x19\x00\x1a\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\x00\x00\x00\x28\x00\x00\x00\x58\x00\x00\x00\x59\x00\x00\x00\x00\x00\x00\x00\x21\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x23\x00\x2d\x00\x00\x00\x00\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x18\x00\x2d\x00\x19\x00\x1a\x00\x00\x00\x1c\x00\x1d\x00\x00\x00\x00\x00\x1e\x00\x08\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x00\x33\x00\x0b\x00\x4e\x00\x0d\x00\x0e\x00\x34\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x00\x35\x00\x36\x00\x37\x00\x38\x00\x23\x00\xc8\x01\x00\x00\x00\x00\x24\x00\x25\x00\x00\x00\x00\x00\x00\x00\x08\x00\x27\x00\x47\x00\x28\x00\x00\x00\x29\x00\x09\x00\xc9\x00\x00\x00\x00\x00\x41\x00\x42\x00\x00\x00\x00\x00\x2b\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x48\x00\x33\x00\x0b\x00\x44\x00\x0d\x00\x0e\x00\x34\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x35\x00\x36\x00\x37\x00\x38\x00\xc7\x01\x08\x00\x00\x00\x47\x00\x00\x00\x00\x00\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x41\x00\x42\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x33\x00\x0b\x00\x44\x00\x0d\x00\x0e\x00\x34\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x35\x00\x36\x00\x37\x00\x38\x00\x49\x00\x09\x00\x00\x00\x00\x00\x00\x00\x41\x00\x42\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x43\x00\x33\x00\x0b\x00\x44\x00\x0d\x00\x0e\x00\x34\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x35\x00\x36\x00\x37\x00\x38\x00\xc6\x01\x09\x00\x00\x00\x00\x00\x00\x00\x41\x00\x42\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x43\x00\x33\x00\x0b\x00\x44\x00\x0d\x00\x0e\x00\x34\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8e\x02\x35\x00\x36\x00\x37\x00\x38\x00\x45\x00\x09\x00\x00\x00\x00\x00\x00\x00\x41\x00\x4b\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x4c\x01\x0d\x00\x0e\x00\x09\x00\x10\x00\x11\x00\x4d\x01\x41\x00\x42\x00\x00\x00\x00\x00\x46\x02\x47\x02\x48\x02\x00\x00\x00\x00\x08\x00\x00\x00\x45\x00\x4c\x01\x0d\x00\x0e\x00\x09\x00\x10\x00\x11\x00\x4d\x01\x41\x00\x42\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\xc6\x01\x4c\x01\x0d\x00\x0e\x00\x09\x00\x10\x00\x11\x00\x4d\x01\x41\x00\x4b\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\xc7\x01\x4c\x01\x0d\x00\x0e\x00\x09\x00\x10\x00\x11\x00\x4d\x01\x38\x02\x42\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x45\x00\x4c\x01\x0d\x00\x0e\x00\x09\x00\x10\x00\x11\x00\x4d\x01\x39\x02\x42\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\xc3\x01\x4c\x01\x0d\x00\x0e\x00\x09\x00\x10\x00\x11\x00\x4d\x01\x3a\x02\x42\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\xc4\x01\x4c\x01\x0d\x00\x0e\x00\x09\x00\x10\x00\x11\x00\x4d\x01\x3b\x02\x42\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\xc6\x01\x4c\x01\x0d\x00\x0e\x00\x09\x00\x10\x00\x11\x00\x4d\x01\x41\x00\x4b\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\xc7\x01\x4c\x01\x0d\x00\x0e\x00\x09\x00\x10\x00\x11\x00\x4d\x01\x4e\x01\x42\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x45\x00\x4c\x01\x0d\x00\x0e\x00\x09\x00\x10\x00\x11\x00\x4d\x01\x41\x00\x42\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x49\x00\x4c\x01\x0d\x00\x0e\x00\x09\x00\x10\x00\x11\x00\x4d\x01\x41\x00\x42\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x45\x00\x4c\x01\x0d\x00\x0e\x00\x09\x00\x10\x00\x11\x00\x4d\x01\x41\x00\x42\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x49\x00\x4c\x01\x0d\x00\x0e\x00\x09\x00\x10\x00\x11\x00\x4d\x01\x41\x00\x42\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc3\x01\x4c\x01\x0d\x00\x0e\x00\x00\x00\x10\x00\x11\x00\x4d\x01\x08\x00\x00\x00\x47\x00\x00\x00\x00\x00\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc4\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x33\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x34\x00\x10\x00\x11\x00\x12\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x03\x33\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x34\x00\x10\x00\x11\x00\x12\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb8\x02\x33\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x34\x00\x10\x00\x11\x00\x12\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xba\x02\x33\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x34\x00\x10\x00\x11\x00\x12\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbc\x02\x33\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x34\x00\x10\x00\x11\x00\x12\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcc\x02\x33\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x34\x00\x10\x00\x11\x00\x12\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcd\x02\x33\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x34\x00\x10\x00\x11\x00\x12\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcf\x02\x33\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x34\x00\x10\x00\x11\x00\x12\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xeb\x02\x33\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x34\x00\x10\x00\x11\x00\x12\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x02\x33\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x34\x00\x10\x00\x11\x00\x12\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x02\x33\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x34\x00\x10\x00\x11\x00\x12\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x84\x02\x33\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x34\x00\x10\x00\x11\x00\x12\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x85\x02\x33\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x34\x00\x10\x00\x11\x00\x12\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd5\x01\x33\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x34\x00\x10\x00\x11\x00\x12\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd6\x01\x33\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x34\x00\x10\x00\x11\x00\x12\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0d\x02\x33\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x34\x00\x10\x00\x11\x00\x12\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x02\x33\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x34\x00\x10\x00\x11\x00\x12\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x02\x33\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x34\x00\x10\x00\x11\x00\x12\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x02\x33\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x34\x00\x10\x00\x11\x00\x12\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x01\x33\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x34\x00\x10\x00\x11\x00\x12\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x49\x01\x33\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x34\x00\x10\x00\x11\x00\x12\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x51\x01\x33\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x34\x00\x10\x00\x11\x00\x12\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7b\x01\x33\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x34\x00\x10\x00\x11\x00\x12\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbe\x01\x33\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x34\x00\x10\x00\x11\x00\x12\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\x01\x33\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x34\x00\x10\x00\x11\x00\x12\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\x00\x33\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x34\x00\x10\x00\x11\x00\x12\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x43\x00\x33\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x34\x00\x10\x00\x11\x00\x12\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb2\x00\x33\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x34\x00\x10\x00\x11\x00\x12\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x00\x33\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x34\x00\x10\x00\x11\x00\x12\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x35\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3f\x00\x33\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x34\x00\x10\x00\x11\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x35\x00\x36\x00\x37\x00\x38\x00\x7f\x01\x80\x01\x81\x01\x82\x01\x83\x01\x84\x01\x85\x01\x86\x01\x87\x01\x88\x01\x89\x01\x8a\x01\x8b\x01\x8c\x01\x8d\x01\x8e\x01\x8f\x01\x90\x01\x91\x01\x92\x01\x93\x01\x94\x01\x95\x01\x96\x01\x97\x01\x98\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\x00\x00\x00\x00\x00\x00\x00\x00"#
+
+happyReduceArr = Happy_Data_Array.array (6, 487) [
+	(6 , happyReduce_6),
+	(7 , happyReduce_7),
+	(8 , happyReduce_8),
+	(9 , happyReduce_9),
+	(10 , happyReduce_10),
+	(11 , happyReduce_11),
+	(12 , happyReduce_12),
+	(13 , happyReduce_13),
+	(14 , happyReduce_14),
+	(15 , happyReduce_15),
+	(16 , happyReduce_16),
+	(17 , happyReduce_17),
+	(18 , happyReduce_18),
+	(19 , happyReduce_19),
+	(20 , happyReduce_20),
+	(21 , happyReduce_21),
+	(22 , happyReduce_22),
+	(23 , happyReduce_23),
+	(24 , happyReduce_24),
+	(25 , happyReduce_25),
+	(26 , happyReduce_26),
+	(27 , happyReduce_27),
+	(28 , happyReduce_28),
+	(29 , happyReduce_29),
+	(30 , happyReduce_30),
+	(31 , happyReduce_31),
+	(32 , happyReduce_32),
+	(33 , happyReduce_33),
+	(34 , happyReduce_34),
+	(35 , happyReduce_35),
+	(36 , happyReduce_36),
+	(37 , happyReduce_37),
+	(38 , happyReduce_38),
+	(39 , happyReduce_39),
+	(40 , happyReduce_40),
+	(41 , happyReduce_41),
+	(42 , happyReduce_42),
+	(43 , happyReduce_43),
+	(44 , happyReduce_44),
+	(45 , happyReduce_45),
+	(46 , happyReduce_46),
+	(47 , happyReduce_47),
+	(48 , happyReduce_48),
+	(49 , happyReduce_49),
+	(50 , happyReduce_50),
+	(51 , happyReduce_51),
+	(52 , happyReduce_52),
+	(53 , happyReduce_53),
+	(54 , happyReduce_54),
+	(55 , happyReduce_55),
+	(56 , happyReduce_56),
+	(57 , happyReduce_57),
+	(58 , happyReduce_58),
+	(59 , happyReduce_59),
+	(60 , happyReduce_60),
+	(61 , happyReduce_61),
+	(62 , happyReduce_62),
+	(63 , happyReduce_63),
+	(64 , happyReduce_64),
+	(65 , happyReduce_65),
+	(66 , happyReduce_66),
+	(67 , happyReduce_67),
+	(68 , happyReduce_68),
+	(69 , happyReduce_69),
+	(70 , happyReduce_70),
+	(71 , happyReduce_71),
+	(72 , happyReduce_72),
+	(73 , happyReduce_73),
+	(74 , happyReduce_74),
+	(75 , happyReduce_75),
+	(76 , happyReduce_76),
+	(77 , happyReduce_77),
+	(78 , happyReduce_78),
+	(79 , happyReduce_79),
+	(80 , happyReduce_80),
+	(81 , happyReduce_81),
+	(82 , happyReduce_82),
+	(83 , happyReduce_83),
+	(84 , happyReduce_84),
+	(85 , happyReduce_85),
+	(86 , happyReduce_86),
+	(87 , happyReduce_87),
+	(88 , happyReduce_88),
+	(89 , happyReduce_89),
+	(90 , happyReduce_90),
+	(91 , happyReduce_91),
+	(92 , happyReduce_92),
+	(93 , happyReduce_93),
+	(94 , happyReduce_94),
+	(95 , happyReduce_95),
+	(96 , happyReduce_96),
+	(97 , happyReduce_97),
+	(98 , happyReduce_98),
+	(99 , happyReduce_99),
+	(100 , happyReduce_100),
+	(101 , happyReduce_101),
+	(102 , happyReduce_102),
+	(103 , happyReduce_103),
+	(104 , happyReduce_104),
+	(105 , happyReduce_105),
+	(106 , happyReduce_106),
+	(107 , happyReduce_107),
+	(108 , happyReduce_108),
+	(109 , happyReduce_109),
+	(110 , happyReduce_110),
+	(111 , happyReduce_111),
+	(112 , happyReduce_112),
+	(113 , happyReduce_113),
+	(114 , happyReduce_114),
+	(115 , happyReduce_115),
+	(116 , happyReduce_116),
+	(117 , happyReduce_117),
+	(118 , happyReduce_118),
+	(119 , happyReduce_119),
+	(120 , happyReduce_120),
+	(121 , happyReduce_121),
+	(122 , happyReduce_122),
+	(123 , happyReduce_123),
+	(124 , happyReduce_124),
+	(125 , happyReduce_125),
+	(126 , happyReduce_126),
+	(127 , happyReduce_127),
+	(128 , happyReduce_128),
+	(129 , happyReduce_129),
+	(130 , happyReduce_130),
+	(131 , happyReduce_131),
+	(132 , happyReduce_132),
+	(133 , happyReduce_133),
+	(134 , happyReduce_134),
+	(135 , happyReduce_135),
+	(136 , happyReduce_136),
+	(137 , happyReduce_137),
+	(138 , happyReduce_138),
+	(139 , happyReduce_139),
+	(140 , happyReduce_140),
+	(141 , happyReduce_141),
+	(142 , happyReduce_142),
+	(143 , happyReduce_143),
+	(144 , happyReduce_144),
+	(145 , happyReduce_145),
+	(146 , happyReduce_146),
+	(147 , happyReduce_147),
+	(148 , happyReduce_148),
+	(149 , happyReduce_149),
+	(150 , happyReduce_150),
+	(151 , happyReduce_151),
+	(152 , happyReduce_152),
+	(153 , happyReduce_153),
+	(154 , happyReduce_154),
+	(155 , happyReduce_155),
+	(156 , happyReduce_156),
+	(157 , happyReduce_157),
+	(158 , happyReduce_158),
+	(159 , happyReduce_159),
+	(160 , happyReduce_160),
+	(161 , happyReduce_161),
+	(162 , happyReduce_162),
+	(163 , happyReduce_163),
+	(164 , happyReduce_164),
+	(165 , happyReduce_165),
+	(166 , happyReduce_166),
+	(167 , happyReduce_167),
+	(168 , happyReduce_168),
+	(169 , happyReduce_169),
+	(170 , happyReduce_170),
+	(171 , happyReduce_171),
+	(172 , happyReduce_172),
+	(173 , happyReduce_173),
+	(174 , happyReduce_174),
+	(175 , happyReduce_175),
+	(176 , happyReduce_176),
+	(177 , happyReduce_177),
+	(178 , happyReduce_178),
+	(179 , happyReduce_179),
+	(180 , happyReduce_180),
+	(181 , happyReduce_181),
+	(182 , happyReduce_182),
+	(183 , happyReduce_183),
+	(184 , happyReduce_184),
+	(185 , happyReduce_185),
+	(186 , happyReduce_186),
+	(187 , happyReduce_187),
+	(188 , happyReduce_188),
+	(189 , happyReduce_189),
+	(190 , happyReduce_190),
+	(191 , happyReduce_191),
+	(192 , happyReduce_192),
+	(193 , happyReduce_193),
+	(194 , happyReduce_194),
+	(195 , happyReduce_195),
+	(196 , happyReduce_196),
+	(197 , happyReduce_197),
+	(198 , happyReduce_198),
+	(199 , happyReduce_199),
+	(200 , happyReduce_200),
+	(201 , happyReduce_201),
+	(202 , happyReduce_202),
+	(203 , happyReduce_203),
+	(204 , happyReduce_204),
+	(205 , happyReduce_205),
+	(206 , happyReduce_206),
+	(207 , happyReduce_207),
+	(208 , happyReduce_208),
+	(209 , happyReduce_209),
+	(210 , happyReduce_210),
+	(211 , happyReduce_211),
+	(212 , happyReduce_212),
+	(213 , happyReduce_213),
+	(214 , happyReduce_214),
+	(215 , happyReduce_215),
+	(216 , happyReduce_216),
+	(217 , happyReduce_217),
+	(218 , happyReduce_218),
+	(219 , happyReduce_219),
+	(220 , happyReduce_220),
+	(221 , happyReduce_221),
+	(222 , happyReduce_222),
+	(223 , happyReduce_223),
+	(224 , happyReduce_224),
+	(225 , happyReduce_225),
+	(226 , happyReduce_226),
+	(227 , happyReduce_227),
+	(228 , happyReduce_228),
+	(229 , happyReduce_229),
+	(230 , happyReduce_230),
+	(231 , happyReduce_231),
+	(232 , happyReduce_232),
+	(233 , happyReduce_233),
+	(234 , happyReduce_234),
+	(235 , happyReduce_235),
+	(236 , happyReduce_236),
+	(237 , happyReduce_237),
+	(238 , happyReduce_238),
+	(239 , happyReduce_239),
+	(240 , happyReduce_240),
+	(241 , happyReduce_241),
+	(242 , happyReduce_242),
+	(243 , happyReduce_243),
+	(244 , happyReduce_244),
+	(245 , happyReduce_245),
+	(246 , happyReduce_246),
+	(247 , happyReduce_247),
+	(248 , happyReduce_248),
+	(249 , happyReduce_249),
+	(250 , happyReduce_250),
+	(251 , happyReduce_251),
+	(252 , happyReduce_252),
+	(253 , happyReduce_253),
+	(254 , happyReduce_254),
+	(255 , happyReduce_255),
+	(256 , happyReduce_256),
+	(257 , happyReduce_257),
+	(258 , happyReduce_258),
+	(259 , happyReduce_259),
+	(260 , happyReduce_260),
+	(261 , happyReduce_261),
+	(262 , happyReduce_262),
+	(263 , happyReduce_263),
+	(264 , happyReduce_264),
+	(265 , happyReduce_265),
+	(266 , happyReduce_266),
+	(267 , happyReduce_267),
+	(268 , happyReduce_268),
+	(269 , happyReduce_269),
+	(270 , happyReduce_270),
+	(271 , happyReduce_271),
+	(272 , happyReduce_272),
+	(273 , happyReduce_273),
+	(274 , happyReduce_274),
+	(275 , happyReduce_275),
+	(276 , happyReduce_276),
+	(277 , happyReduce_277),
+	(278 , happyReduce_278),
+	(279 , happyReduce_279),
+	(280 , happyReduce_280),
+	(281 , happyReduce_281),
+	(282 , happyReduce_282),
+	(283 , happyReduce_283),
+	(284 , happyReduce_284),
+	(285 , happyReduce_285),
+	(286 , happyReduce_286),
+	(287 , happyReduce_287),
+	(288 , happyReduce_288),
+	(289 , happyReduce_289),
+	(290 , happyReduce_290),
+	(291 , happyReduce_291),
+	(292 , happyReduce_292),
+	(293 , happyReduce_293),
+	(294 , happyReduce_294),
+	(295 , happyReduce_295),
+	(296 , happyReduce_296),
+	(297 , happyReduce_297),
+	(298 , happyReduce_298),
+	(299 , happyReduce_299),
+	(300 , happyReduce_300),
+	(301 , happyReduce_301),
+	(302 , happyReduce_302),
+	(303 , happyReduce_303),
+	(304 , happyReduce_304),
+	(305 , happyReduce_305),
+	(306 , happyReduce_306),
+	(307 , happyReduce_307),
+	(308 , happyReduce_308),
+	(309 , happyReduce_309),
+	(310 , happyReduce_310),
+	(311 , happyReduce_311),
+	(312 , happyReduce_312),
+	(313 , happyReduce_313),
+	(314 , happyReduce_314),
+	(315 , happyReduce_315),
+	(316 , happyReduce_316),
+	(317 , happyReduce_317),
+	(318 , happyReduce_318),
+	(319 , happyReduce_319),
+	(320 , happyReduce_320),
+	(321 , happyReduce_321),
+	(322 , happyReduce_322),
+	(323 , happyReduce_323),
+	(324 , happyReduce_324),
+	(325 , happyReduce_325),
+	(326 , happyReduce_326),
+	(327 , happyReduce_327),
+	(328 , happyReduce_328),
+	(329 , happyReduce_329),
+	(330 , happyReduce_330),
+	(331 , happyReduce_331),
+	(332 , happyReduce_332),
+	(333 , happyReduce_333),
+	(334 , happyReduce_334),
+	(335 , happyReduce_335),
+	(336 , happyReduce_336),
+	(337 , happyReduce_337),
+	(338 , happyReduce_338),
+	(339 , happyReduce_339),
+	(340 , happyReduce_340),
+	(341 , happyReduce_341),
+	(342 , happyReduce_342),
+	(343 , happyReduce_343),
+	(344 , happyReduce_344),
+	(345 , happyReduce_345),
+	(346 , happyReduce_346),
+	(347 , happyReduce_347),
+	(348 , happyReduce_348),
+	(349 , happyReduce_349),
+	(350 , happyReduce_350),
+	(351 , happyReduce_351),
+	(352 , happyReduce_352),
+	(353 , happyReduce_353),
+	(354 , happyReduce_354),
+	(355 , happyReduce_355),
+	(356 , happyReduce_356),
+	(357 , happyReduce_357),
+	(358 , happyReduce_358),
+	(359 , happyReduce_359),
+	(360 , happyReduce_360),
+	(361 , happyReduce_361),
+	(362 , happyReduce_362),
+	(363 , happyReduce_363),
+	(364 , happyReduce_364),
+	(365 , happyReduce_365),
+	(366 , happyReduce_366),
+	(367 , happyReduce_367),
+	(368 , happyReduce_368),
+	(369 , happyReduce_369),
+	(370 , happyReduce_370),
+	(371 , happyReduce_371),
+	(372 , happyReduce_372),
+	(373 , happyReduce_373),
+	(374 , happyReduce_374),
+	(375 , happyReduce_375),
+	(376 , happyReduce_376),
+	(377 , happyReduce_377),
+	(378 , happyReduce_378),
+	(379 , happyReduce_379),
+	(380 , happyReduce_380),
+	(381 , happyReduce_381),
+	(382 , happyReduce_382),
+	(383 , happyReduce_383),
+	(384 , happyReduce_384),
+	(385 , happyReduce_385),
+	(386 , happyReduce_386),
+	(387 , happyReduce_387),
+	(388 , happyReduce_388),
+	(389 , happyReduce_389),
+	(390 , happyReduce_390),
+	(391 , happyReduce_391),
+	(392 , happyReduce_392),
+	(393 , happyReduce_393),
+	(394 , happyReduce_394),
+	(395 , happyReduce_395),
+	(396 , happyReduce_396),
+	(397 , happyReduce_397),
+	(398 , happyReduce_398),
+	(399 , happyReduce_399),
+	(400 , happyReduce_400),
+	(401 , happyReduce_401),
+	(402 , happyReduce_402),
+	(403 , happyReduce_403),
+	(404 , happyReduce_404),
+	(405 , happyReduce_405),
+	(406 , happyReduce_406),
+	(407 , happyReduce_407),
+	(408 , happyReduce_408),
+	(409 , happyReduce_409),
+	(410 , happyReduce_410),
+	(411 , happyReduce_411),
+	(412 , happyReduce_412),
+	(413 , happyReduce_413),
+	(414 , happyReduce_414),
+	(415 , happyReduce_415),
+	(416 , happyReduce_416),
+	(417 , happyReduce_417),
+	(418 , happyReduce_418),
+	(419 , happyReduce_419),
+	(420 , happyReduce_420),
+	(421 , happyReduce_421),
+	(422 , happyReduce_422),
+	(423 , happyReduce_423),
+	(424 , happyReduce_424),
+	(425 , happyReduce_425),
+	(426 , happyReduce_426),
+	(427 , happyReduce_427),
+	(428 , happyReduce_428),
+	(429 , happyReduce_429),
+	(430 , happyReduce_430),
+	(431 , happyReduce_431),
+	(432 , happyReduce_432),
+	(433 , happyReduce_433),
+	(434 , happyReduce_434),
+	(435 , happyReduce_435),
+	(436 , happyReduce_436),
+	(437 , happyReduce_437),
+	(438 , happyReduce_438),
+	(439 , happyReduce_439),
+	(440 , happyReduce_440),
+	(441 , happyReduce_441),
+	(442 , happyReduce_442),
+	(443 , happyReduce_443),
+	(444 , happyReduce_444),
+	(445 , happyReduce_445),
+	(446 , happyReduce_446),
+	(447 , happyReduce_447),
+	(448 , happyReduce_448),
+	(449 , happyReduce_449),
+	(450 , happyReduce_450),
+	(451 , happyReduce_451),
+	(452 , happyReduce_452),
+	(453 , happyReduce_453),
+	(454 , happyReduce_454),
+	(455 , happyReduce_455),
+	(456 , happyReduce_456),
+	(457 , happyReduce_457),
+	(458 , happyReduce_458),
+	(459 , happyReduce_459),
+	(460 , happyReduce_460),
+	(461 , happyReduce_461),
+	(462 , happyReduce_462),
+	(463 , happyReduce_463),
+	(464 , happyReduce_464),
+	(465 , happyReduce_465),
+	(466 , happyReduce_466),
+	(467 , happyReduce_467),
+	(468 , happyReduce_468),
+	(469 , happyReduce_469),
+	(470 , happyReduce_470),
+	(471 , happyReduce_471),
+	(472 , happyReduce_472),
+	(473 , happyReduce_473),
+	(474 , happyReduce_474),
+	(475 , happyReduce_475),
+	(476 , happyReduce_476),
+	(477 , happyReduce_477),
+	(478 , happyReduce_478),
+	(479 , happyReduce_479),
+	(480 , happyReduce_480),
+	(481 , happyReduce_481),
+	(482 , happyReduce_482),
+	(483 , happyReduce_483),
+	(484 , happyReduce_484),
+	(485 , happyReduce_485),
+	(486 , happyReduce_486),
+	(487 , happyReduce_487)
+	]
+
+happy_n_terms = 106 :: Int
+happy_n_nonterms = 162 :: Int
+
+happyReduce_6 = happySpecReduce_1  0# happyReduction_6
+happyReduction_6 happy_x_1
+	 =  case happyOut10 happy_x_1 of { happy_var_1 -> 
+	happyIn9
+		 (reverse happy_var_1
+	)}
+
+happyReduce_7 = happySpecReduce_2  1# happyReduction_7
+happyReduction_7 happy_x_2
+	happy_x_1
+	 =  case happyOut10 happy_x_1 of { happy_var_1 -> 
+	case happyOut11 happy_x_2 of { happy_var_2 -> 
+	happyIn10
+		 (happy_var_2 : happy_var_1
+	)}}
+
+happyReduce_8 = happySpecReduce_0  1# happyReduction_8
+happyReduction_8  =  happyIn10
+		 ([]
+	)
+
+happyReduce_9 = happySpecReduce_1  2# happyReduction_9
+happyReduction_9 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwAbstract happy_var_1) -> 
+	happyIn11
+		 (TokKeyword KwAbstract happy_var_1
+	)}
+
+happyReduce_10 = happySpecReduce_1  2# happyReduction_10
+happyReduction_10 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwCoData happy_var_1) -> 
+	happyIn11
+		 (TokKeyword KwCoData happy_var_1
+	)}
+
+happyReduce_11 = happySpecReduce_1  2# happyReduction_11
+happyReduction_11 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwCoInductive happy_var_1) -> 
+	happyIn11
+		 (TokKeyword KwCoInductive happy_var_1
+	)}
+
+happyReduce_12 = happySpecReduce_1  2# happyReduction_12
+happyReduction_12 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwConstructor happy_var_1) -> 
+	happyIn11
+		 (TokKeyword KwConstructor happy_var_1
+	)}
+
+happyReduce_13 = happySpecReduce_1  2# happyReduction_13
+happyReduction_13 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwData happy_var_1) -> 
+	happyIn11
+		 (TokKeyword KwData happy_var_1
+	)}
+
+happyReduce_14 = happySpecReduce_1  2# happyReduction_14
+happyReduction_14 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwEta happy_var_1) -> 
+	happyIn11
+		 (TokKeyword KwEta happy_var_1
+	)}
+
+happyReduce_15 = happySpecReduce_1  2# happyReduction_15
+happyReduction_15 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwField happy_var_1) -> 
+	happyIn11
+		 (TokKeyword KwField happy_var_1
+	)}
+
+happyReduce_16 = happySpecReduce_1  2# happyReduction_16
+happyReduction_16 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwForall happy_var_1) -> 
+	happyIn11
+		 (TokKeyword KwForall happy_var_1
+	)}
+
+happyReduce_17 = happySpecReduce_1  2# happyReduction_17
+happyReduction_17 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwHiding happy_var_1) -> 
+	happyIn11
+		 (TokKeyword KwHiding happy_var_1
+	)}
+
+happyReduce_18 = happySpecReduce_1  2# happyReduction_18
+happyReduction_18 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwImport happy_var_1) -> 
+	happyIn11
+		 (TokKeyword KwImport happy_var_1
+	)}
+
+happyReduce_19 = happySpecReduce_1  2# happyReduction_19
+happyReduction_19 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwIn happy_var_1) -> 
+	happyIn11
+		 (TokKeyword KwIn happy_var_1
+	)}
+
+happyReduce_20 = happySpecReduce_1  2# happyReduction_20
+happyReduction_20 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwInductive happy_var_1) -> 
+	happyIn11
+		 (TokKeyword KwInductive happy_var_1
+	)}
+
+happyReduce_21 = happySpecReduce_1  2# happyReduction_21
+happyReduction_21 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwInfix happy_var_1) -> 
+	happyIn11
+		 (TokKeyword KwInfix happy_var_1
+	)}
+
+happyReduce_22 = happySpecReduce_1  2# happyReduction_22
+happyReduction_22 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwInfixL happy_var_1) -> 
+	happyIn11
+		 (TokKeyword KwInfixL happy_var_1
+	)}
+
+happyReduce_23 = happySpecReduce_1  2# happyReduction_23
+happyReduction_23 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwInfixR happy_var_1) -> 
+	happyIn11
+		 (TokKeyword KwInfixR happy_var_1
+	)}
+
+happyReduce_24 = happySpecReduce_1  2# happyReduction_24
+happyReduction_24 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwInstance happy_var_1) -> 
+	happyIn11
+		 (TokKeyword KwInstance happy_var_1
+	)}
+
+happyReduce_25 = happySpecReduce_1  2# happyReduction_25
+happyReduction_25 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwOverlap happy_var_1) -> 
+	happyIn11
+		 (TokKeyword KwOverlap happy_var_1
+	)}
+
+happyReduce_26 = happySpecReduce_1  2# happyReduction_26
+happyReduction_26 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwLet happy_var_1) -> 
+	happyIn11
+		 (TokKeyword KwLet happy_var_1
+	)}
+
+happyReduce_27 = happySpecReduce_1  2# happyReduction_27
+happyReduction_27 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwMacro happy_var_1) -> 
+	happyIn11
+		 (TokKeyword KwMacro happy_var_1
+	)}
+
+happyReduce_28 = happySpecReduce_1  2# happyReduction_28
+happyReduction_28 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwModule happy_var_1) -> 
+	happyIn11
+		 (TokKeyword KwModule happy_var_1
+	)}
+
+happyReduce_29 = happySpecReduce_1  2# happyReduction_29
+happyReduction_29 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwMutual happy_var_1) -> 
+	happyIn11
+		 (TokKeyword KwMutual happy_var_1
+	)}
+
+happyReduce_30 = happySpecReduce_1  2# happyReduction_30
+happyReduction_30 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwNoEta happy_var_1) -> 
+	happyIn11
+		 (TokKeyword KwNoEta happy_var_1
+	)}
+
+happyReduce_31 = happySpecReduce_1  2# happyReduction_31
+happyReduction_31 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwOpen happy_var_1) -> 
+	happyIn11
+		 (TokKeyword KwOpen happy_var_1
+	)}
+
+happyReduce_32 = happySpecReduce_1  2# happyReduction_32
+happyReduction_32 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwPatternSyn happy_var_1) -> 
+	happyIn11
+		 (TokKeyword KwPatternSyn happy_var_1
+	)}
+
+happyReduce_33 = happySpecReduce_1  2# happyReduction_33
+happyReduction_33 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwPostulate happy_var_1) -> 
+	happyIn11
+		 (TokKeyword KwPostulate happy_var_1
+	)}
+
+happyReduce_34 = happySpecReduce_1  2# happyReduction_34
+happyReduction_34 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwPrimitive happy_var_1) -> 
+	happyIn11
+		 (TokKeyword KwPrimitive happy_var_1
+	)}
+
+happyReduce_35 = happySpecReduce_1  2# happyReduction_35
+happyReduction_35 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwPrivate happy_var_1) -> 
+	happyIn11
+		 (TokKeyword KwPrivate happy_var_1
+	)}
+
+happyReduce_36 = happySpecReduce_1  2# happyReduction_36
+happyReduction_36 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwProp happy_var_1) -> 
+	happyIn11
+		 (TokKeyword KwProp happy_var_1
+	)}
+
+happyReduce_37 = happySpecReduce_1  2# happyReduction_37
+happyReduction_37 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwPublic happy_var_1) -> 
+	happyIn11
+		 (TokKeyword KwPublic happy_var_1
+	)}
+
+happyReduce_38 = happySpecReduce_1  2# happyReduction_38
+happyReduction_38 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwQuote happy_var_1) -> 
+	happyIn11
+		 (TokKeyword KwQuote happy_var_1
+	)}
+
+happyReduce_39 = happySpecReduce_1  2# happyReduction_39
+happyReduction_39 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwQuoteContext happy_var_1) -> 
+	happyIn11
+		 (TokKeyword KwQuoteContext happy_var_1
+	)}
+
+happyReduce_40 = happySpecReduce_1  2# happyReduction_40
+happyReduction_40 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwQuoteGoal happy_var_1) -> 
+	happyIn11
+		 (TokKeyword KwQuoteGoal happy_var_1
+	)}
+
+happyReduce_41 = happySpecReduce_1  2# happyReduction_41
+happyReduction_41 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwQuoteTerm happy_var_1) -> 
+	happyIn11
+		 (TokKeyword KwQuoteTerm happy_var_1
+	)}
+
+happyReduce_42 = happySpecReduce_1  2# happyReduction_42
+happyReduction_42 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwRecord happy_var_1) -> 
+	happyIn11
+		 (TokKeyword KwRecord happy_var_1
+	)}
+
+happyReduce_43 = happySpecReduce_1  2# happyReduction_43
+happyReduction_43 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwRenaming happy_var_1) -> 
+	happyIn11
+		 (TokKeyword KwRenaming happy_var_1
+	)}
+
+happyReduce_44 = happySpecReduce_1  2# happyReduction_44
+happyReduction_44 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwRewrite happy_var_1) -> 
+	happyIn11
+		 (TokKeyword KwRewrite happy_var_1
+	)}
+
+happyReduce_45 = happySpecReduce_1  2# happyReduction_45
+happyReduction_45 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwSet happy_var_1) -> 
+	happyIn11
+		 (TokKeyword KwSet happy_var_1
+	)}
+
+happyReduce_46 = happySpecReduce_1  2# happyReduction_46
+happyReduction_46 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwSyntax happy_var_1) -> 
+	happyIn11
+		 (TokKeyword KwSyntax happy_var_1
+	)}
+
+happyReduce_47 = happySpecReduce_1  2# happyReduction_47
+happyReduction_47 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwTactic happy_var_1) -> 
+	happyIn11
+		 (TokKeyword KwTactic happy_var_1
+	)}
+
+happyReduce_48 = happySpecReduce_1  2# happyReduction_48
+happyReduction_48 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwTo happy_var_1) -> 
+	happyIn11
+		 (TokKeyword KwTo happy_var_1
+	)}
+
+happyReduce_49 = happySpecReduce_1  2# happyReduction_49
+happyReduction_49 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwUnquote happy_var_1) -> 
+	happyIn11
+		 (TokKeyword KwUnquote happy_var_1
+	)}
+
+happyReduce_50 = happySpecReduce_1  2# happyReduction_50
+happyReduction_50 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwUnquoteDecl happy_var_1) -> 
+	happyIn11
+		 (TokKeyword KwUnquoteDecl happy_var_1
+	)}
+
+happyReduce_51 = happySpecReduce_1  2# happyReduction_51
+happyReduction_51 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwUnquoteDef happy_var_1) -> 
+	happyIn11
+		 (TokKeyword KwUnquoteDef happy_var_1
+	)}
+
+happyReduce_52 = happySpecReduce_1  2# happyReduction_52
+happyReduction_52 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwUsing happy_var_1) -> 
+	happyIn11
+		 (TokKeyword KwUsing happy_var_1
+	)}
+
+happyReduce_53 = happySpecReduce_1  2# happyReduction_53
+happyReduction_53 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwWhere happy_var_1) -> 
+	happyIn11
+		 (TokKeyword KwWhere happy_var_1
+	)}
+
+happyReduce_54 = happySpecReduce_1  2# happyReduction_54
+happyReduction_54 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwWith happy_var_1) -> 
+	happyIn11
+		 (TokKeyword KwWith happy_var_1
+	)}
+
+happyReduce_55 = happySpecReduce_1  2# happyReduction_55
+happyReduction_55 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwBUILTIN happy_var_1) -> 
+	happyIn11
+		 (TokKeyword KwBUILTIN happy_var_1
+	)}
+
+happyReduce_56 = happySpecReduce_1  2# happyReduction_56
+happyReduction_56 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwCATCHALL happy_var_1) -> 
+	happyIn11
+		 (TokKeyword KwCATCHALL happy_var_1
+	)}
+
+happyReduce_57 = happySpecReduce_1  2# happyReduction_57
+happyReduction_57 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwCOMPILED happy_var_1) -> 
+	happyIn11
+		 (TokKeyword KwCOMPILED happy_var_1
+	)}
+
+happyReduce_58 = happySpecReduce_1  2# happyReduction_58
+happyReduction_58 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwCOMPILED_DATA happy_var_1) -> 
+	happyIn11
+		 (TokKeyword KwCOMPILED_DATA happy_var_1
+	)}
+
+happyReduce_59 = happySpecReduce_1  2# happyReduction_59
+happyReduction_59 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwCOMPILED_DATA_UHC happy_var_1) -> 
+	happyIn11
+		 (TokKeyword KwCOMPILED_DATA_UHC happy_var_1
+	)}
+
+happyReduce_60 = happySpecReduce_1  2# happyReduction_60
+happyReduction_60 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwCOMPILED_DECLARE_DATA happy_var_1) -> 
+	happyIn11
+		 (TokKeyword KwCOMPILED_DECLARE_DATA happy_var_1
+	)}
+
+happyReduce_61 = happySpecReduce_1  2# happyReduction_61
+happyReduction_61 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwCOMPILED_EPIC happy_var_1) -> 
+	happyIn11
+		 (TokKeyword KwCOMPILED_EPIC happy_var_1
+	)}
+
+happyReduce_62 = happySpecReduce_1  2# happyReduction_62
+happyReduction_62 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwCOMPILED_EXPORT happy_var_1) -> 
+	happyIn11
+		 (TokKeyword KwCOMPILED_EXPORT happy_var_1
+	)}
+
+happyReduce_63 = happySpecReduce_1  2# happyReduction_63
+happyReduction_63 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwCOMPILED_JS happy_var_1) -> 
+	happyIn11
+		 (TokKeyword KwCOMPILED_JS happy_var_1
+	)}
+
+happyReduce_64 = happySpecReduce_1  2# happyReduction_64
+happyReduction_64 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwCOMPILED_TYPE happy_var_1) -> 
+	happyIn11
+		 (TokKeyword KwCOMPILED_TYPE happy_var_1
+	)}
+
+happyReduce_65 = happySpecReduce_1  2# happyReduction_65
+happyReduction_65 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwCOMPILED_UHC happy_var_1) -> 
+	happyIn11
+		 (TokKeyword KwCOMPILED_UHC happy_var_1
+	)}
+
+happyReduce_66 = happySpecReduce_1  2# happyReduction_66
+happyReduction_66 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwHASKELL happy_var_1) -> 
+	happyIn11
+		 (TokKeyword KwHASKELL happy_var_1
+	)}
+
+happyReduce_67 = happySpecReduce_1  2# happyReduction_67
+happyReduction_67 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwDISPLAY happy_var_1) -> 
+	happyIn11
+		 (TokKeyword KwDISPLAY happy_var_1
+	)}
+
+happyReduce_68 = happySpecReduce_1  2# happyReduction_68
+happyReduction_68 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwIMPORT happy_var_1) -> 
+	happyIn11
+		 (TokKeyword KwIMPORT happy_var_1
+	)}
+
+happyReduce_69 = happySpecReduce_1  2# happyReduction_69
+happyReduction_69 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwIMPORT_UHC happy_var_1) -> 
+	happyIn11
+		 (TokKeyword KwIMPORT_UHC happy_var_1
+	)}
+
+happyReduce_70 = happySpecReduce_1  2# happyReduction_70
+happyReduction_70 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwIMPOSSIBLE happy_var_1) -> 
+	happyIn11
+		 (TokKeyword KwIMPOSSIBLE happy_var_1
+	)}
+
+happyReduce_71 = happySpecReduce_1  2# happyReduction_71
+happyReduction_71 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwINLINE happy_var_1) -> 
+	happyIn11
+		 (TokKeyword KwINLINE happy_var_1
+	)}
+
+happyReduce_72 = happySpecReduce_1  2# happyReduction_72
+happyReduction_72 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwMEASURE happy_var_1) -> 
+	happyIn11
+		 (TokKeyword KwMEASURE happy_var_1
+	)}
+
+happyReduce_73 = happySpecReduce_1  2# happyReduction_73
+happyReduction_73 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwNO_TERMINATION_CHECK happy_var_1) -> 
+	happyIn11
+		 (TokKeyword KwNO_TERMINATION_CHECK happy_var_1
+	)}
+
+happyReduce_74 = happySpecReduce_1  2# happyReduction_74
+happyReduction_74 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwNO_POSITIVITY_CHECK happy_var_1) -> 
+	happyIn11
+		 (TokKeyword KwNO_POSITIVITY_CHECK happy_var_1
+	)}
+
+happyReduce_75 = happySpecReduce_1  2# happyReduction_75
+happyReduction_75 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwNON_TERMINATING happy_var_1) -> 
+	happyIn11
+		 (TokKeyword KwNON_TERMINATING happy_var_1
+	)}
+
+happyReduce_76 = happySpecReduce_1  2# happyReduction_76
+happyReduction_76 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwOPTIONS happy_var_1) -> 
+	happyIn11
+		 (TokKeyword KwOPTIONS happy_var_1
+	)}
+
+happyReduce_77 = happySpecReduce_1  2# happyReduction_77
+happyReduction_77 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwPOLARITY happy_var_1) -> 
+	happyIn11
+		 (TokKeyword KwPOLARITY happy_var_1
+	)}
+
+happyReduce_78 = happySpecReduce_1  2# happyReduction_78
+happyReduction_78 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwREWRITE happy_var_1) -> 
+	happyIn11
+		 (TokKeyword KwREWRITE happy_var_1
+	)}
+
+happyReduce_79 = happySpecReduce_1  2# happyReduction_79
+happyReduction_79 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwSTATIC happy_var_1) -> 
+	happyIn11
+		 (TokKeyword KwSTATIC happy_var_1
+	)}
+
+happyReduce_80 = happySpecReduce_1  2# happyReduction_80
+happyReduction_80 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwTERMINATING happy_var_1) -> 
+	happyIn11
+		 (TokKeyword KwTERMINATING happy_var_1
+	)}
+
+happyReduce_81 = happySpecReduce_1  2# happyReduction_81
+happyReduction_81 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokSetN happy_var_1) -> 
+	happyIn11
+		 (TokSetN happy_var_1
+	)}
+
+happyReduce_82 = happySpecReduce_1  2# happyReduction_82
+happyReduction_82 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokTeX happy_var_1) -> 
+	happyIn11
+		 (TokTeX happy_var_1
+	)}
+
+happyReduce_83 = happySpecReduce_1  2# happyReduction_83
+happyReduction_83 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokComment happy_var_1) -> 
+	happyIn11
+		 (TokComment happy_var_1
+	)}
+
+happyReduce_84 = happySpecReduce_1  2# happyReduction_84
+happyReduction_84 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymEllipsis happy_var_1) -> 
+	happyIn11
+		 (TokSymbol SymEllipsis happy_var_1
+	)}
+
+happyReduce_85 = happySpecReduce_1  2# happyReduction_85
+happyReduction_85 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymDotDot happy_var_1) -> 
+	happyIn11
+		 (TokSymbol SymDotDot happy_var_1
+	)}
+
+happyReduce_86 = happySpecReduce_1  2# happyReduction_86
+happyReduction_86 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymDot happy_var_1) -> 
+	happyIn11
+		 (TokSymbol SymDot happy_var_1
+	)}
+
+happyReduce_87 = happySpecReduce_1  2# happyReduction_87
+happyReduction_87 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymSemi happy_var_1) -> 
+	happyIn11
+		 (TokSymbol SymSemi happy_var_1
+	)}
+
+happyReduce_88 = happySpecReduce_1  2# happyReduction_88
+happyReduction_88 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymColon happy_var_1) -> 
+	happyIn11
+		 (TokSymbol SymColon happy_var_1
+	)}
+
+happyReduce_89 = happySpecReduce_1  2# happyReduction_89
+happyReduction_89 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymEqual happy_var_1) -> 
+	happyIn11
+		 (TokSymbol SymEqual happy_var_1
+	)}
+
+happyReduce_90 = happySpecReduce_1  2# happyReduction_90
+happyReduction_90 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymUnderscore happy_var_1) -> 
+	happyIn11
+		 (TokSymbol SymUnderscore happy_var_1
+	)}
+
+happyReduce_91 = happySpecReduce_1  2# happyReduction_91
+happyReduction_91 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymQuestionMark happy_var_1) -> 
+	happyIn11
+		 (TokSymbol SymQuestionMark happy_var_1
+	)}
+
+happyReduce_92 = happySpecReduce_1  2# happyReduction_92
+happyReduction_92 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymArrow happy_var_1) -> 
+	happyIn11
+		 (TokSymbol SymArrow happy_var_1
+	)}
+
+happyReduce_93 = happySpecReduce_1  2# happyReduction_93
+happyReduction_93 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymLambda happy_var_1) -> 
+	happyIn11
+		 (TokSymbol SymLambda happy_var_1
+	)}
+
+happyReduce_94 = happySpecReduce_1  2# happyReduction_94
+happyReduction_94 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymAs happy_var_1) -> 
+	happyIn11
+		 (TokSymbol SymAs happy_var_1
+	)}
+
+happyReduce_95 = happySpecReduce_1  2# happyReduction_95
+happyReduction_95 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymBar happy_var_1) -> 
+	happyIn11
+		 (TokSymbol SymBar happy_var_1
+	)}
+
+happyReduce_96 = happySpecReduce_1  2# happyReduction_96
+happyReduction_96 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymOpenParen happy_var_1) -> 
+	happyIn11
+		 (TokSymbol SymOpenParen happy_var_1
+	)}
+
+happyReduce_97 = happySpecReduce_1  2# happyReduction_97
+happyReduction_97 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymCloseParen happy_var_1) -> 
+	happyIn11
+		 (TokSymbol SymCloseParen happy_var_1
+	)}
+
+happyReduce_98 = happySpecReduce_1  2# happyReduction_98
+happyReduction_98 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymOpenIdiomBracket happy_var_1) -> 
+	happyIn11
+		 (TokSymbol SymOpenIdiomBracket happy_var_1
+	)}
+
+happyReduce_99 = happySpecReduce_1  2# happyReduction_99
+happyReduction_99 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymCloseIdiomBracket happy_var_1) -> 
+	happyIn11
+		 (TokSymbol SymCloseIdiomBracket happy_var_1
+	)}
+
+happyReduce_100 = happySpecReduce_1  2# happyReduction_100
+happyReduction_100 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymDoubleOpenBrace happy_var_1) -> 
+	happyIn11
+		 (TokSymbol SymDoubleOpenBrace happy_var_1
+	)}
+
+happyReduce_101 = happySpecReduce_1  2# happyReduction_101
+happyReduction_101 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymDoubleCloseBrace happy_var_1) -> 
+	happyIn11
+		 (TokSymbol SymDoubleCloseBrace happy_var_1
+	)}
+
+happyReduce_102 = happySpecReduce_1  2# happyReduction_102
+happyReduction_102 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymOpenBrace happy_var_1) -> 
+	happyIn11
+		 (TokSymbol SymOpenBrace happy_var_1
+	)}
+
+happyReduce_103 = happySpecReduce_1  2# happyReduction_103
+happyReduction_103 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymCloseBrace happy_var_1) -> 
+	happyIn11
+		 (TokSymbol SymCloseBrace happy_var_1
+	)}
+
+happyReduce_104 = happySpecReduce_1  2# happyReduction_104
+happyReduction_104 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymOpenVirtualBrace happy_var_1) -> 
+	happyIn11
+		 (TokSymbol SymOpenVirtualBrace happy_var_1
+	)}
+
+happyReduce_105 = happySpecReduce_1  2# happyReduction_105
+happyReduction_105 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymCloseVirtualBrace happy_var_1) -> 
+	happyIn11
+		 (TokSymbol SymCloseVirtualBrace happy_var_1
+	)}
+
+happyReduce_106 = happySpecReduce_1  2# happyReduction_106
+happyReduction_106 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymVirtualSemi happy_var_1) -> 
+	happyIn11
+		 (TokSymbol SymVirtualSemi happy_var_1
+	)}
+
+happyReduce_107 = happySpecReduce_1  2# happyReduction_107
+happyReduction_107 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) -> 
+	happyIn11
+		 (TokSymbol SymOpenPragma happy_var_1
+	)}
+
+happyReduce_108 = happySpecReduce_1  2# happyReduction_108
+happyReduction_108 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymClosePragma happy_var_1) -> 
+	happyIn11
+		 (TokSymbol SymClosePragma happy_var_1
+	)}
+
+happyReduce_109 = happySpecReduce_1  2# happyReduction_109
+happyReduction_109 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokId happy_var_1) -> 
+	happyIn11
+		 (TokId happy_var_1
+	)}
+
+happyReduce_110 = happySpecReduce_1  2# happyReduction_110
+happyReduction_110 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokQId happy_var_1) -> 
+	happyIn11
+		 (TokQId happy_var_1
+	)}
+
+happyReduce_111 = happySpecReduce_1  2# happyReduction_111
+happyReduction_111 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokString happy_var_1) -> 
+	happyIn11
+		 (TokString happy_var_1
+	)}
+
+happyReduce_112 = happySpecReduce_1  2# happyReduction_112
+happyReduction_112 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokLiteral happy_var_1) -> 
+	happyIn11
+		 (TokLiteral happy_var_1
+	)}
+
+happyReduce_113 = happySpecReduce_3  3# happyReduction_113
+happyReduction_113 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut127 happy_x_2 of { happy_var_2 -> 
+	happyIn12
+		 (takeOptionsPragmas happy_var_2
+	)}
+
+happyReduce_114 = happySpecReduce_0  4# happyReduction_114
+happyReduction_114  =  happyIn13
+		 (()
+	)
+
+happyReduce_115 = happySpecReduce_1  4# happyReduction_115
+happyReduction_115 happy_x_1
+	 =  happyIn13
+		 (()
+	)
+
+happyReduce_116 = happySpecReduce_1  5# happyReduction_116
+happyReduction_116 happy_x_1
+	 =  happyIn14
+		 (()
+	)
+
+happyReduce_117 = happyMonadReduce 1# 5# happyReduction_117
+happyReduction_117 (happy_x_1 `HappyStk`
+	happyRest) tk
+	 = happyThen (( popContext)
+	) (\r -> happyReturn (happyIn14 r))
+
+happyReduce_118 = happySpecReduce_1  6# happyReduction_118
+happyReduction_118 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymSemi happy_var_1) -> 
+	happyIn15
+		 (happy_var_1
+	)}
+
+happyReduce_119 = happySpecReduce_1  6# happyReduction_119
+happyReduction_119 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymVirtualSemi happy_var_1) -> 
+	happyIn15
+		 (happy_var_1
+	)}
+
+happyReduce_120 = happyMonadReduce 0# 7# happyReduction_120
+happyReduction_120 (happyRest) tk
+	 = happyThen (( pushLexState imp_dir)
+	) (\r -> happyReturn (happyIn16 r))
+
+happyReduce_121 = happyMonadReduce 1# 8# happyReduction_121
+happyReduction_121 (happy_x_1 `HappyStk`
+	happyRest) tk
+	 = happyThen (case happyOutTok happy_x_1 of { (TokLiteral happy_var_1) -> 
+	( case happy_var_1 of {
+                     LitNat _ i -> return i;
+                     _          -> fail $ "Expected integer"
+                   })}
+	) (\r -> happyReturn (happyIn17 r))
+
+happyReduce_122 = happyMonadReduce 1# 9# happyReduction_122
+happyReduction_122 (happy_x_1 `HappyStk`
+	happyRest) tk
+	 = happyThen (case happyOutTok happy_x_1 of { (TokId happy_var_1) -> 
+	( mkName happy_var_1)}
+	) (\r -> happyReturn (happyIn18 r))
+
+happyReduce_123 = happySpecReduce_2  10# happyReduction_123
+happyReduction_123 happy_x_2
+	happy_x_1
+	 =  case happyOut18 happy_x_1 of { happy_var_1 -> 
+	case happyOut19 happy_x_2 of { happy_var_2 -> 
+	happyIn19
+		 (happy_var_1 : happy_var_2
+	)}}
+
+happyReduce_124 = happySpecReduce_1  10# happyReduction_124
+happyReduction_124 happy_x_1
+	 =  case happyOut18 happy_x_1 of { happy_var_1 -> 
+	happyIn19
+		 ([happy_var_1]
+	)}
+
+happyReduce_125 = happySpecReduce_1  11# happyReduction_125
+happyReduction_125 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymDoubleCloseBrace happy_var_1) -> 
+	happyIn20
+		 (getRange happy_var_1
+	)}
+
+happyReduce_126 = happyMonadReduce 2# 11# happyReduction_126
+happyReduction_126 (happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest) tk
+	 = happyThen (case happyOutTok happy_x_1 of { (TokSymbol SymCloseBrace happy_var_1) -> 
+	case happyOutTok happy_x_2 of { (TokSymbol SymCloseBrace happy_var_2) -> 
+	(
+      if posPos (fromJust (rEnd' (getRange happy_var_2))) -
+         posPos (fromJust (rStart' (getRange happy_var_1))) > 2
+      then parseErrorAt (fromJust (rStart' (getRange happy_var_2)))
+         "Expecting '}}', found separated '}'s."
+      else return $ getRange (happy_var_1, happy_var_2))}}
+	) (\r -> happyReturn (happyIn20 r))
+
+happyReduce_127 = happySpecReduce_2  12# happyReduction_127
+happyReduction_127 happy_x_2
+	happy_x_1
+	 =  case happyOut18 happy_x_2 of { happy_var_2 -> 
+	happyIn21
+		 (setRelevance NonStrict $ defaultArg happy_var_2
+	)}
+
+happyReduce_128 = happySpecReduce_2  12# happyReduction_128
+happyReduction_128 happy_x_2
+	happy_x_1
+	 =  case happyOut18 happy_x_2 of { happy_var_2 -> 
+	happyIn21
+		 (setRelevance Irrelevant $ defaultArg happy_var_2
+	)}
+
+happyReduce_129 = happySpecReduce_1  12# happyReduction_129
+happyReduction_129 happy_x_1
+	 =  case happyOut18 happy_x_1 of { happy_var_1 -> 
+	happyIn21
+		 (defaultArg happy_var_1
+	)}
+
+happyReduce_130 = happySpecReduce_2  13# happyReduction_130
+happyReduction_130 happy_x_2
+	happy_x_1
+	 =  case happyOut21 happy_x_1 of { happy_var_1 -> 
+	case happyOut22 happy_x_2 of { happy_var_2 -> 
+	happyIn22
+		 (happy_var_1 : happy_var_2
+	)}}
+
+happyReduce_131 = happySpecReduce_1  13# happyReduction_131
+happyReduction_131 happy_x_1
+	 =  case happyOut21 happy_x_1 of { happy_var_1 -> 
+	happyIn22
+		 ([happy_var_1]
+	)}
+
+happyReduce_132 = happySpecReduce_2  14# happyReduction_132
+happyReduction_132 happy_x_2
+	happy_x_1
+	 =  case happyOut21 happy_x_1 of { happy_var_1 -> 
+	case happyOut23 happy_x_2 of { happy_var_2 -> 
+	happyIn23
+		 (happy_var_1 : happy_var_2
+	)}}
+
+happyReduce_133 = happySpecReduce_1  14# happyReduction_133
+happyReduction_133 happy_x_1
+	 =  case happyOut21 happy_x_1 of { happy_var_1 -> 
+	happyIn23
+		 ([happy_var_1]
+	)}
+
+happyReduce_134 = happyReduce 4# 14# happyReduction_134
+happyReduction_134 (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 happyOut23 happy_x_4 of { happy_var_4 -> 
+	happyIn23
+		 (map makeInstance happy_var_2 ++ happy_var_4
+	) `HappyStk` happyRest}}
+
+happyReduce_135 = happySpecReduce_3  14# happyReduction_135
+happyReduction_135 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut22 happy_x_2 of { happy_var_2 -> 
+	happyIn23
+		 (map makeInstance happy_var_2
+	)}
+
+happyReduce_136 = happyReduce 4# 14# happyReduction_136
+happyReduction_136 (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 happyOut23 happy_x_4 of { happy_var_4 -> 
+	happyIn23
+		 (map hide happy_var_2 ++ happy_var_4
+	) `HappyStk` happyRest}}
+
+happyReduce_137 = happySpecReduce_3  14# happyReduction_137
+happyReduction_137 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut22 happy_x_2 of { happy_var_2 -> 
+	happyIn23
+		 (map hide happy_var_2
+	)}
+
+happyReduce_138 = happyReduce 5# 14# happyReduction_138
+happyReduction_138 (happy_x_5 `HappyStk`
+	happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOut19 happy_x_3 of { happy_var_3 -> 
+	case happyOut23 happy_x_5 of { happy_var_5 -> 
+	happyIn23
+		 (map (hide . setRelevance Irrelevant . defaultArg) happy_var_3 ++ happy_var_5
+	) `HappyStk` happyRest}}
+
+happyReduce_139 = happyReduce 4# 14# happyReduction_139
+happyReduction_139 (happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOut19 happy_x_3 of { happy_var_3 -> 
+	happyIn23
+		 (map (hide . setRelevance Irrelevant . defaultArg) happy_var_3
+	) `HappyStk` happyRest}
+
+happyReduce_140 = happyReduce 5# 14# happyReduction_140
+happyReduction_140 (happy_x_5 `HappyStk`
+	happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOut19 happy_x_3 of { happy_var_3 -> 
+	case happyOut23 happy_x_5 of { happy_var_5 -> 
+	happyIn23
+		 (map (makeInstance . setRelevance Irrelevant . defaultArg) happy_var_3 ++ happy_var_5
+	) `HappyStk` happyRest}}
+
+happyReduce_141 = happyReduce 4# 14# happyReduction_141
+happyReduction_141 (happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOut19 happy_x_3 of { happy_var_3 -> 
+	happyIn23
+		 (map (makeInstance . setRelevance Irrelevant . defaultArg) happy_var_3
+	) `HappyStk` happyRest}
+
+happyReduce_142 = happyReduce 5# 14# happyReduction_142
+happyReduction_142 (happy_x_5 `HappyStk`
+	happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOut19 happy_x_3 of { happy_var_3 -> 
+	case happyOut23 happy_x_5 of { happy_var_5 -> 
+	happyIn23
+		 (map (hide . setRelevance NonStrict . defaultArg) happy_var_3 ++ happy_var_5
+	) `HappyStk` happyRest}}
+
+happyReduce_143 = happyReduce 4# 14# happyReduction_143
+happyReduction_143 (happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOut19 happy_x_3 of { happy_var_3 -> 
+	happyIn23
+		 (map (hide . setRelevance NonStrict . defaultArg) happy_var_3
+	) `HappyStk` happyRest}
+
+happyReduce_144 = happyReduce 5# 14# happyReduction_144
+happyReduction_144 (happy_x_5 `HappyStk`
+	happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOut19 happy_x_3 of { happy_var_3 -> 
+	case happyOut23 happy_x_5 of { happy_var_5 -> 
+	happyIn23
+		 (map (makeInstance . setRelevance NonStrict . defaultArg) happy_var_3 ++ happy_var_5
+	) `HappyStk` happyRest}}
+
+happyReduce_145 = happyReduce 4# 14# happyReduction_145
+happyReduction_145 (happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOut19 happy_x_3 of { happy_var_3 -> 
+	happyIn23
+		 (map (makeInstance . setRelevance NonStrict . defaultArg) happy_var_3
+	) `HappyStk` happyRest}
+
+happyReduce_146 = happyMonadReduce 1# 15# happyReduction_146
+happyReduction_146 (happy_x_1 `HappyStk`
+	happyRest) tk
+	 = happyThen (case happyOutTok happy_x_1 of { (TokQId happy_var_1) -> 
+	( mkQName happy_var_1)}
+	) (\r -> happyReturn (happyIn24 r))
+
+happyReduce_147 = happySpecReduce_1  15# happyReduction_147
+happyReduction_147 happy_x_1
+	 =  case happyOut18 happy_x_1 of { happy_var_1 -> 
+	happyIn24
+		 (QName happy_var_1
+	)}
+
+happyReduce_148 = happySpecReduce_1  16# happyReduction_148
+happyReduction_148 happy_x_1
+	 =  case happyOut24 happy_x_1 of { happy_var_1 -> 
+	happyIn25
+		 (happy_var_1
+	)}
+
+happyReduce_149 = happySpecReduce_1  17# happyReduction_149
+happyReduction_149 happy_x_1
+	 =  case happyOut18 happy_x_1 of { happy_var_1 -> 
+	happyIn26
+		 (happy_var_1
+	)}
+
+happyReduce_150 = happySpecReduce_1  17# happyReduction_150
+happyReduction_150 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymUnderscore happy_var_1) -> 
+	happyIn26
+		 (Name (getRange happy_var_1) [Hole]
+	)}
+
+happyReduce_151 = happySpecReduce_2  18# happyReduction_151
+happyReduction_151 happy_x_2
+	happy_x_1
+	 =  case happyOut26 happy_x_1 of { happy_var_1 -> 
+	case happyOut27 happy_x_2 of { happy_var_2 -> 
+	happyIn27
+		 (happy_var_1 : happy_var_2
+	)}}
+
+happyReduce_152 = happySpecReduce_1  18# happyReduction_152
+happyReduction_152 happy_x_1
+	 =  case happyOut26 happy_x_1 of { happy_var_1 -> 
+	happyIn27
+		 ([happy_var_1]
+	)}
+
+happyReduce_153 = happySpecReduce_1  19# happyReduction_153
+happyReduction_153 happy_x_1
+	 =  case happyOut29 happy_x_1 of { happy_var_1 -> 
+	happyIn28
+		 (case happy_var_1 of
+      Left ns -> ns
+      Right _ -> fail $ "expected sequence of bound identifiers, not absurd pattern"
+	)}
+
+happyReduce_154 = happyMonadReduce 1# 20# happyReduction_154
+happyReduction_154 (happy_x_1 `HappyStk`
+	happyRest) tk
+	 = happyThen (case happyOut40 happy_x_1 of { happy_var_1 -> 
+	(
+    let getName :: Expr -> Maybe Name
+        getName (Ident (QName x)) = Just x
+        getName (Underscore r _)  = Just (Name r [Hole])
+        getName _                 = Nothing
+
+        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 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 (happyIn29 r))
+
+happyReduce_155 = happyMonadReduce 1# 21# happyReduction_155
+happyReduction_155 (happy_x_1 `HappyStk`
+	happyRest) tk
+	 = happyThen (case happyOut40 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 (happyIn30 r))
+
+happyReduce_156 = happySpecReduce_0  22# happyReduction_156
+happyReduction_156  =  happyIn31
+		 ([]
+	)
+
+happyReduce_157 = happySpecReduce_2  22# happyReduction_157
+happyReduction_157 happy_x_2
+	happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokString happy_var_1) -> 
+	case happyOut31 happy_x_2 of { happy_var_2 -> 
+	happyIn31
+		 (snd happy_var_1 : happy_var_2
+	)}}
+
+happyReduce_158 = happySpecReduce_1  23# happyReduction_158
+happyReduction_158 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokString happy_var_1) -> 
+	happyIn32
+		 (snd happy_var_1
+	)}
+
+happyReduce_159 = happySpecReduce_0  24# happyReduction_159
+happyReduction_159  =  happyIn33
+		 ([]
+	)
+
+happyReduce_160 = happySpecReduce_2  24# happyReduction_160
+happyReduction_160 happy_x_2
+	happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokString happy_var_1) -> 
+	case happyOut33 happy_x_2 of { happy_var_2 -> 
+	happyIn33
+		 (happy_var_1 : happy_var_2
+	)}}
+
+happyReduce_161 = happyMonadReduce 1# 25# happyReduction_161
+happyReduction_161 (happy_x_1 `HappyStk`
+	happyRest) tk
+	 = happyThen (case happyOutTok happy_x_1 of { (TokString happy_var_1) -> 
+	( mkName happy_var_1)}
+	) (\r -> happyReturn (happyIn34 r))
+
+happyReduce_162 = happyMonadReduce 1# 26# happyReduction_162
+happyReduction_162 (happy_x_1 `HappyStk`
+	happyRest) tk
+	 = happyThen (case happyOutTok happy_x_1 of { (TokString happy_var_1) -> 
+	( pragmaQName happy_var_1)}
+	) (\r -> happyReturn (happyIn35 r))
+
+happyReduce_163 = happyMonadReduce 1# 27# happyReduction_163
+happyReduction_163 (happy_x_1 `HappyStk`
+	happyRest) tk
+	 = happyThen (case happyOut33 happy_x_1 of { happy_var_1 -> 
+	( mapM pragmaQName happy_var_1)}
+	) (\r -> happyReturn (happyIn36 r))
+
+happyReduce_164 = happySpecReduce_2  28# happyReduction_164
+happyReduction_164 happy_x_2
+	happy_x_1
+	 =  case happyOut54 happy_x_1 of { happy_var_1 -> 
+	case happyOut37 happy_x_2 of { happy_var_2 -> 
+	happyIn37
+		 (Pi happy_var_1 happy_var_2
+	)}}
+
+happyReduce_165 = happySpecReduce_3  28# happyReduction_165
+happyReduction_165 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut43 happy_x_1 of { happy_var_1 -> 
+	case happyOutTok happy_x_2 of { (TokSymbol SymArrow happy_var_2) -> 
+	case happyOut37 happy_x_3 of { happy_var_3 -> 
+	happyIn37
+		 (Fun (getRange (happy_var_1,happy_var_2,happy_var_3))
+                                              (RawApp (getRange happy_var_1) happy_var_1)
+                                              happy_var_3
+	)}}}
+
+happyReduce_166 = happySpecReduce_3  28# happyReduction_166
+happyReduction_166 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut38 happy_x_1 of { happy_var_1 -> 
+	case happyOutTok happy_x_2 of { (TokSymbol SymEqual happy_var_2) -> 
+	case happyOut37 happy_x_3 of { happy_var_3 -> 
+	happyIn37
+		 (Equal (getRange (happy_var_1, happy_var_2, happy_var_3)) happy_var_1 happy_var_3
+	)}}}
+
+happyReduce_167 = happySpecReduce_1  28# happyReduction_167
+happyReduction_167 happy_x_1
+	 =  case happyOut38 happy_x_1 of { happy_var_1 -> 
+	happyIn37
+		 (happy_var_1
+	)}
+
+happyReduce_168 = happyMonadReduce 1# 29# happyReduction_168
+happyReduction_168 (happy_x_1 `HappyStk`
+	happyRest) tk
+	 = happyThen (case happyOut39 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 (happyIn38 r))
+
+happyReduce_169 = happySpecReduce_3  30# happyReduction_169
+happyReduction_169 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut43 happy_x_1 of { happy_var_1 -> 
+	case happyOut39 happy_x_3 of { happy_var_3 -> 
+	happyIn39
+		 (RawApp (getRange happy_var_1) happy_var_1 :  happy_var_3
+	)}}
+
+happyReduce_170 = happySpecReduce_1  30# happyReduction_170
+happyReduction_170 happy_x_1
+	 =  case happyOut40 happy_x_1 of { happy_var_1 -> 
+	happyIn39
+		 ([RawApp (getRange happy_var_1) happy_var_1]
+	)}
+
+happyReduce_171 = happySpecReduce_1  31# happyReduction_171
+happyReduction_171 happy_x_1
+	 =  case happyOut41 happy_x_1 of { happy_var_1 -> 
+	happyIn40
+		 ([happy_var_1]
+	)}
+
+happyReduce_172 = happySpecReduce_2  31# happyReduction_172
+happyReduction_172 happy_x_2
+	happy_x_1
+	 =  case happyOut46 happy_x_1 of { happy_var_1 -> 
+	case happyOut40 happy_x_2 of { happy_var_2 -> 
+	happyIn40
+		 (happy_var_1 : happy_var_2
+	)}}
+
+happyReduce_173 = happySpecReduce_3  32# happyReduction_173
+happyReduction_173 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymLambda happy_var_1) -> 
+	case happyOut60 happy_x_2 of { happy_var_2 -> 
+	case happyOut37 happy_x_3 of { happy_var_3 -> 
+	happyIn41
+		 (Lam (getRange (happy_var_1,happy_var_2,happy_var_3)) happy_var_2 happy_var_3
+	)}}}
+
+happyReduce_174 = happySpecReduce_1  32# happyReduction_174
+happyReduction_174 happy_x_1
+	 =  case happyOut42 happy_x_1 of { happy_var_1 -> 
+	happyIn41
+		 (happy_var_1
+	)}
+
+happyReduce_175 = happySpecReduce_3  32# happyReduction_175
+happyReduction_175 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut68 happy_x_2 of { happy_var_2 -> 
+	case happyOut37 happy_x_3 of { happy_var_3 -> 
+	happyIn41
+		 (forallPi happy_var_2 happy_var_3
+	)}}
+
+happyReduce_176 = happyReduce 4# 32# happyReduction_176
+happyReduction_176 (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 happyOut167 happy_x_2 of { happy_var_2 -> 
+	case happyOutTok happy_x_3 of { (TokKeyword KwIn happy_var_3) -> 
+	case happyOut37 happy_x_4 of { happy_var_4 -> 
+	happyIn41
+		 (Let (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4)) happy_var_2 happy_var_4
+	) `HappyStk` happyRest}}}}
+
+happyReduce_177 = happySpecReduce_1  32# happyReduction_177
+happyReduction_177 happy_x_1
+	 =  case happyOut46 happy_x_1 of { happy_var_1 -> 
+	happyIn41
+		 (happy_var_1
+	)}
+
+happyReduce_178 = happyReduce 4# 32# happyReduction_178
+happyReduction_178 (happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOutTok happy_x_1 of { (TokKeyword KwQuoteGoal happy_var_1) -> 
+	case happyOut18 happy_x_2 of { happy_var_2 -> 
+	case happyOutTok happy_x_3 of { (TokKeyword KwIn happy_var_3) -> 
+	case happyOut37 happy_x_4 of { happy_var_4 -> 
+	happyIn41
+		 (QuoteGoal (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4)) happy_var_2 happy_var_4
+	) `HappyStk` happyRest}}}}
+
+happyReduce_179 = happySpecReduce_2  32# happyReduction_179
+happyReduction_179 happy_x_2
+	happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwTactic happy_var_1) -> 
+	case happyOut43 happy_x_2 of { happy_var_2 -> 
+	happyIn41
+		 (Tactic (getRange (happy_var_1, happy_var_2)) (RawApp (getRange happy_var_2) happy_var_2) []
+	)}}
+
+happyReduce_180 = happyReduce 4# 32# happyReduction_180
+happyReduction_180 (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 happyOut43 happy_x_2 of { happy_var_2 -> 
+	case happyOutTok happy_x_3 of { (TokSymbol SymBar happy_var_3) -> 
+	case happyOut39 happy_x_4 of { happy_var_4 -> 
+	happyIn41
+		 (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_181 = happyReduce 4# 33# happyReduction_181
+happyReduction_181 (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 happyOut67 happy_x_3 of { happy_var_3 -> 
+	case happyOutTok happy_x_4 of { (TokSymbol SymCloseBrace happy_var_4) -> 
+	happyIn42
+		 (ExtendedLam (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4)) (reverse happy_var_3)
+	) `HappyStk` happyRest}}}}
+
+happyReduce_182 = happyReduce 5# 33# happyReduction_182
+happyReduction_182 (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 { (TokSymbol SymLambda happy_var_1) -> 
+	case happyOutTok happy_x_2 of { (TokKeyword KwWhere happy_var_2) -> 
+	case happyOut67 happy_x_4 of { happy_var_4 -> 
+	happyIn42
+		 (ExtendedLam (getRange (happy_var_1, happy_var_2, happy_var_4)) (reverse happy_var_4)
+	) `HappyStk` happyRest}}}
+
+happyReduce_183 = happyMonadReduce 2# 33# happyReduction_183
+happyReduction_183 (happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest) tk
+	 = happyThen (case happyOutTok happy_x_1 of { (TokSymbol SymLambda happy_var_1) -> 
+	case happyOut61 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)
+                                                         where r = fuseRange happy_var_1 bs
+                                       Right es -> do -- it is of the form @\ { p1 ... () }@
+                                                     p <- exprToLHS (RawApp (getRange es) es);
+                                                     return $ ExtendedLam (fuseRange happy_var_1 es)
+                                                                     [(p [] [], AbsurdRHS, NoWhere, False)])}}
+	) (\r -> happyReturn (happyIn42 r))
+
+happyReduce_184 = happySpecReduce_1  34# happyReduction_184
+happyReduction_184 happy_x_1
+	 =  case happyOut46 happy_x_1 of { happy_var_1 -> 
+	happyIn43
+		 ([happy_var_1]
+	)}
+
+happyReduce_185 = happySpecReduce_2  34# happyReduction_185
+happyReduction_185 happy_x_2
+	happy_x_1
+	 =  case happyOut46 happy_x_1 of { happy_var_1 -> 
+	case happyOut43 happy_x_2 of { happy_var_2 -> 
+	happyIn43
+		 (happy_var_1 : happy_var_2
+	)}}
+
+happyReduce_186 = happySpecReduce_3  35# happyReduction_186
+happyReduction_186 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymOpenBrace happy_var_1) -> 
+	case happyOut37 happy_x_2 of { happy_var_2 -> 
+	case happyOutTok happy_x_3 of { (TokSymbol SymCloseBrace happy_var_3) -> 
+	happyIn44
+		 (HiddenArg (getRange (happy_var_1,happy_var_2,happy_var_3)) (maybeNamed happy_var_2)
+	)}}}
+
+happyReduce_187 = happySpecReduce_2  35# happyReduction_187
+happyReduction_187 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) -> 
+	happyIn44
+		 (let r = fuseRange happy_var_1 happy_var_2 in HiddenArg r $ unnamed $ Absurd r
+	)}}
+
+happyReduce_188 = happySpecReduce_1  36# happyReduction_188
+happyReduction_188 happy_x_1
+	 =  case happyOut24 happy_x_1 of { happy_var_1 -> 
+	happyIn45
+		 (Ident happy_var_1
+	)}
+
+happyReduce_189 = happySpecReduce_1  36# happyReduction_189
+happyReduction_189 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokLiteral happy_var_1) -> 
+	happyIn45
+		 (Lit happy_var_1
+	)}
+
+happyReduce_190 = happySpecReduce_1  36# happyReduction_190
+happyReduction_190 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymQuestionMark happy_var_1) -> 
+	happyIn45
+		 (QuestionMark (getRange happy_var_1) Nothing
+	)}
+
+happyReduce_191 = happySpecReduce_1  36# happyReduction_191
+happyReduction_191 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymUnderscore happy_var_1) -> 
+	happyIn45
+		 (Underscore (getRange happy_var_1) Nothing
+	)}
+
+happyReduce_192 = happySpecReduce_1  36# happyReduction_192
+happyReduction_192 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwProp happy_var_1) -> 
+	happyIn45
+		 (Prop (getRange happy_var_1)
+	)}
+
+happyReduce_193 = happySpecReduce_1  36# happyReduction_193
+happyReduction_193 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwSet happy_var_1) -> 
+	happyIn45
+		 (Set (getRange happy_var_1)
+	)}
+
+happyReduce_194 = happySpecReduce_1  36# happyReduction_194
+happyReduction_194 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwQuote happy_var_1) -> 
+	happyIn45
+		 (Quote (getRange happy_var_1)
+	)}
+
+happyReduce_195 = happySpecReduce_1  36# happyReduction_195
+happyReduction_195 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwQuoteTerm happy_var_1) -> 
+	happyIn45
+		 (QuoteTerm (getRange happy_var_1)
+	)}
+
+happyReduce_196 = happySpecReduce_1  36# happyReduction_196
+happyReduction_196 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwQuoteContext happy_var_1) -> 
+	happyIn45
+		 (QuoteContext (getRange happy_var_1)
+	)}
+
+happyReduce_197 = happySpecReduce_1  36# happyReduction_197
+happyReduction_197 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwUnquote happy_var_1) -> 
+	happyIn45
+		 (Unquote (getRange happy_var_1)
+	)}
+
+happyReduce_198 = happySpecReduce_1  36# happyReduction_198
+happyReduction_198 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokSetN happy_var_1) -> 
+	happyIn45
+		 (SetN (getRange (fst happy_var_1)) (snd happy_var_1)
+	)}
+
+happyReduce_199 = happySpecReduce_3  36# happyReduction_199
+happyReduction_199 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymDoubleOpenBrace happy_var_1) -> 
+	case happyOut37 happy_x_2 of { happy_var_2 -> 
+	case happyOut20 happy_x_3 of { happy_var_3 -> 
+	happyIn45
+		 (InstanceArg (getRange (happy_var_1,happy_var_2,happy_var_3))
+                                                          (maybeNamed happy_var_2)
+	)}}}
+
+happyReduce_200 = happySpecReduce_3  36# happyReduction_200
+happyReduction_200 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymOpenParen happy_var_1) -> 
+	case happyOut37 happy_x_2 of { happy_var_2 -> 
+	case happyOutTok happy_x_3 of { (TokSymbol SymCloseParen happy_var_3) -> 
+	happyIn45
+		 (Paren (getRange (happy_var_1,happy_var_2,happy_var_3)) happy_var_2
+	)}}}
+
+happyReduce_201 = happySpecReduce_3  36# happyReduction_201
+happyReduction_201 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymOpenIdiomBracket happy_var_1) -> 
+	case happyOut37 happy_x_2 of { happy_var_2 -> 
+	case happyOutTok happy_x_3 of { (TokSymbol SymCloseIdiomBracket happy_var_3) -> 
+	happyIn45
+		 (IdiomBrackets (getRange (happy_var_1,happy_var_2,happy_var_3)) happy_var_2
+	)}}}
+
+happyReduce_202 = happySpecReduce_2  36# happyReduction_202
+happyReduction_202 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) -> 
+	happyIn45
+		 (Absurd (fuseRange happy_var_1 happy_var_2)
+	)}}
+
+happyReduce_203 = happySpecReduce_2  36# happyReduction_203
+happyReduction_203 happy_x_2
+	happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymDoubleOpenBrace happy_var_1) -> 
+	case happyOut20 happy_x_2 of { happy_var_2 -> 
+	happyIn45
+		 (let r = fuseRange happy_var_1 happy_var_2 in InstanceArg r $ unnamed $ Absurd r
+	)}}
+
+happyReduce_204 = happySpecReduce_3  36# happyReduction_204
+happyReduction_204 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut18 happy_x_1 of { happy_var_1 -> 
+	case happyOutTok happy_x_2 of { (TokSymbol SymAs happy_var_2) -> 
+	case happyOut46 happy_x_3 of { happy_var_3 -> 
+	happyIn45
+		 (As (getRange (happy_var_1,happy_var_2,happy_var_3)) happy_var_1 happy_var_3
+	)}}}
+
+happyReduce_205 = happySpecReduce_2  36# happyReduction_205
+happyReduction_205 happy_x_2
+	happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymDot happy_var_1) -> 
+	case happyOut46 happy_x_2 of { happy_var_2 -> 
+	happyIn45
+		 (Dot (fuseRange happy_var_1 happy_var_2) happy_var_2
+	)}}
+
+happyReduce_206 = happyReduce 4# 36# happyReduction_206
+happyReduction_206 (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 happyOut47 happy_x_3 of { happy_var_3 -> 
+	case happyOutTok happy_x_4 of { (TokSymbol SymCloseBrace happy_var_4) -> 
+	happyIn45
+		 (Rec (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4)) happy_var_3
+	) `HappyStk` happyRest}}}}
+
+happyReduce_207 = happyReduce 5# 36# happyReduction_207
+happyReduction_207 (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 happyOut45 happy_x_2 of { happy_var_2 -> 
+	case happyOutTok happy_x_3 of { (TokSymbol SymOpenBrace happy_var_3) -> 
+	case happyOut51 happy_x_4 of { happy_var_4 -> 
+	case happyOutTok happy_x_5 of { (TokSymbol SymCloseBrace happy_var_5) -> 
+	happyIn45
+		 (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_208 = happySpecReduce_1  37# happyReduction_208
+happyReduction_208 happy_x_1
+	 =  case happyOut44 happy_x_1 of { happy_var_1 -> 
+	happyIn46
+		 (happy_var_1
+	)}
+
+happyReduce_209 = happySpecReduce_1  37# happyReduction_209
+happyReduction_209 happy_x_1
+	 =  case happyOut45 happy_x_1 of { happy_var_1 -> 
+	happyIn46
+		 (happy_var_1
+	)}
+
+happyReduce_210 = happySpecReduce_0  38# happyReduction_210
+happyReduction_210  =  happyIn47
+		 ([]
+	)
+
+happyReduce_211 = happySpecReduce_1  38# happyReduction_211
+happyReduction_211 happy_x_1
+	 =  case happyOut48 happy_x_1 of { happy_var_1 -> 
+	happyIn47
+		 (happy_var_1
+	)}
+
+happyReduce_212 = happySpecReduce_1  39# happyReduction_212
+happyReduction_212 happy_x_1
+	 =  case happyOut49 happy_x_1 of { happy_var_1 -> 
+	happyIn48
+		 ([happy_var_1]
+	)}
+
+happyReduce_213 = happySpecReduce_3  39# happyReduction_213
+happyReduction_213 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut49 happy_x_1 of { happy_var_1 -> 
+	case happyOut48 happy_x_3 of { happy_var_3 -> 
+	happyIn48
+		 (happy_var_1 : happy_var_3
+	)}}
+
+happyReduce_214 = happySpecReduce_1  40# happyReduction_214
+happyReduction_214 happy_x_1
+	 =  case happyOut53 happy_x_1 of { happy_var_1 -> 
+	happyIn49
+		 (Left  happy_var_1
+	)}
+
+happyReduce_215 = happySpecReduce_1  40# happyReduction_215
+happyReduction_215 happy_x_1
+	 =  case happyOut50 happy_x_1 of { happy_var_1 -> 
+	happyIn49
+		 (Right happy_var_1
+	)}
+
+happyReduce_216 = happySpecReduce_3  41# happyReduction_216
+happyReduction_216 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut25 happy_x_1 of { happy_var_1 -> 
+	case happyOut122 happy_x_2 of { happy_var_2 -> 
+	case happyOut73 happy_x_3 of { happy_var_3 -> 
+	happyIn50
+		 (ModuleAssignment happy_var_1 happy_var_2 happy_var_3
+	)}}}
+
+happyReduce_217 = happySpecReduce_0  42# happyReduction_217
+happyReduction_217  =  happyIn51
+		 ([]
+	)
+
+happyReduce_218 = happySpecReduce_1  42# happyReduction_218
+happyReduction_218 happy_x_1
+	 =  case happyOut52 happy_x_1 of { happy_var_1 -> 
+	happyIn51
+		 (happy_var_1
+	)}
+
+happyReduce_219 = happySpecReduce_1  43# happyReduction_219
+happyReduction_219 happy_x_1
+	 =  case happyOut53 happy_x_1 of { happy_var_1 -> 
+	happyIn52
+		 ([happy_var_1]
+	)}
+
+happyReduce_220 = happySpecReduce_3  43# happyReduction_220
+happyReduction_220 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut53 happy_x_1 of { happy_var_1 -> 
+	case happyOut52 happy_x_3 of { happy_var_3 -> 
+	happyIn52
+		 (happy_var_1 : happy_var_3
+	)}}
+
+happyReduce_221 = happySpecReduce_3  44# happyReduction_221
+happyReduction_221 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut18 happy_x_1 of { happy_var_1 -> 
+	case happyOut37 happy_x_3 of { happy_var_3 -> 
+	happyIn53
+		 (FieldAssignment happy_var_1 happy_var_3
+	)}}
+
+happyReduce_222 = happySpecReduce_2  45# happyReduction_222
+happyReduction_222 happy_x_2
+	happy_x_1
+	 =  case happyOut55 happy_x_1 of { happy_var_1 -> 
+	happyIn54
+		 (happy_var_1
+	)}
+
+happyReduce_223 = happySpecReduce_1  46# happyReduction_223
+happyReduction_223 happy_x_1
+	 =  case happyOut56 happy_x_1 of { happy_var_1 -> 
+	happyIn55
+		 ({-TeleBind-} happy_var_1
+	)}
+
+happyReduce_224 = happySpecReduce_2  47# happyReduction_224
+happyReduction_224 happy_x_2
+	happy_x_1
+	 =  case happyOut57 happy_x_1 of { happy_var_1 -> 
+	case happyOut56 happy_x_2 of { happy_var_2 -> 
+	happyIn56
+		 (happy_var_1 : happy_var_2
+	)}}
+
+happyReduce_225 = happySpecReduce_1  47# happyReduction_225
+happyReduction_225 happy_x_1
+	 =  case happyOut57 happy_x_1 of { happy_var_1 -> 
+	happyIn56
+		 ([happy_var_1]
+	)}
+
+happyReduce_226 = happyReduce 4# 48# happyReduction_226
+happyReduction_226 (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 happyOut59 happy_x_3 of { happy_var_3 -> 
+	case happyOutTok happy_x_4 of { (TokSymbol SymCloseParen happy_var_4) -> 
+	happyIn57
+		 (setRange (getRange (happy_var_2,happy_var_3,happy_var_4)) $
+                             setRelevance Irrelevant happy_var_3
+	) `HappyStk` happyRest}}}
+
+happyReduce_227 = happyReduce 4# 48# happyReduction_227
+happyReduction_227 (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 happyOut58 happy_x_3 of { happy_var_3 -> 
+	case happyOutTok happy_x_4 of { (TokSymbol SymCloseBrace happy_var_4) -> 
+	happyIn57
+		 (setRange (getRange (happy_var_2,happy_var_3,happy_var_4)) $
+                             setHiding Hidden $
+                             setRelevance Irrelevant happy_var_3
+	) `HappyStk` happyRest}}}
+
+happyReduce_228 = happyReduce 4# 48# happyReduction_228
+happyReduction_228 (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 happyOut58 happy_x_3 of { happy_var_3 -> 
+	case happyOut20 happy_x_4 of { happy_var_4 -> 
+	happyIn57
+		 (setRange (getRange (happy_var_2,happy_var_3,happy_var_4)) $
+                             setHiding Instance $
+                             setRelevance Irrelevant happy_var_3
+	) `HappyStk` happyRest}}}
+
+happyReduce_229 = happyReduce 4# 48# happyReduction_229
+happyReduction_229 (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 happyOut59 happy_x_3 of { happy_var_3 -> 
+	case happyOutTok happy_x_4 of { (TokSymbol SymCloseParen happy_var_4) -> 
+	happyIn57
+		 (setRange (getRange (happy_var_2,happy_var_3,happy_var_4)) $
+                             setRelevance NonStrict happy_var_3
+	) `HappyStk` happyRest}}}
+
+happyReduce_230 = happyReduce 4# 48# happyReduction_230
+happyReduction_230 (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 happyOut58 happy_x_3 of { happy_var_3 -> 
+	case happyOutTok happy_x_4 of { (TokSymbol SymCloseBrace happy_var_4) -> 
+	happyIn57
+		 (setRange (getRange (happy_var_2,happy_var_3,happy_var_4)) $
+                             setHiding Hidden $
+                             setRelevance NonStrict happy_var_3
+	) `HappyStk` happyRest}}}
+
+happyReduce_231 = happyReduce 4# 48# happyReduction_231
+happyReduction_231 (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 happyOut58 happy_x_3 of { happy_var_3 -> 
+	case happyOut20 happy_x_4 of { happy_var_4 -> 
+	happyIn57
+		 (setRange (getRange (happy_var_2,happy_var_3,happy_var_4)) $
+                             setHiding Instance $
+                             setRelevance NonStrict happy_var_3
+	) `HappyStk` happyRest}}}
+
+happyReduce_232 = happySpecReduce_3  48# happyReduction_232
+happyReduction_232 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymOpenParen happy_var_1) -> 
+	case happyOut59 happy_x_2 of { happy_var_2 -> 
+	case happyOutTok happy_x_3 of { (TokSymbol SymCloseParen happy_var_3) -> 
+	happyIn57
+		 (setRange (getRange (happy_var_1,happy_var_2,happy_var_3)) happy_var_2
+	)}}}
+
+happyReduce_233 = happySpecReduce_3  48# happyReduction_233
+happyReduction_233 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymDoubleOpenBrace happy_var_1) -> 
+	case happyOut58 happy_x_2 of { happy_var_2 -> 
+	case happyOut20 happy_x_3 of { happy_var_3 -> 
+	happyIn57
+		 (setRange (getRange (happy_var_1,happy_var_2,happy_var_3)) $
+                             setHiding Instance happy_var_2
+	)}}}
+
+happyReduce_234 = happySpecReduce_3  48# happyReduction_234
+happyReduction_234 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymOpenBrace happy_var_1) -> 
+	case happyOut58 happy_x_2 of { happy_var_2 -> 
+	case happyOutTok happy_x_3 of { (TokSymbol SymCloseBrace happy_var_3) -> 
+	happyIn57
+		 (setRange (getRange (happy_var_1,happy_var_2,happy_var_3)) $
+                             setHiding Hidden happy_var_2
+	)}}}
+
+happyReduce_235 = happySpecReduce_3  48# happyReduction_235
+happyReduction_235 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymOpenParen happy_var_1) -> 
+	case happyOut121 happy_x_2 of { happy_var_2 -> 
+	case happyOutTok happy_x_3 of { (TokSymbol SymCloseParen happy_var_3) -> 
+	happyIn57
+		 (tLet (getRange (happy_var_1,happy_var_3)) happy_var_2
+	)}}}
+
+happyReduce_236 = happyReduce 4# 48# happyReduction_236
+happyReduction_236 (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 happyOut167 happy_x_3 of { happy_var_3 -> 
+	case happyOutTok happy_x_4 of { (TokSymbol SymCloseParen happy_var_4) -> 
+	happyIn57
+		 (tLet (getRange (happy_var_1,happy_var_4)) happy_var_3
+	) `HappyStk` happyRest}}}
+
+happyReduce_237 = happySpecReduce_3  49# happyReduction_237
+happyReduction_237 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut28 happy_x_1 of { happy_var_1 -> 
+	case happyOutTok happy_x_2 of { (TokSymbol SymColon happy_var_2) -> 
+	case happyOut37 happy_x_3 of { happy_var_3 -> 
+	happyIn58
+		 (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_238 = happySpecReduce_3  50# happyReduction_238
+happyReduction_238 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut30 happy_x_1 of { happy_var_1 -> 
+	case happyOutTok happy_x_2 of { (TokSymbol SymColon happy_var_2) -> 
+	case happyOut37 happy_x_3 of { happy_var_3 -> 
+	happyIn59
+		 (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_239 = happyMonadReduce 2# 51# happyReduction_239
+happyReduction_239 (happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest) tk
+	 = happyThen (case happyOut62 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 (happyIn60 r))
+
+happyReduce_240 = happyMonadReduce 1# 52# happyReduction_240
+happyReduction_240 (happy_x_1 `HappyStk`
+	happyRest) tk
+	 = happyThen (case happyOut63 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)
+                   _           -> parseError "Unsupported variant of lambda"
+      Right es -> return $ Right es)}
+	) (\r -> happyReturn (happyIn61 r))
+
+happyReduce_241 = happySpecReduce_2  53# happyReduction_241
+happyReduction_241 happy_x_2
+	happy_x_1
+	 =  case happyOut71 happy_x_1 of { happy_var_1 -> 
+	case happyOut62 happy_x_2 of { happy_var_2 -> 
+	happyIn62
+		 (map Right happy_var_1 ++ happy_var_2
+	)}}
+
+happyReduce_242 = happySpecReduce_2  53# happyReduction_242
+happyReduction_242 happy_x_2
+	happy_x_1
+	 =  case happyOut57 happy_x_1 of { happy_var_1 -> 
+	case happyOut62 happy_x_2 of { happy_var_2 -> 
+	happyIn62
+		 (Right (DomainFull happy_var_1) : happy_var_2
+	)}}
+
+happyReduce_243 = happySpecReduce_1  53# happyReduction_243
+happyReduction_243 happy_x_1
+	 =  case happyOut71 happy_x_1 of { happy_var_1 -> 
+	happyIn62
+		 (map Right happy_var_1
+	)}
+
+happyReduce_244 = happySpecReduce_1  53# happyReduction_244
+happyReduction_244 happy_x_1
+	 =  case happyOut57 happy_x_1 of { happy_var_1 -> 
+	happyIn62
+		 ([Right $ DomainFull happy_var_1]
+	)}
+
+happyReduce_245 = happySpecReduce_2  53# happyReduction_245
+happyReduction_245 happy_x_2
+	happy_x_1
+	 =  happyIn62
+		 ([Left NotHidden]
+	)
+
+happyReduce_246 = happySpecReduce_2  53# happyReduction_246
+happyReduction_246 happy_x_2
+	happy_x_1
+	 =  happyIn62
+		 ([Left Hidden]
+	)
+
+happyReduce_247 = happySpecReduce_2  53# happyReduction_247
+happyReduction_247 happy_x_2
+	happy_x_1
+	 =  happyIn62
+		 ([Left Instance]
+	)
+
+happyReduce_248 = happySpecReduce_2  54# happyReduction_248
+happyReduction_248 happy_x_2
+	happy_x_1
+	 =  case happyOut71 happy_x_1 of { happy_var_1 -> 
+	case happyOut62 happy_x_2 of { happy_var_2 -> 
+	happyIn63
+		 (Left $ map Right happy_var_1 ++ happy_var_2
+	)}}
+
+happyReduce_249 = happySpecReduce_2  54# happyReduction_249
+happyReduction_249 happy_x_2
+	happy_x_1
+	 =  case happyOut57 happy_x_1 of { happy_var_1 -> 
+	case happyOut62 happy_x_2 of { happy_var_2 -> 
+	happyIn63
+		 (Left $ Right (DomainFull happy_var_1) : happy_var_2
+	)}}
+
+happyReduce_250 = happySpecReduce_1  54# happyReduction_250
+happyReduction_250 happy_x_1
+	 =  case happyOut72 happy_x_1 of { happy_var_1 -> 
+	happyIn63
+		 (case happy_var_1 of
+                                    Left lb -> Left $ map Right lb
+                                    Right es -> Right es
+	)}
+
+happyReduce_251 = happySpecReduce_1  54# happyReduction_251
+happyReduction_251 happy_x_1
+	 =  case happyOut57 happy_x_1 of { happy_var_1 -> 
+	happyIn63
+		 (Left [Right $ DomainFull happy_var_1]
+	)}
+
+happyReduce_252 = happySpecReduce_2  54# happyReduction_252
+happyReduction_252 happy_x_2
+	happy_x_1
+	 =  happyIn63
+		 (Left [Left NotHidden]
+	)
+
+happyReduce_253 = happySpecReduce_2  54# happyReduction_253
+happyReduction_253 happy_x_2
+	happy_x_1
+	 =  happyIn63
+		 (Left [Left Hidden]
+	)
+
+happyReduce_254 = happySpecReduce_2  54# happyReduction_254
+happyReduction_254 happy_x_2
+	happy_x_1
+	 =  happyIn63
+		 (Left [Left Instance]
+	)
+
+happyReduce_255 = happyMonadReduce 3# 55# happyReduction_255
+happyReduction_255 (happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest) tk
+	 = happyThen (case happyOut43 happy_x_1 of { happy_var_1 -> 
+	case happyOut37 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, False))}}
+	) (\r -> happyReturn (happyIn64 r))
+
+happyReduce_256 = happyMonadReduce 4# 55# happyReduction_256
+happyReduction_256 (happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest) tk
+	 = happyThen (case happyOut43 happy_x_2 of { happy_var_2 -> 
+	case happyOut37 happy_x_4 of { happy_var_4 -> 
+	( do
+      p <- exprToLHS (RawApp (getRange happy_var_2) happy_var_2) ;
+      return (p [] [], RHS happy_var_4, NoWhere, True))}}
+	) (\r -> happyReturn (happyIn64 r))
+
+happyReduce_257 = happyMonadReduce 1# 56# happyReduction_257
+happyReduction_257 (happy_x_1 `HappyStk`
+	happyRest) tk
+	 = happyThen (case happyOut40 happy_x_1 of { happy_var_1 -> 
+	( do
+      p <- exprToLHS (RawApp (getRange happy_var_1) happy_var_1);
+      return (p [] [], AbsurdRHS, NoWhere, False))}
+	) (\r -> happyReturn (happyIn65 r))
+
+happyReduce_258 = happyMonadReduce 2# 56# happyReduction_258
+happyReduction_258 (happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest) tk
+	 = happyThen (case happyOut40 happy_x_2 of { happy_var_2 -> 
+	( do
+      p <- exprToLHS (RawApp (getRange happy_var_2) happy_var_2);
+      return (p [] [], AbsurdRHS, NoWhere, True))}
+	) (\r -> happyReturn (happyIn65 r))
+
+happyReduce_259 = happySpecReduce_1  57# happyReduction_259
+happyReduction_259 happy_x_1
+	 =  case happyOut64 happy_x_1 of { happy_var_1 -> 
+	happyIn66
+		 (happy_var_1
+	)}
+
+happyReduce_260 = happySpecReduce_1  57# happyReduction_260
+happyReduction_260 happy_x_1
+	 =  case happyOut65 happy_x_1 of { happy_var_1 -> 
+	happyIn66
+		 (happy_var_1
+	)}
+
+happyReduce_261 = happySpecReduce_3  58# happyReduction_261
+happyReduction_261 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut67 happy_x_1 of { happy_var_1 -> 
+	case happyOut66 happy_x_3 of { happy_var_3 -> 
+	happyIn67
+		 (happy_var_3 : happy_var_1
+	)}}
+
+happyReduce_262 = happySpecReduce_3  58# happyReduction_262
+happyReduction_262 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut65 happy_x_1 of { happy_var_1 -> 
+	case happyOut66 happy_x_3 of { happy_var_3 -> 
+	happyIn67
+		 ([happy_var_3, happy_var_1]
+	)}}
+
+happyReduce_263 = happySpecReduce_1  58# happyReduction_263
+happyReduction_263 happy_x_1
+	 =  case happyOut64 happy_x_1 of { happy_var_1 -> 
+	happyIn67
+		 ([happy_var_1]
+	)}
+
+happyReduce_264 = happySpecReduce_2  59# happyReduction_264
+happyReduction_264 happy_x_2
+	happy_x_1
+	 =  case happyOut69 happy_x_1 of { happy_var_1 -> 
+	happyIn68
+		 (happy_var_1
+	)}
+
+happyReduce_265 = happySpecReduce_2  60# happyReduction_265
+happyReduction_265 happy_x_2
+	happy_x_1
+	 =  case happyOut71 happy_x_1 of { happy_var_1 -> 
+	case happyOut69 happy_x_2 of { happy_var_2 -> 
+	happyIn69
+		 (happy_var_1 ++ happy_var_2
+	)}}
+
+happyReduce_266 = happySpecReduce_2  60# happyReduction_266
+happyReduction_266 happy_x_2
+	happy_x_1
+	 =  case happyOut57 happy_x_1 of { happy_var_1 -> 
+	case happyOut69 happy_x_2 of { happy_var_2 -> 
+	happyIn69
+		 (DomainFull happy_var_1 : happy_var_2
+	)}}
+
+happyReduce_267 = happySpecReduce_1  60# happyReduction_267
+happyReduction_267 happy_x_1
+	 =  case happyOut71 happy_x_1 of { happy_var_1 -> 
+	happyIn69
+		 (happy_var_1
+	)}
+
+happyReduce_268 = happySpecReduce_1  60# happyReduction_268
+happyReduction_268 happy_x_1
+	 =  case happyOut57 happy_x_1 of { happy_var_1 -> 
+	happyIn69
+		 ([DomainFull happy_var_1]
+	)}
+
+happyReduce_269 = happySpecReduce_2  61# happyReduction_269
+happyReduction_269 happy_x_2
+	happy_x_1
+	 =  case happyOut71 happy_x_1 of { happy_var_1 -> 
+	case happyOut70 happy_x_2 of { happy_var_2 -> 
+	happyIn70
+		 (happy_var_1 ++ happy_var_2
+	)}}
+
+happyReduce_270 = happySpecReduce_2  61# happyReduction_270
+happyReduction_270 happy_x_2
+	happy_x_1
+	 =  case happyOut57 happy_x_1 of { happy_var_1 -> 
+	case happyOut70 happy_x_2 of { happy_var_2 -> 
+	happyIn70
+		 (DomainFull happy_var_1 : happy_var_2
+	)}}
+
+happyReduce_271 = happySpecReduce_0  61# happyReduction_271
+happyReduction_271  =  happyIn70
+		 ([]
+	)
+
+happyReduce_272 = happySpecReduce_1  62# happyReduction_272
+happyReduction_272 happy_x_1
+	 =  case happyOut72 happy_x_1 of { happy_var_1 -> 
+	happyIn71
+		 (case happy_var_1 of
+                             Left lbs -> lbs
+                             Right _ -> fail "expected sequence of bound identifiers, not absurd pattern"
+	)}
+
+happyReduce_273 = happySpecReduce_1  63# happyReduction_273
+happyReduction_273 happy_x_1
+	 =  case happyOut26 happy_x_1 of { happy_var_1 -> 
+	happyIn72
+		 (Left [DomainFree defaultArgInfo $ mkBoundName_ happy_var_1]
+	)}
+
+happyReduce_274 = happySpecReduce_2  63# happyReduction_274
+happyReduction_274 happy_x_2
+	happy_x_1
+	 =  case happyOut26 happy_x_2 of { happy_var_2 -> 
+	happyIn72
+		 (Left [DomainFree (setRelevance Irrelevant $ defaultArgInfo) $ mkBoundName_ happy_var_2]
+	)}
+
+happyReduce_275 = happySpecReduce_2  63# happyReduction_275
+happyReduction_275 happy_x_2
+	happy_x_1
+	 =  case happyOut26 happy_x_2 of { happy_var_2 -> 
+	happyIn72
+		 (Left [DomainFree (setRelevance NonStrict $ defaultArgInfo) $ mkBoundName_ happy_var_2]
+	)}
+
+happyReduce_276 = happySpecReduce_3  63# happyReduction_276
+happyReduction_276 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut29 happy_x_2 of { happy_var_2 -> 
+	happyIn72
+		 (mapLeft (map (DomainFree (setHiding Hidden $ defaultArgInfo) . mkBoundName_)) happy_var_2
+	)}
+
+happyReduce_277 = happySpecReduce_3  63# happyReduction_277
+happyReduction_277 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut28 happy_x_2 of { happy_var_2 -> 
+	happyIn72
+		 (Left $ map (DomainFree (setHiding Instance $ defaultArgInfo) . mkBoundName_) happy_var_2
+	)}
+
+happyReduce_278 = happyReduce 4# 63# happyReduction_278
+happyReduction_278 (happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOut28 happy_x_3 of { happy_var_3 -> 
+	happyIn72
+		 (Left $ map (DomainFree (setHiding Hidden $ setRelevance Irrelevant $ defaultArgInfo) . mkBoundName_) happy_var_3
+	) `HappyStk` happyRest}
+
+happyReduce_279 = happyReduce 4# 63# happyReduction_279
+happyReduction_279 (happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOut28 happy_x_3 of { happy_var_3 -> 
+	happyIn72
+		 (Left $ map (DomainFree (setHiding Instance $ setRelevance Irrelevant $ defaultArgInfo) . mkBoundName_) happy_var_3
+	) `HappyStk` happyRest}
+
+happyReduce_280 = happyReduce 4# 63# happyReduction_280
+happyReduction_280 (happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOut28 happy_x_3 of { happy_var_3 -> 
+	happyIn72
+		 (Left $ map (DomainFree (setHiding Hidden $ setRelevance NonStrict $ defaultArgInfo) . mkBoundName_) happy_var_3
+	) `HappyStk` happyRest}
+
+happyReduce_281 = happyReduce 4# 63# happyReduction_281
+happyReduction_281 (happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOut28 happy_x_3 of { happy_var_3 -> 
+	happyIn72
+		 (Left $ map (DomainFree  (setHiding Instance $ setRelevance NonStrict $ defaultArgInfo) . mkBoundName_) happy_var_3
+	) `HappyStk` happyRest}
+
+happyReduce_282 = happyMonadReduce 1# 64# happyReduction_282
+happyReduction_282 (happy_x_1 `HappyStk`
+	happyRest) tk
+	 = happyThen (case happyOut74 happy_x_1 of { happy_var_1 -> 
+	( mergeImportDirectives happy_var_1)}
+	) (\r -> happyReturn (happyIn73 r))
+
+happyReduce_283 = happySpecReduce_2  65# happyReduction_283
+happyReduction_283 happy_x_2
+	happy_x_1
+	 =  case happyOut75 happy_x_1 of { happy_var_1 -> 
+	case happyOut74 happy_x_2 of { happy_var_2 -> 
+	happyIn74
+		 (happy_var_1 : happy_var_2
+	)}}
+
+happyReduce_284 = happySpecReduce_0  65# happyReduction_284
+happyReduction_284  =  happyIn74
+		 ([]
+	)
+
+happyReduce_285 = happySpecReduce_1  66# happyReduction_285
+happyReduction_285 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwPublic happy_var_1) -> 
+	happyIn75
+		 (defaultImportDir { importDirRange = getRange happy_var_1, publicOpen = True }
+	)}
+
+happyReduce_286 = happySpecReduce_1  66# happyReduction_286
+happyReduction_286 happy_x_1
+	 =  case happyOut76 happy_x_1 of { happy_var_1 -> 
+	happyIn75
+		 (defaultImportDir { importDirRange = snd happy_var_1, using    = fst happy_var_1 }
+	)}
+
+happyReduce_287 = happySpecReduce_1  66# happyReduction_287
+happyReduction_287 happy_x_1
+	 =  case happyOut77 happy_x_1 of { happy_var_1 -> 
+	happyIn75
+		 (defaultImportDir { importDirRange = snd happy_var_1, hiding   = fst happy_var_1 }
+	)}
+
+happyReduce_288 = happySpecReduce_1  66# happyReduction_288
+happyReduction_288 happy_x_1
+	 =  case happyOut78 happy_x_1 of { happy_var_1 -> 
+	happyIn75
+		 (defaultImportDir { importDirRange = snd happy_var_1, impRenaming = fst happy_var_1 }
+	)}
+
+happyReduce_289 = happyReduce 4# 67# happyReduction_289
+happyReduction_289 (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 happyOut83 happy_x_3 of { happy_var_3 -> 
+	case happyOutTok happy_x_4 of { (TokSymbol SymCloseParen happy_var_4) -> 
+	happyIn76
+		 ((Using happy_var_3 , getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4))
+	) `HappyStk` happyRest}}}}
+
+happyReduce_290 = happyReduce 4# 68# happyReduction_290
+happyReduction_290 (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 happyOut83 happy_x_3 of { happy_var_3 -> 
+	case happyOutTok happy_x_4 of { (TokSymbol SymCloseParen happy_var_4) -> 
+	happyIn77
+		 ((happy_var_3 , getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4))
+	) `HappyStk` happyRest}}}}
+
+happyReduce_291 = happyReduce 4# 69# happyReduction_291
+happyReduction_291 (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 happyOut79 happy_x_3 of { happy_var_3 -> 
+	case happyOutTok happy_x_4 of { (TokSymbol SymCloseParen happy_var_4) -> 
+	happyIn78
+		 ((happy_var_3 , getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4))
+	) `HappyStk` happyRest}}}}
+
+happyReduce_292 = happySpecReduce_3  69# happyReduction_292
+happyReduction_292 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) -> 
+	happyIn78
+		 (([] , getRange (happy_var_1,happy_var_2,happy_var_3))
+	)}}}
+
+happyReduce_293 = happySpecReduce_3  70# happyReduction_293
+happyReduction_293 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut80 happy_x_1 of { happy_var_1 -> 
+	case happyOut79 happy_x_3 of { happy_var_3 -> 
+	happyIn79
+		 (happy_var_1 : happy_var_3
+	)}}
+
+happyReduce_294 = happySpecReduce_1  70# happyReduction_294
+happyReduction_294 happy_x_1
+	 =  case happyOut80 happy_x_1 of { happy_var_1 -> 
+	happyIn79
+		 ([happy_var_1]
+	)}
+
+happyReduce_295 = happySpecReduce_3  71# happyReduction_295
+happyReduction_295 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut81 happy_x_1 of { happy_var_1 -> 
+	case happyOutTok happy_x_2 of { (TokKeyword KwTo happy_var_2) -> 
+	case happyOut18 happy_x_3 of { happy_var_3 -> 
+	happyIn80
+		 (Renaming happy_var_1 (setImportedName happy_var_1 happy_var_3) (getRange happy_var_2)
+	)}}}
+
+happyReduce_296 = happySpecReduce_2  72# happyReduction_296
+happyReduction_296 happy_x_2
+	happy_x_1
+	 =  case happyOut18 happy_x_2 of { happy_var_2 -> 
+	happyIn81
+		 (ImportedName happy_var_2
+	)}
+
+happyReduce_297 = happySpecReduce_3  72# happyReduction_297
+happyReduction_297 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut18 happy_x_3 of { happy_var_3 -> 
+	happyIn81
+		 (ImportedModule happy_var_3
+	)}
+
+happyReduce_298 = happySpecReduce_1  73# happyReduction_298
+happyReduction_298 happy_x_1
+	 =  case happyOut18 happy_x_1 of { happy_var_1 -> 
+	happyIn82
+		 (ImportedName happy_var_1
+	)}
+
+happyReduce_299 = happySpecReduce_2  73# happyReduction_299
+happyReduction_299 happy_x_2
+	happy_x_1
+	 =  case happyOut18 happy_x_2 of { happy_var_2 -> 
+	happyIn82
+		 (ImportedModule happy_var_2
+	)}
+
+happyReduce_300 = happySpecReduce_0  74# happyReduction_300
+happyReduction_300  =  happyIn83
+		 ([]
+	)
+
+happyReduce_301 = happySpecReduce_1  74# happyReduction_301
+happyReduction_301 happy_x_1
+	 =  case happyOut84 happy_x_1 of { happy_var_1 -> 
+	happyIn83
+		 (happy_var_1
+	)}
+
+happyReduce_302 = happySpecReduce_1  75# happyReduction_302
+happyReduction_302 happy_x_1
+	 =  case happyOut82 happy_x_1 of { happy_var_1 -> 
+	happyIn84
+		 ([happy_var_1]
+	)}
+
+happyReduce_303 = happySpecReduce_3  75# happyReduction_303
+happyReduction_303 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut82 happy_x_1 of { happy_var_1 -> 
+	case happyOut84 happy_x_3 of { happy_var_3 -> 
+	happyIn84
+		 (happy_var_1 : happy_var_3
+	)}}
+
+happyReduce_304 = happyMonadReduce 3# 76# happyReduction_304
+happyReduction_304 (happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest) tk
+	 = happyThen (case happyOut38 happy_x_1 of { happy_var_1 -> 
+	case happyOut88 happy_x_2 of { happy_var_2 -> 
+	case happyOut87 happy_x_3 of { happy_var_3 -> 
+	( exprToLHS happy_var_1 >>= \p -> return (p happy_var_2 happy_var_3))}}}
+	) (\r -> happyReturn (happyIn85 r))
+
+happyReduce_305 = happyReduce 4# 76# happyReduction_305
+happyReduction_305 (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 happyOut86 happy_x_2 of { happy_var_2 -> 
+	case happyOut88 happy_x_3 of { happy_var_3 -> 
+	case happyOut87 happy_x_4 of { happy_var_4 -> 
+	happyIn85
+		 (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_306 = happySpecReduce_0  77# happyReduction_306
+happyReduction_306  =  happyIn86
+		 ([]
+	)
+
+happyReduce_307 = happyMonadReduce 3# 77# happyReduction_307
+happyReduction_307 (happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest) tk
+	 = happyThen (case happyOut43 happy_x_2 of { happy_var_2 -> 
+	case happyOut86 happy_x_3 of { happy_var_3 -> 
+	( exprToPattern (RawApp (getRange happy_var_2) happy_var_2) >>= \p ->
+                   return (p : happy_var_3))}}
+	) (\r -> happyReturn (happyIn86 r))
+
+happyReduce_308 = happySpecReduce_0  78# happyReduction_308
+happyReduction_308  =  happyIn87
+		 ([]
+	)
+
+happyReduce_309 = happySpecReduce_2  78# happyReduction_309
+happyReduction_309 happy_x_2
+	happy_x_1
+	 =  case happyOut37 happy_x_2 of { happy_var_2 -> 
+	happyIn87
+		 (case happy_var_2 of { WithApp _ e es -> e : es; e -> [e] }
+	)}
+
+happyReduce_310 = happySpecReduce_0  79# happyReduction_310
+happyReduction_310  =  happyIn88
+		 ([]
+	)
+
+happyReduce_311 = happySpecReduce_2  79# happyReduction_311
+happyReduction_311 happy_x_2
+	happy_x_1
+	 =  case happyOut38 happy_x_2 of { happy_var_2 -> 
+	happyIn88
+		 (case happy_var_2 of { WithApp _ e es -> e : es; e -> [e] }
+	)}
+
+happyReduce_312 = happySpecReduce_0  80# happyReduction_312
+happyReduction_312  =  happyIn89
+		 (NoWhere
+	)
+
+happyReduce_313 = happySpecReduce_2  80# happyReduction_313
+happyReduction_313 happy_x_2
+	happy_x_1
+	 =  case happyOut168 happy_x_2 of { happy_var_2 -> 
+	happyIn89
+		 (AnyWhere happy_var_2
+	)}
+
+happyReduce_314 = happyReduce 4# 80# happyReduction_314
+happyReduction_314 (happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOut18 happy_x_2 of { happy_var_2 -> 
+	case happyOut168 happy_x_4 of { happy_var_4 -> 
+	happyIn89
+		 (SomeWhere happy_var_2 PublicAccess happy_var_4
+	) `HappyStk` happyRest}}
+
+happyReduce_315 = happyReduce 4# 80# happyReduction_315
+happyReduction_315 (happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOut126 happy_x_2 of { happy_var_2 -> 
+	case happyOut168 happy_x_4 of { happy_var_4 -> 
+	happyIn89
+		 (SomeWhere happy_var_2 PublicAccess happy_var_4
+	) `HappyStk` happyRest}}
+
+happyReduce_316 = happySpecReduce_2  81# happyReduction_316
+happyReduction_316 happy_x_2
+	happy_x_1
+	 =  case happyOut37 happy_x_1 of { happy_var_1 -> 
+	case happyOut89 happy_x_2 of { happy_var_2 -> 
+	happyIn90
+		 (ExprWhere happy_var_1 happy_var_2
+	)}}
+
+happyReduce_317 = happySpecReduce_1  82# happyReduction_317
+happyReduction_317 happy_x_1
+	 =  case happyOut102 happy_x_1 of { happy_var_1 -> 
+	happyIn91
+		 (happy_var_1
+	)}
+
+happyReduce_318 = happySpecReduce_1  82# happyReduction_318
+happyReduction_318 happy_x_1
+	 =  case happyOut94 happy_x_1 of { happy_var_1 -> 
+	happyIn91
+		 (happy_var_1
+	)}
+
+happyReduce_319 = happySpecReduce_1  82# happyReduction_319
+happyReduction_319 happy_x_1
+	 =  case happyOut96 happy_x_1 of { happy_var_1 -> 
+	happyIn91
+		 ([happy_var_1]
+	)}
+
+happyReduce_320 = happySpecReduce_1  82# happyReduction_320
+happyReduction_320 happy_x_1
+	 =  case happyOut97 happy_x_1 of { happy_var_1 -> 
+	happyIn91
+		 ([happy_var_1]
+	)}
+
+happyReduce_321 = happySpecReduce_1  82# happyReduction_321
+happyReduction_321 happy_x_1
+	 =  case happyOut98 happy_x_1 of { happy_var_1 -> 
+	happyIn91
+		 ([happy_var_1]
+	)}
+
+happyReduce_322 = happySpecReduce_1  82# happyReduction_322
+happyReduction_322 happy_x_1
+	 =  case happyOut99 happy_x_1 of { happy_var_1 -> 
+	happyIn91
+		 ([happy_var_1]
+	)}
+
+happyReduce_323 = happySpecReduce_1  82# happyReduction_323
+happyReduction_323 happy_x_1
+	 =  case happyOut101 happy_x_1 of { happy_var_1 -> 
+	happyIn91
+		 ([happy_var_1]
+	)}
+
+happyReduce_324 = happySpecReduce_1  82# happyReduction_324
+happyReduction_324 happy_x_1
+	 =  case happyOut103 happy_x_1 of { happy_var_1 -> 
+	happyIn91
+		 ([happy_var_1]
+	)}
+
+happyReduce_325 = happySpecReduce_1  82# happyReduction_325
+happyReduction_325 happy_x_1
+	 =  case happyOut104 happy_x_1 of { happy_var_1 -> 
+	happyIn91
+		 ([happy_var_1]
+	)}
+
+happyReduce_326 = happySpecReduce_1  82# happyReduction_326
+happyReduction_326 happy_x_1
+	 =  case happyOut105 happy_x_1 of { happy_var_1 -> 
+	happyIn91
+		 ([happy_var_1]
+	)}
+
+happyReduce_327 = happySpecReduce_1  82# happyReduction_327
+happyReduction_327 happy_x_1
+	 =  case happyOut106 happy_x_1 of { happy_var_1 -> 
+	happyIn91
+		 ([happy_var_1]
+	)}
+
+happyReduce_328 = happySpecReduce_1  82# happyReduction_328
+happyReduction_328 happy_x_1
+	 =  case happyOut107 happy_x_1 of { happy_var_1 -> 
+	happyIn91
+		 ([happy_var_1]
+	)}
+
+happyReduce_329 = happySpecReduce_1  82# happyReduction_329
+happyReduction_329 happy_x_1
+	 =  case happyOut108 happy_x_1 of { happy_var_1 -> 
+	happyIn91
+		 ([happy_var_1]
+	)}
+
+happyReduce_330 = happySpecReduce_1  82# happyReduction_330
+happyReduction_330 happy_x_1
+	 =  case happyOut109 happy_x_1 of { happy_var_1 -> 
+	happyIn91
+		 ([happy_var_1]
+	)}
+
+happyReduce_331 = happySpecReduce_1  82# happyReduction_331
+happyReduction_331 happy_x_1
+	 =  case happyOut121 happy_x_1 of { happy_var_1 -> 
+	happyIn91
+		 (happy_var_1
+	)}
+
+happyReduce_332 = happySpecReduce_1  82# happyReduction_332
+happyReduction_332 happy_x_1
+	 =  case happyOut124 happy_x_1 of { happy_var_1 -> 
+	happyIn91
+		 ([happy_var_1]
+	)}
+
+happyReduce_333 = happySpecReduce_1  82# happyReduction_333
+happyReduction_333 happy_x_1
+	 =  case happyOut125 happy_x_1 of { happy_var_1 -> 
+	happyIn91
+		 ([happy_var_1]
+	)}
+
+happyReduce_334 = happySpecReduce_1  82# happyReduction_334
+happyReduction_334 happy_x_1
+	 =  case happyOut128 happy_x_1 of { happy_var_1 -> 
+	happyIn91
+		 ([happy_var_1]
+	)}
+
+happyReduce_335 = happySpecReduce_1  82# happyReduction_335
+happyReduction_335 happy_x_1
+	 =  case happyOut111 happy_x_1 of { happy_var_1 -> 
+	happyIn91
+		 ([happy_var_1]
+	)}
+
+happyReduce_336 = happySpecReduce_1  82# happyReduction_336
+happyReduction_336 happy_x_1
+	 =  case happyOut112 happy_x_1 of { happy_var_1 -> 
+	happyIn91
+		 ([happy_var_1]
+	)}
+
+happyReduce_337 = happySpecReduce_1  82# happyReduction_337
+happyReduction_337 happy_x_1
+	 =  case happyOut110 happy_x_1 of { happy_var_1 -> 
+	happyIn91
+		 ([happy_var_1]
+	)}
+
+happyReduce_338 = happySpecReduce_3  83# happyReduction_338
+happyReduction_338 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut19 happy_x_1 of { happy_var_1 -> 
+	case happyOut37 happy_x_3 of { happy_var_3 -> 
+	happyIn92
+		 (map (\ x -> TypeSig defaultArgInfo x happy_var_3) happy_var_1
+	)}}
+
+happyReduce_339 = happySpecReduce_3  84# happyReduction_339
+happyReduction_339 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut23 happy_x_1 of { happy_var_1 -> 
+	case happyOut37 happy_x_3 of { happy_var_3 -> 
+	happyIn93
+		 (map (fmap (\ x -> TypeSig defaultArgInfo x happy_var_3)) happy_var_1
+	)}}
+
+happyReduce_340 = happyReduce 4# 84# happyReduction_340
+happyReduction_340 (happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOut23 happy_x_2 of { happy_var_2 -> 
+	case happyOut37 happy_x_4 of { happy_var_4 -> 
+	happyIn93
+		 (let setOverlap (Arg i x) = Arg i{ argInfoOverlappable = True } x in
+      map (setOverlap . fmap (\ x -> TypeSig defaultArgInfo x happy_var_4)) happy_var_2
+	) `HappyStk` happyRest}}
+
+happyReduce_341 = happySpecReduce_2  84# happyReduction_341
+happyReduction_341 happy_x_2
+	happy_x_1
+	 =  case happyOut160 happy_x_2 of { happy_var_2 -> 
+	happyIn93
+		 (let
+      setInstance (TypeSig info x t) = TypeSig (setHiding Instance info) x t
+      setInstance _ = __IMPOSSIBLE__ in
+    map (fmap setInstance) happy_var_2
+	)}
+
+happyReduce_342 = happyMonadReduce 3# 85# happyReduction_342
+happyReduction_342 (happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest) tk
+	 = happyThen (case happyOut85 happy_x_1 of { happy_var_1 -> 
+	case happyOut95 happy_x_2 of { happy_var_2 -> 
+	case happyOut89 happy_x_3 of { happy_var_3 -> 
+	( funClauseOrTypeSigs happy_var_1 happy_var_2 happy_var_3)}}}
+	) (\r -> happyReturn (happyIn94 r))
+
+happyReduce_343 = happySpecReduce_2  86# happyReduction_343
+happyReduction_343 happy_x_2
+	happy_x_1
+	 =  case happyOut37 happy_x_2 of { happy_var_2 -> 
+	happyIn95
+		 (JustRHS (RHS happy_var_2)
+	)}
+
+happyReduce_344 = happySpecReduce_2  86# happyReduction_344
+happyReduction_344 happy_x_2
+	happy_x_1
+	 =  case happyOut37 happy_x_2 of { happy_var_2 -> 
+	happyIn95
+		 (TypeSigsRHS happy_var_2
+	)}
+
+happyReduce_345 = happySpecReduce_0  86# happyReduction_345
+happyReduction_345  =  happyIn95
+		 (JustRHS AbsurdRHS
+	)
+
+happyReduce_346 = happyReduce 7# 87# happyReduction_346
+happyReduction_346 (happy_x_7 `HappyStk`
+	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 happyOutTok happy_x_1 of { (TokKeyword KwData happy_var_1) -> 
+	case happyOut18 happy_x_2 of { happy_var_2 -> 
+	case happyOut70 happy_x_3 of { happy_var_3 -> 
+	case happyOutTok happy_x_4 of { (TokSymbol SymColon happy_var_4) -> 
+	case happyOut37 happy_x_5 of { happy_var_5 -> 
+	case happyOutTok happy_x_6 of { (TokKeyword KwWhere happy_var_6) -> 
+	case happyOut168 happy_x_7 of { happy_var_7 -> 
+	happyIn96
+		 (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_347 = happyReduce 7# 87# happyReduction_347
+happyReduction_347 (happy_x_7 `HappyStk`
+	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 happyOutTok happy_x_1 of { (TokKeyword KwCoData happy_var_1) -> 
+	case happyOut18 happy_x_2 of { happy_var_2 -> 
+	case happyOut70 happy_x_3 of { happy_var_3 -> 
+	case happyOutTok happy_x_4 of { (TokSymbol SymColon happy_var_4) -> 
+	case happyOut37 happy_x_5 of { happy_var_5 -> 
+	case happyOutTok happy_x_6 of { (TokKeyword KwWhere happy_var_6) -> 
+	case happyOut168 happy_x_7 of { happy_var_7 -> 
+	happyIn96
+		 (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_348 = happyReduce 5# 87# 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)
+	 = case happyOutTok happy_x_1 of { (TokKeyword KwData happy_var_1) -> 
+	case happyOut18 happy_x_2 of { happy_var_2 -> 
+	case happyOut70 happy_x_3 of { happy_var_3 -> 
+	case happyOutTok happy_x_4 of { (TokKeyword KwWhere happy_var_4) -> 
+	case happyOut168 happy_x_5 of { happy_var_5 -> 
+	happyIn96
+		 (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_349 = happyReduce 5# 87# happyReduction_349
+happyReduction_349 (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 KwCoData happy_var_1) -> 
+	case happyOut18 happy_x_2 of { happy_var_2 -> 
+	case happyOut70 happy_x_3 of { happy_var_3 -> 
+	case happyOutTok happy_x_4 of { (TokKeyword KwWhere happy_var_4) -> 
+	case happyOut168 happy_x_5 of { happy_var_5 -> 
+	happyIn96
+		 (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_350 = happyReduce 5# 88# happyReduction_350
+happyReduction_350 (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 KwData happy_var_1) -> 
+	case happyOut18 happy_x_2 of { happy_var_2 -> 
+	case happyOut70 happy_x_3 of { happy_var_3 -> 
+	case happyOutTok happy_x_4 of { (TokSymbol SymColon happy_var_4) -> 
+	case happyOut37 happy_x_5 of { happy_var_5 -> 
+	happyIn97
+		 (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_351 = happyMonadReduce 7# 89# happyReduction_351
+happyReduction_351 (happy_x_7 `HappyStk`
+	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) tk
+	 = happyThen (case happyOutTok happy_x_1 of { (TokKeyword KwRecord happy_var_1) -> 
+	case happyOut45 happy_x_2 of { happy_var_2 -> 
+	case happyOut70 happy_x_3 of { happy_var_3 -> 
+	case happyOutTok happy_x_4 of { (TokSymbol SymColon happy_var_4) -> 
+	case happyOut37 happy_x_5 of { happy_var_5 -> 
+	case happyOutTok happy_x_6 of { (TokKeyword KwWhere happy_var_6) -> 
+	case happyOut162 happy_x_7 of { happy_var_7 -> 
+	( exprToName happy_var_2 >>= \ n -> let ((x,y,z),ds) = happy_var_7 in 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 x y z happy_var_3 (Just happy_var_5) ds)}}}}}}}
+	) (\r -> happyReturn (happyIn98 r))
+
+happyReduce_352 = happyMonadReduce 5# 89# happyReduction_352
+happyReduction_352 (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 happyOut45 happy_x_2 of { happy_var_2 -> 
+	case happyOut70 happy_x_3 of { happy_var_3 -> 
+	case happyOutTok happy_x_4 of { (TokKeyword KwWhere happy_var_4) -> 
+	case happyOut162 happy_x_5 of { happy_var_5 -> 
+	( exprToName happy_var_2 >>= \ n -> let ((x,y,z),ds) = happy_var_5 in return $ Record (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4,happy_var_5)) n x y z happy_var_3 Nothing ds)}}}}}
+	) (\r -> happyReturn (happyIn98 r))
+
+happyReduce_353 = happyMonadReduce 5# 90# happyReduction_353
+happyReduction_353 (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 happyOut45 happy_x_2 of { happy_var_2 -> 
+	case happyOut70 happy_x_3 of { happy_var_3 -> 
+	case happyOutTok happy_x_4 of { (TokSymbol SymColon happy_var_4) -> 
+	case happyOut37 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 (happyIn99 r))
+
+happyReduce_354 = happySpecReduce_2  91# happyReduction_354
+happyReduction_354 happy_x_2
+	happy_x_1
+	 =  case happyOut18 happy_x_2 of { happy_var_2 -> 
+	happyIn100
+		 ((happy_var_2, NotInstanceDef)
+	)}
+
+happyReduce_355 = happyReduce 5# 91# happyReduction_355
+happyReduction_355 (happy_x_5 `HappyStk`
+	happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOut18 happy_x_4 of { happy_var_4 -> 
+	happyIn100
+		 ((happy_var_4, InstanceDef)
+	) `HappyStk` happyRest}
+
+happyReduce_356 = happySpecReduce_3  92# happyReduction_356
+happyReduction_356 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwInfix happy_var_1) -> 
+	case happyOut17 happy_x_2 of { happy_var_2 -> 
+	case happyOut27 happy_x_3 of { happy_var_3 -> 
+	happyIn101
+		 (Infix (Fixity (getRange (happy_var_1,happy_var_3)) (Related happy_var_2) NonAssoc)   happy_var_3
+	)}}}
+
+happyReduce_357 = happySpecReduce_3  92# happyReduction_357
+happyReduction_357 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwInfixL happy_var_1) -> 
+	case happyOut17 happy_x_2 of { happy_var_2 -> 
+	case happyOut27 happy_x_3 of { happy_var_3 -> 
+	happyIn101
+		 (Infix (Fixity (getRange (happy_var_1,happy_var_3)) (Related happy_var_2) LeftAssoc)  happy_var_3
+	)}}}
+
+happyReduce_358 = happySpecReduce_3  92# happyReduction_358
+happyReduction_358 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwInfixR happy_var_1) -> 
+	case happyOut17 happy_x_2 of { happy_var_2 -> 
+	case happyOut27 happy_x_3 of { happy_var_3 -> 
+	happyIn101
+		 (Infix (Fixity (getRange (happy_var_1,happy_var_3)) (Related happy_var_2) RightAssoc) happy_var_3
+	)}}}
+
+happyReduce_359 = happySpecReduce_2  93# happyReduction_359
+happyReduction_359 happy_x_2
+	happy_x_1
+	 =  case happyOut160 happy_x_2 of { happy_var_2 -> 
+	happyIn102
+		 (let
+                inst i | getHiding i == Instance = InstanceDef
+                       | otherwise               = NotInstanceDef
+                toField (Arg info (TypeSig info' x t)) = Field (inst info') x (Arg info t)
+              in map toField happy_var_2
+	)}
+
+happyReduce_360 = happySpecReduce_2  94# happyReduction_360
+happyReduction_360 happy_x_2
+	happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwMutual happy_var_1) -> 
+	case happyOut167 happy_x_2 of { happy_var_2 -> 
+	happyIn103
+		 (Mutual (fuseRange happy_var_1 happy_var_2) happy_var_2
+	)}}
+
+happyReduce_361 = happySpecReduce_2  95# happyReduction_361
+happyReduction_361 happy_x_2
+	happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwAbstract happy_var_1) -> 
+	case happyOut167 happy_x_2 of { happy_var_2 -> 
+	happyIn104
+		 (Abstract (fuseRange happy_var_1 happy_var_2) happy_var_2
+	)}}
+
+happyReduce_362 = happySpecReduce_2  96# happyReduction_362
+happyReduction_362 happy_x_2
+	happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwPrivate happy_var_1) -> 
+	case happyOut167 happy_x_2 of { happy_var_2 -> 
+	happyIn105
+		 (Private (fuseRange happy_var_1 happy_var_2) UserWritten happy_var_2
+	)}}
+
+happyReduce_363 = happySpecReduce_2  97# happyReduction_363
+happyReduction_363 happy_x_2
+	happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwInstance happy_var_1) -> 
+	case happyOut167 happy_x_2 of { happy_var_2 -> 
+	happyIn106
+		 (InstanceB (fuseRange happy_var_1 happy_var_2) happy_var_2
+	)}}
+
+happyReduce_364 = happySpecReduce_2  98# happyReduction_364
+happyReduction_364 happy_x_2
+	happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwMacro happy_var_1) -> 
+	case happyOut167 happy_x_2 of { happy_var_2 -> 
+	happyIn107
+		 (Macro (fuseRange happy_var_1 happy_var_2) happy_var_2
+	)}}
+
+happyReduce_365 = happySpecReduce_2  99# happyReduction_365
+happyReduction_365 happy_x_2
+	happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwPostulate happy_var_1) -> 
+	case happyOut167 happy_x_2 of { happy_var_2 -> 
+	happyIn108
+		 (Postulate (fuseRange happy_var_1 happy_var_2) happy_var_2
+	)}}
+
+happyReduce_366 = happySpecReduce_2  100# happyReduction_366
+happyReduction_366 happy_x_2
+	happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwPrimitive happy_var_1) -> 
+	case happyOut158 happy_x_2 of { happy_var_2 -> 
+	happyIn109
+		 (Primitive (fuseRange happy_var_1 happy_var_2) happy_var_2
+	)}}
+
+happyReduce_367 = happySpecReduce_3  101# happyReduction_367
+happyReduction_367 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwUnquoteDecl happy_var_1) -> 
+	case happyOut37 happy_x_3 of { happy_var_3 -> 
+	happyIn110
+		 (UnquoteDecl (fuseRange happy_var_1 happy_var_3) [] happy_var_3
+	)}}
+
+happyReduce_368 = happyReduce 4# 101# happyReduction_368
+happyReduction_368 (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 happyOut19 happy_x_2 of { happy_var_2 -> 
+	case happyOut37 happy_x_4 of { happy_var_4 -> 
+	happyIn110
+		 (UnquoteDecl (fuseRange happy_var_1 happy_var_4) happy_var_2 happy_var_4
+	) `HappyStk` happyRest}}}
+
+happyReduce_369 = happyReduce 4# 101# happyReduction_369
+happyReduction_369 (happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOutTok happy_x_1 of { (TokKeyword KwUnquoteDef happy_var_1) -> 
+	case happyOut19 happy_x_2 of { happy_var_2 -> 
+	case happyOut37 happy_x_4 of { happy_var_4 -> 
+	happyIn110
+		 (UnquoteDef (fuseRange happy_var_1 happy_var_4) happy_var_2 happy_var_4
+	) `HappyStk` happyRest}}}
+
+happyReduce_370 = happyMonadReduce 5# 102# happyReduction_370
+happyReduction_370 (happy_x_5 `HappyStk`
+	happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest) tk
+	 = happyThen (case happyOut18 happy_x_2 of { happy_var_2 -> 
+	case happyOut115 happy_x_3 of { happy_var_3 -> 
+	case happyOut114 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 (happyIn111 r))
+
+happyReduce_371 = happyMonadReduce 5# 103# happyReduction_371
+happyReduction_371 (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 KwPatternSyn happy_var_1) -> 
+	case happyOut18 happy_x_2 of { happy_var_2 -> 
+	case happyOut113 happy_x_3 of { happy_var_3 -> 
+	case happyOutTok happy_x_4 of { (TokSymbol SymEqual happy_var_4) -> 
+	case happyOut37 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 (happyIn112 r))
+
+happyReduce_372 = happySpecReduce_0  104# happyReduction_372
+happyReduction_372  =  happyIn113
+		 ([]
+	)
+
+happyReduce_373 = happyMonadReduce 1# 104# happyReduction_373
+happyReduction_373 (happy_x_1 `HappyStk`
+	happyRest) tk
+	 = happyThen (case happyOut62 happy_x_1 of { happy_var_1 -> 
+	( patternSynArgs happy_var_1)}
+	) (\r -> happyReturn (happyIn113 r))
+
+happyReduce_374 = happySpecReduce_1  105# happyReduction_374
+happyReduction_374 happy_x_1
+	 =  case happyOut119 happy_x_1 of { happy_var_1 -> 
+	happyIn114
+		 ([happy_var_1]
+	)}
+
+happyReduce_375 = happySpecReduce_2  105# happyReduction_375
+happyReduction_375 happy_x_2
+	happy_x_1
+	 =  case happyOut114 happy_x_1 of { happy_var_1 -> 
+	case happyOut119 happy_x_2 of { happy_var_2 -> 
+	happyIn114
+		 (happy_var_1 ++ [happy_var_2]
+	)}}
+
+happyReduce_376 = happySpecReduce_1  106# happyReduction_376
+happyReduction_376 happy_x_1
+	 =  case happyOut116 happy_x_1 of { happy_var_1 -> 
+	happyIn115
+		 ([happy_var_1]
+	)}
+
+happyReduce_377 = happySpecReduce_2  106# happyReduction_377
+happyReduction_377 happy_x_2
+	happy_x_1
+	 =  case happyOut115 happy_x_1 of { happy_var_1 -> 
+	case happyOut116 happy_x_2 of { happy_var_2 -> 
+	happyIn115
+		 (happy_var_1 ++ [happy_var_2]
+	)}}
+
+happyReduce_378 = happySpecReduce_1  107# happyReduction_378
+happyReduction_378 happy_x_1
+	 =  case happyOut117 happy_x_1 of { happy_var_1 -> 
+	happyIn116
+		 (defaultNamedArg happy_var_1
+	)}
+
+happyReduce_379 = happySpecReduce_3  107# happyReduction_379
+happyReduction_379 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut118 happy_x_2 of { happy_var_2 -> 
+	happyIn116
+		 (setHiding Hidden   $ defaultNamedArg happy_var_2
+	)}
+
+happyReduce_380 = happySpecReduce_3  107# happyReduction_380
+happyReduction_380 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut118 happy_x_2 of { happy_var_2 -> 
+	happyIn116
+		 (setHiding Instance $ defaultNamedArg happy_var_2
+	)}
+
+happyReduce_381 = happyReduce 5# 107# happyReduction_381
+happyReduction_381 (happy_x_5 `HappyStk`
+	happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOut119 happy_x_2 of { happy_var_2 -> 
+	case happyOut118 happy_x_4 of { happy_var_4 -> 
+	happyIn116
+		 (setHiding Hidden   $ defaultArg $ named happy_var_2 happy_var_4
+	) `HappyStk` happyRest}}
+
+happyReduce_382 = happyReduce 5# 107# happyReduction_382
+happyReduction_382 (happy_x_5 `HappyStk`
+	happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOut119 happy_x_2 of { happy_var_2 -> 
+	case happyOut118 happy_x_4 of { happy_var_4 -> 
+	happyIn116
+		 (setHiding Instance $ defaultArg $ named happy_var_2 happy_var_4
+	) `HappyStk` happyRest}}
+
+happyReduce_383 = happySpecReduce_1  108# happyReduction_383
+happyReduction_383 happy_x_1
+	 =  case happyOut119 happy_x_1 of { happy_var_1 -> 
+	happyIn117
+		 (ExprHole (rangedThing happy_var_1)
+	)}
+
+happyReduce_384 = happyReduce 6# 108# happyReduction_384
+happyReduction_384 (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 happyOut119 happy_x_3 of { happy_var_3 -> 
+	case happyOut119 happy_x_5 of { happy_var_5 -> 
+	happyIn117
+		 (LambdaHole (rangedThing happy_var_3) (rangedThing happy_var_5)
+	) `HappyStk` happyRest}}
+
+happyReduce_385 = happyReduce 6# 108# happyReduction_385
+happyReduction_385 (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 happyOut119 happy_x_5 of { happy_var_5 -> 
+	happyIn117
+		 (LambdaHole "_" (rangedThing happy_var_5)
+	) `HappyStk` happyRest}
+
+happyReduce_386 = happySpecReduce_1  109# happyReduction_386
+happyReduction_386 happy_x_1
+	 =  case happyOut119 happy_x_1 of { happy_var_1 -> 
+	happyIn118
+		 (ExprHole (rangedThing happy_var_1)
+	)}
+
+happyReduce_387 = happyReduce 4# 109# happyReduction_387
+happyReduction_387 (happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOut119 happy_x_2 of { happy_var_2 -> 
+	case happyOut119 happy_x_4 of { happy_var_4 -> 
+	happyIn118
+		 (LambdaHole (rangedThing happy_var_2) (rangedThing happy_var_4)
+	) `HappyStk` happyRest}}
+
+happyReduce_388 = happyReduce 4# 109# happyReduction_388
+happyReduction_388 (happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOut119 happy_x_4 of { happy_var_4 -> 
+	happyIn118
+		 (LambdaHole "_" (rangedThing happy_var_4)
+	) `HappyStk` happyRest}
+
+happyReduce_389 = happySpecReduce_1  110# happyReduction_389
+happyReduction_389 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokId happy_var_1) -> 
+	happyIn119
+		 (Ranged (getRange $ fst happy_var_1) (stringToRawName $ snd happy_var_1)
+	)}
+
+happyReduce_390 = happySpecReduce_1  111# happyReduction_390
+happyReduction_390 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwOpen happy_var_1) -> 
+	happyIn120
+		 (Just (getRange happy_var_1)
+	)}
+
+happyReduce_391 = happySpecReduce_0  111# happyReduction_391
+happyReduction_391  =  happyIn120
+		 (Nothing
+	)
+
+happyReduce_392 = happyMonadReduce 5# 112# happyReduction_392
+happyReduction_392 (happy_x_5 `HappyStk`
+	happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest) tk
+	 = happyThen (case happyOut120 happy_x_1 of { happy_var_1 -> 
+	case happyOutTok happy_x_2 of { (TokKeyword KwImport happy_var_2) -> 
+	case happyOut25 happy_x_3 of { happy_var_3 -> 
+	case happyOut122 happy_x_4 of { happy_var_4 -> 
+	case happyOut73 happy_x_5 of { happy_var_5 -> 
+	(
+    let
+    { doOpen = maybe DontOpen (const DoOpen) happy_var_1
+    ; m   = happy_var_3
+    ; es  = happy_var_4
+    ; dir = happy_var_5
+    ; r   = getRange (m, es, dir)
+    ; mr  = getRange m
+    ; unique = hashString $ show $ (Nothing :: Maybe ()) <$ r
+         -- turn range into unique id, but delete file path
+         -- which is absolute and messes up suite of failing tests
+         -- (different hashs on different installations)
+         -- TODO: Don't use (insecure) hashes in this way.
+    ; fresh = Name mr [ Id $ stringToRawName $ ".#" ++ show m ++ "-" ++ show unique ]
+    ; impStm asR = Import mr m (Just (AsName fresh asR)) DontOpen defaultImportDir
+    ; appStm m' es =
+        let r = getRange (m, es) in
+        Private r Inserted
+          [ ModuleMacro r m'
+             (SectionApp (getRange es) []
+               (RawApp (getRange es) (Ident (QName fresh) : es)))
+             doOpen dir
+          ]
+    ; (initArgs, last2Args) = splitAt (length es - 2) es
+    ; parseAsClause = case last2Args of
+      { [ Ident (QName (Name asR [Id x]))
+        , Ident (QName m')
+        ] | rawNameToString x == "as" -> Just (asR, m')
+      ; _ -> Nothing
+      }
+    } in
+    case es of
+      { [] -> return [Import mr m Nothing doOpen dir]
+      ; _ | Just (asR, m') <- parseAsClause ->
+              if null initArgs then return
+                 [ Import (getRange (m, asR, m', dir)) m
+                     (Just (AsName m' asR)) doOpen dir
+                 ]
+              else return [ impStm asR, appStm m' initArgs ]
+          | DontOpen <- doOpen -> parseErrorAt (fromJust $ rStart' $ getRange happy_var_2) "An import statement with module instantiation does not actually import the module.  This statement achieves nothing.  Either add the `open' keyword or bind the instantiated module with an `as' clause."
+          | otherwise -> return
+              [ impStm noRange
+              , appStm (noName $ beginningOf $ getRange m) es
+              ]
+      })}}}}}
+	) (\r -> happyReturn (happyIn121 r))
+
+happyReduce_393 = happyReduce 4# 112# happyReduction_393
+happyReduction_393 (happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOut25 happy_x_2 of { happy_var_2 -> 
+	case happyOut122 happy_x_3 of { happy_var_3 -> 
+	case happyOut73 happy_x_4 of { happy_var_4 -> 
+	happyIn121
+		 (let
+    { m   = happy_var_2
+    ; es  = happy_var_3
+    ; dir = happy_var_4
+    ; r   = getRange (m, es, dir)
+    } in
+    [ case es of
+      { []  -> Open r m dir
+      ; _   -> Private r Inserted
+                 [ ModuleMacro r (noName $ beginningOf $ getRange m)
+                             (SectionApp (getRange (m , es)) [] (RawApp (fuseRange m es) (Ident m : es)))
+                             DoOpen dir
+                 ]
+      }
+    ]
+	) `HappyStk` happyRest}}}
+
+happyReduce_394 = happyReduce 6# 112# happyReduction_394
+happyReduction_394 (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 happyOut25 happy_x_2 of { happy_var_2 -> 
+	case happyOut73 happy_x_6 of { happy_var_6 -> 
+	happyIn121
+		 (let r = getRange happy_var_2 in
+    [ Private r Inserted
+      [ ModuleMacro r (noName $ beginningOf $ getRange happy_var_2) (RecordModuleIFS r happy_var_2) DoOpen happy_var_6
+      ]
+    ]
+	) `HappyStk` happyRest}}
+
+happyReduce_395 = happySpecReduce_0  113# happyReduction_395
+happyReduction_395  =  happyIn122
+		 ([]
+	)
+
+happyReduce_396 = happySpecReduce_2  113# happyReduction_396
+happyReduction_396 happy_x_2
+	happy_x_1
+	 =  case happyOut46 happy_x_1 of { happy_var_1 -> 
+	case happyOut122 happy_x_2 of { happy_var_2 -> 
+	happyIn122
+		 (happy_var_1 : happy_var_2
+	)}}
+
+happyReduce_397 = happyReduce 4# 114# happyReduction_397
+happyReduction_397 (happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOut25 happy_x_1 of { happy_var_1 -> 
+	case happyOutTok happy_x_2 of { (TokSymbol SymDoubleOpenBrace happy_var_2) -> 
+	case happyOutTok happy_x_3 of { (TokSymbol SymEllipsis happy_var_3) -> 
+	case happyOut20 happy_x_4 of { happy_var_4 -> 
+	happyIn123
+		 ((\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_398 = happySpecReduce_2  114# happyReduction_398
+happyReduction_398 happy_x_2
+	happy_x_1
+	 =  case happyOut25 happy_x_1 of { happy_var_1 -> 
+	case happyOut122 happy_x_2 of { happy_var_2 -> 
+	happyIn123
+		 ((\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_399 = happyMonadReduce 6# 115# happyReduction_399
+happyReduction_399 (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) tk
+	 = happyThen (case happyOutTok happy_x_1 of { (TokKeyword KwModule happy_var_1) -> 
+	case happyOut25 happy_x_2 of { happy_var_2 -> 
+	case happyOut70 happy_x_3 of { happy_var_3 -> 
+	case happyOut123 happy_x_5 of { happy_var_5 -> 
+	case happyOut73 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 (happyIn124 r))
+
+happyReduce_400 = happyMonadReduce 7# 115# happyReduction_400
+happyReduction_400 (happy_x_7 `HappyStk`
+	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) tk
+	 = happyThen (case happyOutTok happy_x_1 of { (TokKeyword KwOpen happy_var_1) -> 
+	case happyOutTok happy_x_2 of { (TokKeyword KwModule happy_var_2) -> 
+	case happyOut18 happy_x_3 of { happy_var_3 -> 
+	case happyOut70 happy_x_4 of { happy_var_4 -> 
+	case happyOut123 happy_x_6 of { happy_var_6 -> 
+	case happyOut73 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 (happyIn124 r))
+
+happyReduce_401 = happyReduce 5# 116# happyReduction_401
+happyReduction_401 (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 happyOut25 happy_x_2 of { happy_var_2 -> 
+	case happyOut70 happy_x_3 of { happy_var_3 -> 
+	case happyOutTok happy_x_4 of { (TokKeyword KwWhere happy_var_4) -> 
+	case happyOut168 happy_x_5 of { happy_var_5 -> 
+	happyIn125
+		 (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_402 = happyReduce 5# 116# happyReduction_402
+happyReduction_402 (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 happyOut126 happy_x_2 of { happy_var_2 -> 
+	case happyOut70 happy_x_3 of { happy_var_3 -> 
+	case happyOutTok happy_x_4 of { (TokKeyword KwWhere happy_var_4) -> 
+	case happyOut168 happy_x_5 of { happy_var_5 -> 
+	happyIn125
+		 (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_403 = happySpecReduce_1  117# happyReduction_403
+happyReduction_403 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokSymbol SymUnderscore happy_var_1) -> 
+	happyIn126
+		 (noName (getRange happy_var_1)
+	)}
+
+happyReduce_404 = happySpecReduce_1  118# happyReduction_404
+happyReduction_404 happy_x_1
+	 =  case happyOut170 happy_x_1 of { happy_var_1 -> 
+	happyIn127
+		 (figureOutTopLevelModule happy_var_1
+	)}
+
+happyReduce_405 = happySpecReduce_1  119# happyReduction_405
+happyReduction_405 happy_x_1
+	 =  case happyOut129 happy_x_1 of { happy_var_1 -> 
+	happyIn128
+		 (Pragma happy_var_1
+	)}
+
+happyReduce_406 = happySpecReduce_1  120# happyReduction_406
+happyReduction_406 happy_x_1
+	 =  case happyOut131 happy_x_1 of { happy_var_1 -> 
+	happyIn129
+		 (happy_var_1
+	)}
+
+happyReduce_407 = happySpecReduce_1  120# happyReduction_407
+happyReduction_407 happy_x_1
+	 =  case happyOut132 happy_x_1 of { happy_var_1 -> 
+	happyIn129
+		 (happy_var_1
+	)}
+
+happyReduce_408 = happySpecReduce_1  120# happyReduction_408
+happyReduction_408 happy_x_1
+	 =  case happyOut133 happy_x_1 of { happy_var_1 -> 
+	happyIn129
+		 (happy_var_1
+	)}
+
+happyReduce_409 = happySpecReduce_1  120# happyReduction_409
+happyReduction_409 happy_x_1
+	 =  case happyOut134 happy_x_1 of { happy_var_1 -> 
+	happyIn129
+		 (happy_var_1
+	)}
+
+happyReduce_410 = happySpecReduce_1  120# happyReduction_410
+happyReduction_410 happy_x_1
+	 =  case happyOut137 happy_x_1 of { happy_var_1 -> 
+	happyIn129
+		 (happy_var_1
+	)}
+
+happyReduce_411 = happySpecReduce_1  120# happyReduction_411
+happyReduction_411 happy_x_1
+	 =  case happyOut135 happy_x_1 of { happy_var_1 -> 
+	happyIn129
+		 (happy_var_1
+	)}
+
+happyReduce_412 = happySpecReduce_1  120# happyReduction_412
+happyReduction_412 happy_x_1
+	 =  case happyOut136 happy_x_1 of { happy_var_1 -> 
+	happyIn129
+		 (happy_var_1
+	)}
+
+happyReduce_413 = happySpecReduce_1  120# happyReduction_413
+happyReduction_413 happy_x_1
+	 =  case happyOut138 happy_x_1 of { happy_var_1 -> 
+	happyIn129
+		 (happy_var_1
+	)}
+
+happyReduce_414 = happySpecReduce_1  120# happyReduction_414
+happyReduction_414 happy_x_1
+	 =  case happyOut139 happy_x_1 of { happy_var_1 -> 
+	happyIn129
+		 (happy_var_1
+	)}
+
+happyReduce_415 = happySpecReduce_1  120# happyReduction_415
+happyReduction_415 happy_x_1
+	 =  case happyOut140 happy_x_1 of { happy_var_1 -> 
+	happyIn129
+		 (happy_var_1
+	)}
+
+happyReduce_416 = happySpecReduce_1  120# happyReduction_416
+happyReduction_416 happy_x_1
+	 =  case happyOut141 happy_x_1 of { happy_var_1 -> 
+	happyIn129
+		 (happy_var_1
+	)}
+
+happyReduce_417 = happySpecReduce_1  120# happyReduction_417
+happyReduction_417 happy_x_1
+	 =  case happyOut142 happy_x_1 of { happy_var_1 -> 
+	happyIn129
+		 (happy_var_1
+	)}
+
+happyReduce_418 = happySpecReduce_1  120# happyReduction_418
+happyReduction_418 happy_x_1
+	 =  case happyOut143 happy_x_1 of { happy_var_1 -> 
+	happyIn129
+		 (happy_var_1
+	)}
+
+happyReduce_419 = happySpecReduce_1  120# happyReduction_419
+happyReduction_419 happy_x_1
+	 =  case happyOut144 happy_x_1 of { happy_var_1 -> 
+	happyIn129
+		 (happy_var_1
+	)}
+
+happyReduce_420 = happySpecReduce_1  120# happyReduction_420
+happyReduction_420 happy_x_1
+	 =  case happyOut151 happy_x_1 of { happy_var_1 -> 
+	happyIn129
+		 (happy_var_1
+	)}
+
+happyReduce_421 = happySpecReduce_1  120# happyReduction_421
+happyReduction_421 happy_x_1
+	 =  case happyOut152 happy_x_1 of { happy_var_1 -> 
+	happyIn129
+		 (happy_var_1
+	)}
+
+happyReduce_422 = happySpecReduce_1  120# happyReduction_422
+happyReduction_422 happy_x_1
+	 =  case happyOut153 happy_x_1 of { happy_var_1 -> 
+	happyIn129
+		 (happy_var_1
+	)}
+
+happyReduce_423 = happySpecReduce_1  120# happyReduction_423
+happyReduction_423 happy_x_1
+	 =  case happyOut148 happy_x_1 of { happy_var_1 -> 
+	happyIn129
+		 (happy_var_1
+	)}
+
+happyReduce_424 = happySpecReduce_1  120# happyReduction_424
+happyReduction_424 happy_x_1
+	 =  case happyOut147 happy_x_1 of { happy_var_1 -> 
+	happyIn129
+		 (happy_var_1
+	)}
+
+happyReduce_425 = happySpecReduce_1  120# happyReduction_425
+happyReduction_425 happy_x_1
+	 =  case happyOut146 happy_x_1 of { happy_var_1 -> 
+	happyIn129
+		 (happy_var_1
+	)}
+
+happyReduce_426 = happySpecReduce_1  120# happyReduction_426
+happyReduction_426 happy_x_1
+	 =  case happyOut149 happy_x_1 of { happy_var_1 -> 
+	happyIn129
+		 (happy_var_1
+	)}
+
+happyReduce_427 = happySpecReduce_1  120# happyReduction_427
+happyReduction_427 happy_x_1
+	 =  case happyOut150 happy_x_1 of { happy_var_1 -> 
+	happyIn129
+		 (happy_var_1
+	)}
+
+happyReduce_428 = happySpecReduce_1  120# happyReduction_428
+happyReduction_428 happy_x_1
+	 =  case happyOut145 happy_x_1 of { happy_var_1 -> 
+	happyIn129
+		 (happy_var_1
+	)}
+
+happyReduce_429 = happySpecReduce_1  120# happyReduction_429
+happyReduction_429 happy_x_1
+	 =  case happyOut154 happy_x_1 of { happy_var_1 -> 
+	happyIn129
+		 (happy_var_1
+	)}
+
+happyReduce_430 = happySpecReduce_1  120# happyReduction_430
+happyReduction_430 happy_x_1
+	 =  case happyOut155 happy_x_1 of { happy_var_1 -> 
+	happyIn129
+		 (happy_var_1
+	)}
+
+happyReduce_431 = happySpecReduce_1  120# happyReduction_431
+happyReduction_431 happy_x_1
+	 =  case happyOut130 happy_x_1 of { happy_var_1 -> 
+	happyIn129
+		 (happy_var_1
+	)}
+
+happyReduce_432 = happyReduce 4# 121# happyReduction_432
+happyReduction_432 (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 happyOut31 happy_x_3 of { happy_var_3 -> 
+	case happyOutTok happy_x_4 of { (TokSymbol SymClosePragma happy_var_4) -> 
+	happyIn130
+		 (OptionsPragma (getRange (happy_var_1,happy_var_2,happy_var_4)) happy_var_3
+	) `HappyStk` happyRest}}}}
+
+happyReduce_433 = happyReduce 5# 122# happyReduction_433
+happyReduction_433 (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 { (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 happyOut35 happy_x_4 of { happy_var_4 -> 
+	case happyOutTok happy_x_5 of { (TokSymbol SymClosePragma happy_var_5) -> 
+	happyIn131
+		 (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_434 = happyReduce 5# 122# happyReduction_434
+happyReduction_434 (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 { (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 happyOut35 happy_x_4 of { happy_var_4 -> 
+	case happyOutTok happy_x_5 of { (TokSymbol SymClosePragma happy_var_5) -> 
+	happyIn131
+		 (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_435 = happyReduce 4# 123# happyReduction_435
+happyReduction_435 (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 happyOut36 happy_x_3 of { happy_var_3 -> 
+	case happyOutTok happy_x_4 of { (TokSymbol SymClosePragma happy_var_4) -> 
+	happyIn132
+		 (RewritePragma (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4)) happy_var_3
+	) `HappyStk` happyRest}}}}
+
+happyReduce_436 = happyReduce 5# 124# happyReduction_436
+happyReduction_436 (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 { (TokSymbol SymOpenPragma happy_var_1) -> 
+	case happyOutTok happy_x_2 of { (TokKeyword KwCOMPILED happy_var_2) -> 
+	case happyOut35 happy_x_3 of { happy_var_3 -> 
+	case happyOut31 happy_x_4 of { happy_var_4 -> 
+	case happyOutTok happy_x_5 of { (TokSymbol SymClosePragma happy_var_5) -> 
+	happyIn133
+		 (CompiledPragma (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_5)) happy_var_3 (unwords happy_var_4)
+	) `HappyStk` happyRest}}}}}
+
+happyReduce_437 = happyReduce 5# 125# happyReduction_437
+happyReduction_437 (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 { (TokSymbol SymOpenPragma happy_var_1) -> 
+	case happyOutTok happy_x_2 of { (TokKeyword KwCOMPILED_EXPORT happy_var_2) -> 
+	case happyOut35 happy_x_3 of { happy_var_3 -> 
+	case happyOut32 happy_x_4 of { happy_var_4 -> 
+	case happyOutTok happy_x_5 of { (TokSymbol SymClosePragma happy_var_5) -> 
+	happyIn134
+		 (CompiledExportPragma (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_5)) happy_var_3 happy_var_4
+	) `HappyStk` happyRest}}}}}
+
+happyReduce_438 = happyReduce 5# 126# happyReduction_438
+happyReduction_438 (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 { (TokSymbol SymOpenPragma happy_var_1) -> 
+	case happyOutTok happy_x_2 of { (TokKeyword KwCOMPILED_DECLARE_DATA happy_var_2) -> 
+	case happyOut35 happy_x_3 of { happy_var_3 -> 
+	case happyOut31 happy_x_4 of { happy_var_4 -> 
+	case happyOutTok happy_x_5 of { (TokSymbol SymClosePragma happy_var_5) -> 
+	happyIn135
+		 (CompiledDeclareDataPragma (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_5)) happy_var_3 (unwords happy_var_4)
+	) `HappyStk` happyRest}}}}}
+
+happyReduce_439 = happyReduce 5# 127# happyReduction_439
+happyReduction_439 (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 { (TokSymbol SymOpenPragma happy_var_1) -> 
+	case happyOutTok happy_x_2 of { (TokKeyword KwCOMPILED_TYPE happy_var_2) -> 
+	case happyOut35 happy_x_3 of { happy_var_3 -> 
+	case happyOut31 happy_x_4 of { happy_var_4 -> 
+	case happyOutTok happy_x_5 of { (TokSymbol SymClosePragma happy_var_5) -> 
+	happyIn136
+		 (CompiledTypePragma (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_5)) happy_var_3 (unwords happy_var_4)
+	) `HappyStk` happyRest}}}}}
+
+happyReduce_440 = happyReduce 6# 128# happyReduction_440
+happyReduction_440 (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 happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) -> 
+	case happyOutTok happy_x_2 of { (TokKeyword KwCOMPILED_DATA happy_var_2) -> 
+	case happyOut35 happy_x_3 of { happy_var_3 -> 
+	case happyOutTok happy_x_4 of { (TokString happy_var_4) -> 
+	case happyOut31 happy_x_5 of { happy_var_5 -> 
+	case happyOutTok happy_x_6 of { (TokSymbol SymClosePragma happy_var_6) -> 
+	happyIn137
+		 (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_441 = happyReduce 5# 129# happyReduction_441
+happyReduction_441 (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 { (TokSymbol SymOpenPragma happy_var_1) -> 
+	case happyOutTok happy_x_2 of { (TokKeyword KwCOMPILED_EPIC happy_var_2) -> 
+	case happyOut35 happy_x_3 of { happy_var_3 -> 
+	case happyOut31 happy_x_4 of { happy_var_4 -> 
+	case happyOutTok happy_x_5 of { (TokSymbol SymClosePragma happy_var_5) -> 
+	happyIn138
+		 (CompiledEpicPragma (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_5)) happy_var_3 (unwords happy_var_4)
+	) `HappyStk` happyRest}}}}}
+
+happyReduce_442 = happyReduce 5# 130# happyReduction_442
+happyReduction_442 (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 { (TokSymbol SymOpenPragma happy_var_1) -> 
+	case happyOutTok happy_x_2 of { (TokKeyword KwCOMPILED_JS happy_var_2) -> 
+	case happyOut35 happy_x_3 of { happy_var_3 -> 
+	case happyOut31 happy_x_4 of { happy_var_4 -> 
+	case happyOutTok happy_x_5 of { (TokSymbol SymClosePragma happy_var_5) -> 
+	happyIn139
+		 (CompiledJSPragma (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_5)) happy_var_3 (unwords happy_var_4)
+	) `HappyStk` happyRest}}}}}
+
+happyReduce_443 = happyReduce 5# 131# happyReduction_443
+happyReduction_443 (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 { (TokSymbol SymOpenPragma happy_var_1) -> 
+	case happyOutTok happy_x_2 of { (TokKeyword KwCOMPILED_UHC happy_var_2) -> 
+	case happyOut35 happy_x_3 of { happy_var_3 -> 
+	case happyOut31 happy_x_4 of { happy_var_4 -> 
+	case happyOutTok happy_x_5 of { (TokSymbol SymClosePragma happy_var_5) -> 
+	happyIn140
+		 (CompiledUHCPragma (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_5)) happy_var_3 (unwords happy_var_4)
+	) `HappyStk` happyRest}}}}}
+
+happyReduce_444 = happyReduce 6# 132# happyReduction_444
+happyReduction_444 (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 happyOutTok happy_x_1 of { (TokSymbol SymOpenPragma happy_var_1) -> 
+	case happyOutTok happy_x_2 of { (TokKeyword KwCOMPILED_DATA_UHC happy_var_2) -> 
+	case happyOut35 happy_x_3 of { happy_var_3 -> 
+	case happyOutTok happy_x_4 of { (TokString happy_var_4) -> 
+	case happyOut31 happy_x_5 of { happy_var_5 -> 
+	case happyOutTok happy_x_6 of { (TokSymbol SymClosePragma happy_var_6) -> 
+	happyIn141
+		 (CompiledDataUHCPragma (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_445 = happyReduce 4# 133# happyReduction_445
+happyReduction_445 (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 KwHASKELL happy_var_2) -> 
+	case happyOut33 happy_x_3 of { happy_var_3 -> 
+	case happyOutTok happy_x_4 of { (TokSymbol SymClosePragma happy_var_4) -> 
+	happyIn142
+		 (HaskellCodePragma (getRange (happy_var_1, happy_var_2, happy_var_4)) (recoverLayout happy_var_3)
+	) `HappyStk` happyRest}}}}
+
+happyReduce_446 = happyReduce 4# 134# happyReduction_446
+happyReduction_446 (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 happyOut35 happy_x_3 of { happy_var_3 -> 
+	case happyOutTok happy_x_4 of { (TokSymbol SymClosePragma happy_var_4) -> 
+	happyIn143
+		 (StaticPragma (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4)) happy_var_3
+	) `HappyStk` happyRest}}}}
+
+happyReduce_447 = happyReduce 4# 135# happyReduction_447
+happyReduction_447 (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 KwINLINE happy_var_2) -> 
+	case happyOut35 happy_x_3 of { happy_var_3 -> 
+	case happyOutTok happy_x_4 of { (TokSymbol SymClosePragma happy_var_4) -> 
+	happyIn144
+		 (InlinePragma (getRange (happy_var_1,happy_var_2,happy_var_3,happy_var_4)) happy_var_3
+	) `HappyStk` happyRest}}}}
+
+happyReduce_448 = happyMonadReduce 5# 136# happyReduction_448
+happyReduction_448 (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 { (TokSymbol SymOpenPragma happy_var_1) -> 
+	case happyOutTok happy_x_3 of { (TokString happy_var_3) -> 
+	case happyOut31 happy_x_4 of { happy_var_4 -> 
+	case happyOutTok happy_x_5 of { (TokSymbol SymClosePragma happy_var_5) -> 
+	(
+      let (r, s) = happy_var_3 in
+      parseDisplayPragma (fuseRange happy_var_1 happy_var_5) (iStart r) (unwords (s : happy_var_4)))}}}}
+	) (\r -> happyReturn (happyIn145 r))
+
+happyReduce_449 = happySpecReduce_3  137# happyReduction_449
+happyReduction_449 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) -> 
+	happyIn146
+		 (TerminationCheckPragma (getRange (happy_var_1,happy_var_2,happy_var_3)) NoTerminationCheck
+	)}}}
+
+happyReduce_450 = happySpecReduce_3  138# happyReduction_450
+happyReduction_450 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) -> 
+	happyIn147
+		 (TerminationCheckPragma (getRange (happy_var_1,happy_var_2,happy_var_3)) NonTerminating
+	)}}}
+
+happyReduce_451 = happySpecReduce_3  139# happyReduction_451
+happyReduction_451 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) -> 
+	happyIn148
+		 (TerminationCheckPragma (getRange (happy_var_1,happy_var_2,happy_var_3)) Terminating
+	)}}}
+
+happyReduce_452 = happyReduce 4# 140# happyReduction_452
+happyReduction_452 (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 happyOut34 happy_x_3 of { happy_var_3 -> 
+	case happyOutTok happy_x_4 of { (TokSymbol SymClosePragma happy_var_4) -> 
+	happyIn149
+		 (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_453 = happySpecReduce_3  141# happyReduction_453
+happyReduction_453 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 KwCATCHALL happy_var_2) -> 
+	case happyOutTok happy_x_3 of { (TokSymbol SymClosePragma happy_var_3) -> 
+	happyIn150
+		 (CatchallPragma (getRange (happy_var_1,happy_var_2,happy_var_3))
+	)}}}
+
+happyReduce_454 = happyMonadReduce 4# 142# happyReduction_454
+happyReduction_454 (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 { (TokSymbol SymOpenPragma happy_var_1) -> 
+	case happyOutTok happy_x_2 of { (TokKeyword KwIMPORT happy_var_2) -> 
+	case happyOutTok happy_x_3 of { (TokString happy_var_3) -> 
+	case happyOutTok happy_x_4 of { (TokSymbol SymClosePragma happy_var_4) -> 
+	( let s = snd happy_var_3 in
+       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 (happyIn151 r))
+
+happyReduce_455 = happyMonadReduce 4# 143# happyReduction_455
+happyReduction_455 (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 { (TokSymbol SymOpenPragma happy_var_1) -> 
+	case happyOutTok happy_x_2 of { (TokKeyword KwIMPORT_UHC happy_var_2) -> 
+	case happyOutTok happy_x_3 of { (TokString happy_var_3) -> 
+	case happyOutTok happy_x_4 of { (TokSymbol SymClosePragma happy_var_4) -> 
+	( let s = snd happy_var_3 in
+       if validHaskellModuleName s
+       then return $ ImportUHCPragma (getRange (happy_var_1,happy_var_2,fst happy_var_3,happy_var_4)) s
+       else parseError $ "Malformed module name: " ++ s ++ ".")}}}}
+	) (\r -> happyReturn (happyIn152 r))
+
+happyReduce_456 = happySpecReduce_3  144# happyReduction_456
+happyReduction_456 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) -> 
+	happyIn153
+		 (ImpossiblePragma (getRange (happy_var_1,happy_var_2,happy_var_3))
+	)}}}
+
+happyReduce_457 = happySpecReduce_3  145# happyReduction_457
+happyReduction_457 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_POSITIVITY_CHECK happy_var_2) -> 
+	case happyOutTok happy_x_3 of { (TokSymbol SymClosePragma happy_var_3) -> 
+	happyIn154
+		 (NoPositivityCheckPragma (getRange (happy_var_1,happy_var_2,happy_var_3))
+	)}}}
+
+happyReduce_458 = happyReduce 5# 146# happyReduction_458
+happyReduction_458 (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 { (TokSymbol SymOpenPragma happy_var_1) -> 
+	case happyOutTok happy_x_2 of { (TokKeyword KwPOLARITY happy_var_2) -> 
+	case happyOut34 happy_x_3 of { happy_var_3 -> 
+	case happyOut156 happy_x_4 of { happy_var_4 -> 
+	case happyOutTok happy_x_5 of { (TokSymbol SymClosePragma happy_var_5) -> 
+	happyIn155
+		 (let (rs, occs) = unzip (reverse happy_var_4) in
+      PolarityPragma (getRange (happy_var_1,happy_var_2,happy_var_3,rs,happy_var_5)) happy_var_3 occs
+	) `HappyStk` happyRest}}}}}
+
+happyReduce_459 = happySpecReduce_0  147# happyReduction_459
+happyReduction_459  =  happyIn156
+		 ([]
+	)
+
+happyReduce_460 = happySpecReduce_2  147# happyReduction_460
+happyReduction_460 happy_x_2
+	happy_x_1
+	 =  case happyOut156 happy_x_1 of { happy_var_1 -> 
+	case happyOut157 happy_x_2 of { happy_var_2 -> 
+	happyIn156
+		 (happy_var_2 : happy_var_1
+	)}}
+
+happyReduce_461 = happyMonadReduce 1# 148# happyReduction_461
+happyReduction_461 (happy_x_1 `HappyStk`
+	happyRest) tk
+	 = happyThen (case happyOutTok happy_x_1 of { (TokString happy_var_1) -> 
+	( polarity happy_var_1)}
+	) (\r -> happyReturn (happyIn157 r))
+
+happyReduce_462 = happySpecReduce_3  149# happyReduction_462
+happyReduction_462 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut159 happy_x_2 of { happy_var_2 -> 
+	happyIn158
+		 (reverse happy_var_2
+	)}
+
+happyReduce_463 = happySpecReduce_3  150# happyReduction_463
+happyReduction_463 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut159 happy_x_1 of { happy_var_1 -> 
+	case happyOut92 happy_x_3 of { happy_var_3 -> 
+	happyIn159
+		 (reverse happy_var_3 ++ happy_var_1
+	)}}
+
+happyReduce_464 = happySpecReduce_1  150# happyReduction_464
+happyReduction_464 happy_x_1
+	 =  case happyOut92 happy_x_1 of { happy_var_1 -> 
+	happyIn159
+		 (reverse happy_var_1
+	)}
+
+happyReduce_465 = happySpecReduce_3  151# happyReduction_465
+happyReduction_465 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut161 happy_x_2 of { happy_var_2 -> 
+	happyIn160
+		 (reverse happy_var_2
+	)}
+
+happyReduce_466 = happySpecReduce_3  152# happyReduction_466
+happyReduction_466 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut161 happy_x_1 of { happy_var_1 -> 
+	case happyOut93 happy_x_3 of { happy_var_3 -> 
+	happyIn161
+		 (reverse happy_var_3 ++ happy_var_1
+	)}}
+
+happyReduce_467 = happySpecReduce_1  152# happyReduction_467
+happyReduction_467 happy_x_1
+	 =  case happyOut93 happy_x_1 of { happy_var_1 -> 
+	happyIn161
+		 (reverse happy_var_1
+	)}
+
+happyReduce_468 = happyMonadReduce 3# 153# happyReduction_468
+happyReduction_468 (happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest) tk
+	 = happyThen (case happyOut163 happy_x_2 of { happy_var_2 -> 
+	( ((,) `fmap` verifyRecordDirectives happy_var_2 <*> pure []))}
+	) (\r -> happyReturn (happyIn162 r))
+
+happyReduce_469 = happyMonadReduce 5# 153# happyReduction_469
+happyReduction_469 (happy_x_5 `HappyStk`
+	happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest) tk
+	 = happyThen (case happyOut163 happy_x_2 of { happy_var_2 -> 
+	case happyOut169 happy_x_4 of { happy_var_4 -> 
+	( ((,) `fmap` verifyRecordDirectives happy_var_2 <*> pure happy_var_4))}}
+	) (\r -> happyReturn (happyIn162 r))
+
+happyReduce_470 = happyMonadReduce 3# 153# happyReduction_470
+happyReduction_470 (happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest) tk
+	 = happyThen (case happyOut169 happy_x_2 of { happy_var_2 -> 
+	( ((,) `fmap` verifyRecordDirectives [] <*> pure happy_var_2))}
+	) (\r -> happyReturn (happyIn162 r))
+
+happyReduce_471 = happySpecReduce_0  154# happyReduction_471
+happyReduction_471  =  happyIn163
+		 ([]
+	)
+
+happyReduce_472 = happySpecReduce_3  154# happyReduction_472
+happyReduction_472 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut163 happy_x_1 of { happy_var_1 -> 
+	case happyOut164 happy_x_3 of { happy_var_3 -> 
+	happyIn163
+		 (happy_var_3 : happy_var_1
+	)}}
+
+happyReduce_473 = happySpecReduce_1  154# happyReduction_473
+happyReduction_473 happy_x_1
+	 =  case happyOut164 happy_x_1 of { happy_var_1 -> 
+	happyIn163
+		 ([happy_var_1]
+	)}
+
+happyReduce_474 = happySpecReduce_1  155# happyReduction_474
+happyReduction_474 happy_x_1
+	 =  case happyOut100 happy_x_1 of { happy_var_1 -> 
+	happyIn164
+		 (Constructor happy_var_1
+	)}
+
+happyReduce_475 = happySpecReduce_1  155# happyReduction_475
+happyReduction_475 happy_x_1
+	 =  case happyOut166 happy_x_1 of { happy_var_1 -> 
+	happyIn164
+		 (Induction happy_var_1
+	)}
+
+happyReduce_476 = happySpecReduce_1  155# happyReduction_476
+happyReduction_476 happy_x_1
+	 =  case happyOut165 happy_x_1 of { happy_var_1 -> 
+	happyIn164
+		 (Eta happy_var_1
+	)}
+
+happyReduce_477 = happySpecReduce_1  156# happyReduction_477
+happyReduction_477 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwEta happy_var_1) -> 
+	happyIn165
+		 (Ranged (getRange happy_var_1) True
+	)}
+
+happyReduce_478 = happySpecReduce_1  156# happyReduction_478
+happyReduction_478 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwNoEta happy_var_1) -> 
+	happyIn165
+		 (Ranged (getRange happy_var_1) False
+	)}
+
+happyReduce_479 = happySpecReduce_1  157# happyReduction_479
+happyReduction_479 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwInductive happy_var_1) -> 
+	happyIn166
+		 (Ranged (getRange happy_var_1) Inductive
+	)}
+
+happyReduce_480 = happySpecReduce_1  157# happyReduction_480
+happyReduction_480 happy_x_1
+	 =  case happyOutTok happy_x_1 of { (TokKeyword KwCoInductive happy_var_1) -> 
+	happyIn166
+		 (Ranged (getRange happy_var_1) CoInductive
+	)}
+
+happyReduce_481 = happySpecReduce_3  158# happyReduction_481
+happyReduction_481 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut169 happy_x_2 of { happy_var_2 -> 
+	happyIn167
+		 (happy_var_2
+	)}
+
+happyReduce_482 = happySpecReduce_2  159# happyReduction_482
+happyReduction_482 happy_x_2
+	happy_x_1
+	 =  happyIn168
+		 ([]
+	)
+
+happyReduce_483 = happySpecReduce_1  159# happyReduction_483
+happyReduction_483 happy_x_1
+	 =  case happyOut167 happy_x_1 of { happy_var_1 -> 
+	happyIn168
+		 (happy_var_1
+	)}
+
+happyReduce_484 = happySpecReduce_3  160# happyReduction_484
+happyReduction_484 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut91 happy_x_1 of { happy_var_1 -> 
+	case happyOut169 happy_x_3 of { happy_var_3 -> 
+	happyIn169
+		 (happy_var_1 ++ happy_var_3
+	)}}
+
+happyReduce_485 = happySpecReduce_1  160# happyReduction_485
+happyReduction_485 happy_x_1
+	 =  case happyOut91 happy_x_1 of { happy_var_1 -> 
+	happyIn169
+		 (happy_var_1
+	)}
+
+happyReduce_486 = happySpecReduce_0  161# happyReduction_486
+happyReduction_486  =  happyIn170
+		 ([]
+	)
+
+happyReduce_487 = happySpecReduce_1  161# happyReduction_487
+happyReduction_487 happy_x_1
+	 =  case happyOut169 happy_x_1 of { happy_var_1 -> 
+	happyIn170
+		 (happy_var_1
+	)}
+
+happyNewToken action sts stk
+	= lexer(\tk -> 
+	let cont i = happyDoAction i tk action sts stk in
+	case tk of {
+	TokEOF -> happyDoAction 105# tk action sts stk;
+	TokKeyword KwAbstract happy_dollar_dollar -> cont 1#;
+	TokKeyword KwCoData happy_dollar_dollar -> cont 2#;
+	TokKeyword KwCoInductive happy_dollar_dollar -> cont 3#;
+	TokKeyword KwConstructor happy_dollar_dollar -> cont 4#;
+	TokKeyword KwData happy_dollar_dollar -> cont 5#;
+	TokKeyword KwEta happy_dollar_dollar -> cont 6#;
+	TokKeyword KwField happy_dollar_dollar -> cont 7#;
+	TokKeyword KwForall happy_dollar_dollar -> cont 8#;
+	TokKeyword KwHiding happy_dollar_dollar -> cont 9#;
+	TokKeyword KwImport happy_dollar_dollar -> cont 10#;
+	TokKeyword KwIn happy_dollar_dollar -> cont 11#;
+	TokKeyword KwInductive happy_dollar_dollar -> cont 12#;
+	TokKeyword KwInfix happy_dollar_dollar -> cont 13#;
+	TokKeyword KwInfixL happy_dollar_dollar -> cont 14#;
+	TokKeyword KwInfixR happy_dollar_dollar -> cont 15#;
+	TokKeyword KwInstance happy_dollar_dollar -> cont 16#;
+	TokKeyword KwOverlap happy_dollar_dollar -> cont 17#;
+	TokKeyword KwLet happy_dollar_dollar -> cont 18#;
+	TokKeyword KwMacro happy_dollar_dollar -> cont 19#;
+	TokKeyword KwModule happy_dollar_dollar -> cont 20#;
+	TokKeyword KwMutual happy_dollar_dollar -> cont 21#;
+	TokKeyword KwNoEta happy_dollar_dollar -> cont 22#;
+	TokKeyword KwOpen happy_dollar_dollar -> cont 23#;
+	TokKeyword KwPatternSyn happy_dollar_dollar -> cont 24#;
+	TokKeyword KwPostulate happy_dollar_dollar -> cont 25#;
+	TokKeyword KwPrimitive happy_dollar_dollar -> cont 26#;
+	TokKeyword KwPrivate happy_dollar_dollar -> cont 27#;
+	TokKeyword KwProp happy_dollar_dollar -> cont 28#;
+	TokKeyword KwPublic happy_dollar_dollar -> cont 29#;
+	TokKeyword KwQuote happy_dollar_dollar -> cont 30#;
+	TokKeyword KwQuoteContext happy_dollar_dollar -> cont 31#;
+	TokKeyword KwQuoteGoal happy_dollar_dollar -> cont 32#;
+	TokKeyword KwQuoteTerm happy_dollar_dollar -> cont 33#;
+	TokKeyword KwRecord happy_dollar_dollar -> cont 34#;
+	TokKeyword KwRenaming happy_dollar_dollar -> cont 35#;
+	TokKeyword KwRewrite happy_dollar_dollar -> cont 36#;
+	TokKeyword KwSet happy_dollar_dollar -> cont 37#;
+	TokKeyword KwSyntax happy_dollar_dollar -> cont 38#;
+	TokKeyword KwTactic happy_dollar_dollar -> cont 39#;
+	TokKeyword KwTo happy_dollar_dollar -> cont 40#;
+	TokKeyword KwUnquote happy_dollar_dollar -> cont 41#;
+	TokKeyword KwUnquoteDecl happy_dollar_dollar -> cont 42#;
+	TokKeyword KwUnquoteDef happy_dollar_dollar -> cont 43#;
+	TokKeyword KwUsing happy_dollar_dollar -> cont 44#;
+	TokKeyword KwWhere happy_dollar_dollar -> cont 45#;
+	TokKeyword KwWith happy_dollar_dollar -> cont 46#;
+	TokKeyword KwBUILTIN happy_dollar_dollar -> cont 47#;
+	TokKeyword KwCATCHALL happy_dollar_dollar -> cont 48#;
+	TokKeyword KwCOMPILED happy_dollar_dollar -> cont 49#;
+	TokKeyword KwCOMPILED_DATA happy_dollar_dollar -> cont 50#;
+	TokKeyword KwCOMPILED_DATA_UHC happy_dollar_dollar -> cont 51#;
+	TokKeyword KwCOMPILED_DECLARE_DATA happy_dollar_dollar -> cont 52#;
+	TokKeyword KwCOMPILED_EPIC happy_dollar_dollar -> cont 53#;
+	TokKeyword KwCOMPILED_EXPORT happy_dollar_dollar -> cont 54#;
+	TokKeyword KwCOMPILED_JS happy_dollar_dollar -> cont 55#;
+	TokKeyword KwCOMPILED_TYPE happy_dollar_dollar -> cont 56#;
+	TokKeyword KwCOMPILED_UHC happy_dollar_dollar -> cont 57#;
+	TokKeyword KwHASKELL happy_dollar_dollar -> cont 58#;
+	TokKeyword KwDISPLAY happy_dollar_dollar -> cont 59#;
+	TokKeyword KwIMPORT happy_dollar_dollar -> cont 60#;
+	TokKeyword KwIMPORT_UHC happy_dollar_dollar -> cont 61#;
+	TokKeyword KwIMPOSSIBLE happy_dollar_dollar -> cont 62#;
+	TokKeyword KwINLINE happy_dollar_dollar -> cont 63#;
+	TokKeyword KwMEASURE happy_dollar_dollar -> cont 64#;
+	TokKeyword KwNO_TERMINATION_CHECK happy_dollar_dollar -> cont 65#;
+	TokKeyword KwNO_POSITIVITY_CHECK happy_dollar_dollar -> cont 66#;
+	TokKeyword KwNON_TERMINATING happy_dollar_dollar -> cont 67#;
+	TokKeyword KwOPTIONS happy_dollar_dollar -> cont 68#;
+	TokKeyword KwPOLARITY happy_dollar_dollar -> cont 69#;
+	TokKeyword KwREWRITE happy_dollar_dollar -> cont 70#;
+	TokKeyword KwSTATIC happy_dollar_dollar -> cont 71#;
+	TokKeyword KwTERMINATING happy_dollar_dollar -> cont 72#;
+	TokSetN happy_dollar_dollar -> cont 73#;
+	TokTeX happy_dollar_dollar -> cont 74#;
+	TokComment happy_dollar_dollar -> cont 75#;
+	TokSymbol SymEllipsis happy_dollar_dollar -> cont 76#;
+	TokSymbol SymDotDot happy_dollar_dollar -> cont 77#;
+	TokSymbol SymDot happy_dollar_dollar -> cont 78#;
+	TokSymbol SymSemi happy_dollar_dollar -> cont 79#;
+	TokSymbol SymColon happy_dollar_dollar -> cont 80#;
+	TokSymbol SymEqual happy_dollar_dollar -> cont 81#;
+	TokSymbol SymUnderscore happy_dollar_dollar -> cont 82#;
+	TokSymbol SymQuestionMark happy_dollar_dollar -> cont 83#;
+	TokSymbol SymArrow happy_dollar_dollar -> cont 84#;
+	TokSymbol SymLambda happy_dollar_dollar -> cont 85#;
+	TokSymbol SymAs happy_dollar_dollar -> cont 86#;
+	TokSymbol SymBar happy_dollar_dollar -> cont 87#;
+	TokSymbol SymOpenParen happy_dollar_dollar -> cont 88#;
+	TokSymbol SymCloseParen happy_dollar_dollar -> cont 89#;
+	TokSymbol SymOpenIdiomBracket happy_dollar_dollar -> cont 90#;
+	TokSymbol SymCloseIdiomBracket happy_dollar_dollar -> cont 91#;
+	TokSymbol SymDoubleOpenBrace happy_dollar_dollar -> cont 92#;
+	TokSymbol SymDoubleCloseBrace happy_dollar_dollar -> cont 93#;
+	TokSymbol SymOpenBrace happy_dollar_dollar -> cont 94#;
+	TokSymbol SymCloseBrace happy_dollar_dollar -> cont 95#;
+	TokSymbol SymOpenVirtualBrace happy_dollar_dollar -> cont 96#;
+	TokSymbol SymCloseVirtualBrace happy_dollar_dollar -> cont 97#;
+	TokSymbol SymVirtualSemi happy_dollar_dollar -> cont 98#;
+	TokSymbol SymOpenPragma happy_dollar_dollar -> cont 99#;
+	TokSymbol SymClosePragma happy_dollar_dollar -> cont 100#;
+	TokId happy_dollar_dollar -> cont 101#;
+	TokQId happy_dollar_dollar -> cont 102#;
+	TokString happy_dollar_dollar -> cont 103#;
+	TokLiteral happy_dollar_dollar -> cont 104#;
+	_ -> happyError' tk
+	})
+
+happyError_ 105# tk = happyError' tk
+happyError_ _ tk = happyError' tk
+
+happyThen :: () => Parser a -> (a -> Parser b) -> Parser b
+happyThen = (>>=)
+happyReturn :: () => a -> Parser a
+happyReturn = (return)
+happyThen1 = happyThen
+happyReturn1 :: () => a -> Parser a
+happyReturn1 = happyReturn
+happyError' :: () => (Token) -> Parser a
+happyError' tk = (\token -> happyError) tk
+
+tokensParser = happySomeParser where
+  happySomeParser = happyThen (happyParse 0#) (\x -> happyReturn (happyOut9 x))
+
+exprParser = happySomeParser where
+  happySomeParser = happyThen (happyParse 1#) (\x -> happyReturn (happyOut37 x))
+
+exprWhereParser = happySomeParser where
+  happySomeParser = happyThen (happyParse 2#) (\x -> happyReturn (happyOut90 x))
+
+moduleParser = happySomeParser where
+  happySomeParser = happyThen (happyParse 3#) (\x -> happyReturn (happyOut12 x))
+
+moduleNameParser = happySomeParser where
+  happySomeParser = happyThen (happyParse 4#) (\x -> happyReturn (happyOut25 x))
+
+funclauseParser = happySomeParser where
+  happySomeParser = happyThen (happyParse 5#) (\x -> happyReturn (happyOut94 x))
+
+happySeq = happyDontSeq
+
+
+{--------------------------------------------------------------------------
+    Parsers
+ --------------------------------------------------------------------------}
+
+-- | Parse the token stream. Used by the TeX compiler.
+tokensParser :: Parser [Token]
+
+-- | Parse an expression. Could be used in interactions.
+exprParser :: Parser Expr
+
+-- | Parse an expression followed by a where clause. Could be used in interactions.
+exprWhereParser :: Parser ExprWhere
+
+-- | Parse a module.
+moduleParser :: Parser Module
+
+
+{--------------------------------------------------------------------------
+    Happy stuff
+ --------------------------------------------------------------------------}
+
+-- | Required by Happy.
+happyError :: Parser a
+happyError = parseError "Parse error"
+
+
+{--------------------------------------------------------------------------
+    Utility functions
+ --------------------------------------------------------------------------}
+
+-- | Grab leading OPTIONS pragmas.
+takeOptionsPragmas :: [Declaration] -> ([Pragma], [Declaration])
+takeOptionsPragmas = spanJust $ \ d -> case d of
+  Pragma p@OptionsPragma{} -> Just p
+  _                        -> Nothing
+
+-- | Insert a top-level module if there is none.
+--   Also fix-up for the case the declarations in the top-level module
+--   are not indented (this is allowed as a special case).
+figureOutTopLevelModule :: [Declaration] -> [Declaration]
+figureOutTopLevelModule ds =
+  case spanAllowedBeforeModule ds of
+    -- Andreas 2016-02-01, issue #1388.
+    -- We need to distinguish two additional cases.
+    -- Case 1: Regular file layout: imports followed by one module. Nothing to do.
+    (ds0, [ Module{} ]) -> ds
+    -- Case 2: The declarations in the module are not indented.
+    -- This is allowed for the top level module, and thus rectified here.
+    (ds0, Module r m tel [] : ds2) -> ds0 ++ [Module r m tel ds2]
+    -- Case 3: There is a module with indented declarations,
+    -- followed by non-indented declarations.  This should be a
+    -- parse error and be reported later (see @toAbstract TopLevel{}@),
+    -- thus, we do not do anything here.
+    (ds0, Module r m tel ds1 : ds2) -> ds  -- Gives parse error in scope checker.
+    -- OLD code causing issue 1388:
+    -- (ds0, Module r m tel ds1 : ds2) -> ds0 ++ [Module r m tel $ ds1 ++ ds2]
+    -- Case 4: a top-level module declaration is missing.
+    (ds0, ds1)                      -> ds0 ++ [Module (getRange ds1) (QName noName_) [] ds1]
+
+-- | Create a name from a string.
+
+mkName :: (Interval, String) -> Parser Name
+mkName (i, s) = do
+    let xs = C.stringNameParts s
+    mapM_ isValidId xs
+    unless (alternating xs) $ fail $ "a name cannot contain two consecutive underscores"
+    return $ Name (getRange i) xs
+    where
+        isValidId Hole   = return ()
+        isValidId (Id y) = do
+          let x = rawNameToString y
+          case parse defaultParseFlags [0] (lexer return) x of
+            ParseOk _ (TokId _) -> return ()
+            _                   -> fail $ "in the name " ++ s ++ ", the part " ++ x ++ " is not valid"
+
+        -- we know that there are no two Ids in a row
+        alternating (Hole : Hole : _) = False
+        alternating (_ : xs)          = alternating xs
+        alternating []                = True
+
+-- | Create a qualified name from a list of strings
+mkQName :: [(Interval, String)] -> Parser QName
+mkQName ss = do
+    xs <- mapM mkName ss
+    return $ foldr Qual (QName $ last xs) (init xs)
+
+-- | Create a qualified name from a string (used in pragmas).
+--   Range of each name component is range of whole string.
+--   TODO: precise ranges!
+
+pragmaQName :: (Interval, String) -> Parser QName
+pragmaQName (r, s) = do
+  let ss = chopWhen (== '.') s
+  mkQName $ map (r,) ss
+
+-- | Polarity parser.
+
+polarity :: (Interval, String) -> Parser (Range, Occurrence)
+polarity (i, s) =
+  case s of
+    "_"  -> ret Unused
+    "++" -> ret StrictPos
+    "+"  -> ret JustPos
+    "-"  -> ret JustNeg
+    "*"  -> ret Mixed
+    _    -> fail $ "Not a valid polarity: " ++ s
+  where
+  ret x = return (getRange i, x)
+
+recoverLayout :: [(Interval, String)] -> String
+recoverLayout [] = ""
+recoverLayout xs@((i, _) : _) = go (iStart i) xs
+  where
+    c0 = posCol (iStart i)
+
+    go cur [] = ""
+    go cur ((i, s) : xs) = padding cur (iStart i) ++ s ++ go (iEnd i) xs
+
+    padding Pn{ posLine = l1, posCol = c1 } Pn{ posLine = l2, posCol = c2 }
+      | l1 < l2  = genericReplicate (l2 - l1) '\n' ++ genericReplicate (max 0 (c2 - c0)) ' '
+      | l1 == l2 = genericReplicate (c2 - c1) ' '
+
+ensureUnqual :: QName -> Parser Name
+ensureUnqual (QName x) = return x
+ensureUnqual q@Qual{}  = parseError' (rStart' $ getRange q) "Qualified name not allowed here"
+
+-- | Match a particular name.
+isName :: String -> (Interval, String) -> Parser ()
+isName s (_,s')
+    | s == s'   = return ()
+    | otherwise = fail $ "expected " ++ s ++ ", found " ++ s'
+
+-- | Build a forall pi (forall x y z -> ...)
+forallPi :: [LamBinding] -> Expr -> Expr
+forallPi bs e = Pi (map addType bs) e
+
+-- | Build a telescoping let (let Ds)
+tLet :: Range -> [Declaration] -> TypedBindings
+tLet r = TypedBindings r . Arg defaultArgInfo . TLet r
+
+-- | Converts lambda bindings to typed bindings.
+addType :: LamBinding -> TypedBindings
+addType (DomainFull b)   = b
+addType (DomainFree info x) = TypedBindings r $ Arg info $ TBind r [pure x] $ Underscore r Nothing
+  where r = getRange x
+
+mergeImportDirectives :: [ImportDirective] -> Parser ImportDirective
+mergeImportDirectives is = do
+  i <- foldl merge (return defaultImportDir) is
+  verifyImportDirective i
+  where
+    merge mi i2 = do
+      i1 <- mi
+      let err = parseError' (rStart' $ getRange i2) "Cannot mix using and hiding module directives"
+      return $ ImportDirective
+        { importDirRange = fuseRange i1 i2
+        , using          = mappend (using i1) (using i2)
+        , hiding         = hiding i1 ++ hiding i2
+        , impRenaming    = impRenaming i1 ++ impRenaming i2
+        , publicOpen     = publicOpen i1 || publicOpen i2 }
+
+-- | Check that an import directive doesn't contain repeated names
+verifyImportDirective :: ImportDirective -> Parser ImportDirective
+verifyImportDirective i =
+    case filter ((>1) . length)
+         $ group
+         $ sort xs
+    of
+        []  -> return i
+        yss -> let Just pos = rStart' $ getRange $ head $ concat yss in
+               parseErrorAt pos $
+                "Repeated name" ++ s ++ " in import directive: " ++
+                concat (intersperse ", " $ map (show . head) yss)
+            where
+                s = case yss of
+                        [_] -> ""
+                        _   -> "s"
+    where
+        xs = names (using i) ++ hiding i ++ map renFrom (impRenaming i)
+        names (Using xs)    = xs
+        names UseEverything = []
+
+data RecordDirective
+   = Induction (Ranged Induction)
+   | Constructor (Name, IsInstance)
+   | Eta         (Ranged Bool)
+   deriving (Eq,Show)
+
+verifyRecordDirectives :: [RecordDirective] -> Parser (Maybe (Ranged Induction), Maybe Bool, Maybe (Name, IsInstance))
+verifyRecordDirectives xs | null rs = return (ltm is, ltm es, ltm cs)
+                          | otherwise = let Just pos = rStart' $ (head rs) in
+                                          parseErrorAt pos $ "Repeated record directives at: \n" ++ intercalate "\n" (map show rs)
+
+ where
+  ltm :: [a] -> Maybe a
+  ltm [] = Nothing
+  ltm (x:xs) = Just x
+  errorFromList [] = []
+  errorFromList [x] = []
+  errorFromList xs = map getRange xs
+  rs = sort (concat ([errorFromList is, errorFromList es', errorFromList cs]))
+  is = [ i | Induction i <- xs ]
+  es' = [ i | Eta i <- xs ]
+  es = map rangedThing es'
+  cs = [ i | Constructor i <- xs ]
+
+
+-- | Breaks up a string into substrings. Returns every maximal
+-- subsequence of zero or more characters distinct from @'.'@.
+--
+-- > splitOnDots ""         == [""]
+-- > splitOnDots "foo.bar"  == ["foo", "bar"]
+-- > splitOnDots ".foo.bar" == ["", "foo", "bar"]
+-- > splitOnDots "foo.bar." == ["foo", "bar", ""]
+-- > splitOnDots "foo..bar" == ["foo", "", "bar"]
+splitOnDots :: String -> [String]
+splitOnDots ""        = [""]
+splitOnDots ('.' : s) = [] : splitOnDots s
+splitOnDots (c   : s) = case splitOnDots s of
+  p : ps -> (c : p) : ps
+
+
+-- | Returns 'True' iff the name is a valid Haskell (hierarchical)
+-- module name.
+validHaskellModuleName :: String -> Bool
+validHaskellModuleName = all ok . splitOnDots
+  where
+  -- Checks if a dot-less module name is well-formed.
+  ok :: String -> Bool
+  ok []      = False
+  ok (c : s) =
+    isUpper c &&
+    all (\c -> isLower c || c == '_' ||
+               isUpper c ||
+               generalCategory c == DecimalNumber ||
+               c == '\'')
+        s
+
+{--------------------------------------------------------------------------
+    Patterns
+ --------------------------------------------------------------------------}
+
+-- | Turn an expression into a left hand side.
+exprToLHS :: Expr -> Parser ([Expr] -> [Expr] -> LHS)
+exprToLHS e = case e of
+  WithApp r e es -> LHS <$> exprToPattern e <*> mapM exprToPattern es
+  _              -> LHS <$> exprToPattern e <*> return []
+
+-- | Turn an expression into a pattern. Fails if the expression is not a
+--   valid pattern.
+exprToPattern :: Expr -> Parser Pattern
+exprToPattern e = do
+    let Just pos = rStart' $ getRange e
+        failure = parseErrorAt pos $ "Not a valid pattern: " ++ show e
+    case e of
+        Ident x                 -> return $ IdentP x
+        App _ e1 e2             -> AppP <$> exprToPattern e1
+                                        <*> T.mapM (T.mapM exprToPattern) e2
+        Paren r e               -> ParenP r
+                                        <$> exprToPattern e
+        Underscore r _          -> return $ WildP r
+        Absurd r                -> return $ AbsurdP r
+        As r x e                -> AsP r x <$> exprToPattern e
+        Dot r (HiddenArg _ e)   -> return $ HiddenP r $ fmap (DotP r UserWritten) e
+        Dot r e                 -> return $ DotP r UserWritten e
+        Lit l                   -> return $ LitP l
+        HiddenArg r e           -> HiddenP r <$> T.mapM exprToPattern e
+        InstanceArg r e         -> InstanceP r <$> T.mapM exprToPattern e
+        RawApp r es             -> RawAppP r <$> mapM exprToPattern es
+        Quote r                 -> return $ QuoteP r
+        Rec r es | Just fs <- mapM maybeLeft es -> do
+          RecP r <$> T.mapM (T.mapM exprToPattern) fs
+        _                       -> failure
+
+opAppExprToPattern :: OpApp Expr -> Parser Pattern
+opAppExprToPattern (SyntaxBindingLambda _ _ _) = parseError "Syntax binding lambda cannot appear in a pattern"
+opAppExprToPattern (Ordinary e) = exprToPattern e
+
+-- | Turn an expression into a name. Fails if the expression is not a
+--   valid identifier.
+exprToName :: Expr -> Parser Name
+exprToName (Ident (QName x)) = return x
+exprToName e =
+  let Just pos = rStart' $ getRange e in
+  parseErrorAt pos $ "Not a valid identifier: " ++ show e
+
+stripSingletonRawApp :: Expr -> Expr
+stripSingletonRawApp (RawApp _ [e]) = stripSingletonRawApp e
+stripSingletonRawApp e = e
+
+isEqual :: Expr -> Maybe (Expr, Expr)
+isEqual e =
+  case stripSingletonRawApp e of
+    Equal _ a b -> Just (stripSingletonRawApp a, stripSingletonRawApp b)
+    _           -> Nothing
+
+maybeNamed :: Expr -> Named_ Expr
+maybeNamed e =
+  case isEqual e of
+    Just (Ident (QName x), b) -> named (Ranged (getRange x) (nameToRawName x)) b
+    _                         -> unnamed e
+
+patternSynArgs :: [Either Hiding LamBinding] -> Parser [Arg Name]
+patternSynArgs = mapM pSynArg
+  where
+    pSynArg Left{}                   = parseError "Absurd patterns are not allowed in pattern synonyms"
+    pSynArg (Right DomainFull{})     = parseError "Unexpected type signature in pattern synonym argument"
+    pSynArg (Right (DomainFree a x))
+      | getHiding a `notElem` [Hidden, NotHidden] = parseError $ show (getHiding a) ++ " arguments not allowed to pattern synonyms"
+      | getRelevance a /= Relevant                = parseError "Arguments to pattern synonyms must be relevant"
+      | otherwise                                 = return $ Arg a (boundName x)
+
+parsePanic s = parseError $ "Internal parser error: " ++ s ++ ". Please report this as a bug."
+
+{- RHS or type signature -}
+
+data RHSOrTypeSigs
+ = JustRHS RHS
+ | TypeSigsRHS Expr
+ deriving Show
+
+patternToNames :: Pattern -> Parser [(ArgInfo, Name)]
+patternToNames p =
+  case p of
+    IdentP (QName i)         -> return [(defaultArgInfo, i)]
+    WildP r                  -> return [(defaultArgInfo, C.noName r)]
+    DotP _ _ (Ident (QName i)) -> return [(setRelevance Irrelevant defaultArgInfo, i)]
+    RawAppP _ ps             -> concat <$> mapM patternToNames ps
+    _                        -> parseError $
+      "Illegal name in type signature: " ++ prettyShow p
+
+funClauseOrTypeSigs :: LHS -> RHSOrTypeSigs -> WhereClause -> Parser [Declaration]
+funClauseOrTypeSigs lhs mrhs wh = do
+  -- traceShowM lhs
+  case mrhs of
+    JustRHS rhs   -> return [FunClause lhs rhs wh False]
+    TypeSigsRHS e -> case wh of
+      NoWhere -> case lhs of
+        Ellipsis{}      -> parseError "The ellipsis ... cannot have a type signature"
+        LHS _ _ _ (_:_) -> parseError "Illegal: with in type signature"
+        LHS _ _ (_:_) _ -> parseError "Illegal: rewrite in type signature"
+        LHS _ (_:_) _ _ -> parseError "Illegal: with patterns in type signature"
+        LHS p [] [] []  -> map (\ (x, y) -> TypeSig x y e) <$> patternToNames p
+      _ -> parseError "A type signature cannot have a where clause"
+
+parseDisplayPragma :: Range -> Position -> String -> Parser Pragma
+parseDisplayPragma r pos s =
+  case parsePosString pos defaultParseFlags [normal] funclauseParser s of
+    ParseOk s [FunClause (LHS lhs [] [] []) (RHS rhs) NoWhere ca] | null (parseInp s) ->
+      return $ DisplayPragma r lhs rhs
+    _ -> parseError "Invalid DISPLAY pragma. Should have form {-# DISPLAY LHS = RHS #-}."
+{-# LINE 1 "templates/GenericTemplate.hs" #-}
+{-# LINE 1 "templates/GenericTemplate.hs" #-}
+{-# LINE 1 "<built-in>" #-}
+{-# LINE 1 "<command-line>" #-}
+{-# LINE 11 "<command-line>" #-}
+{-# LINE 1 "/usr/local/stow/ghc-8.0.2-rc2/lib/ghc-8.0.1.20161213/include/ghcversion.h" #-}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{-# LINE 11 "<command-line>" #-}
+{-# LINE 1 "/tmp/ghc19165_0/ghc_2.h" #-}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{-# LINE 11 "<command-line>" #-}
 {-# LINE 1 "templates/GenericTemplate.hs" #-}
 -- Id: GenericTemplate.hs,v 1.26 2005/01/14 14:47:22 simonmar Exp 
 
diff --git a/src/agda-ghc-names/ExtractNames.hs b/src/agda-ghc-names/ExtractNames.hs
deleted file mode 100644
--- a/src/agda-ghc-names/ExtractNames.hs
+++ /dev/null
@@ -1,152 +0,0 @@
--- ExtractNames.hs
--- Copyright 2015 by Wolfram Kahl
--- Licensed under the same terms as Agda
-
-{-# LANGUAGE ScopedTypeVariables, FlexibleContexts #-}
-
-module ExtractNames where
-
-import Control.Monad (liftM)
-import Control.Monad.State (evalStateT, MonadState(..))
-
-import Data.List (stripPrefix)
-import Data.Char (isSpace)
-
-import qualified Language.Haskell.Exts as Hs
-
-import System.FilePath.Find (find, always, fileType, (==?), (&&?), FileType(RegularFile), extension)
-
-import Debug.Trace
-
-
-getModule :: MonadState [String] m => m String
-getModule = get >>= h
-  where
-    h [] = fail "No module declarations found."
-    h (s : ss) = case stripPrefix "module " s of
-      Just s' -> case words s' of
-          modname : "where" : _ -> do
-            put ss
-            return modname
-          _ -> h ss
-      Nothing -> h ss
-
--- The following assumes that
---   Agda.Compiler.MAlonzo.Compiler.infodecl
--- generates definitions of shape
---   nameXYZ = "AgdaName"
--- immediately preceeding definitions of shape
---   dXYZ = ...
-
-infoDeclNamePrefix, hsIdentPrefix :: String
-infoDeclNamePrefix = "name"
-hsIdentPrefix      = "d"
-hsSubIdentPrefix   = "du"
-
-getNames0 :: forall m . MonadState [String] m => String -> m [(String, String)]
-getNames0 modname = get >>= h
-  where
-    h :: [String] -> m [(String, String)]
-    h [] = return []
-    h (d : ss) = case stripPrefix infoDeclNamePrefix d of
-      Nothing -> h ss
-      Just d' -> case words d' of
-        unique : "=" : agdaName : [] -> k ss
-          where
-            hsName = hsIdentPrefix ++ unique
-            -- Some names have no definitions, so we need to check
-            -- whether there is a definition on the next line,
-            -- and only on the next line.
-            -- Names without definition still can be referenced in .prof files;
-            -- we flag these with a preceding ``!'':
-            hsUndefName = '!' : hsName
-            k :: [String] -> m [(String, String)]
-            k [] = return [(hsUndefName, agdaName)]
-            k (s : ss') = case stripPrefix hsIdentPrefix s of
-              Nothing -> liftM ((hsUndefName, agdaName) :) $ h ss
-              Just s' -> if unique == takeWhile (not . isSpace) s' -- sanity check
-                then liftM ((hsName, agdaName) :) $ h ss'
-                else fail $ "infodecl\n  " ++ d ++ "\nsucceeded by definition\n  " ++ s
-        _ -> fail $ "Unexpected trailing material in infodecl:\n  " ++ modname ++ '.' : d
-
--- getNames0 assumes that |infoDecl|s are layout on single lines,
---   which is not true due to the pretty-printing employed.
-
--- So we need to either join lines,
--- or actually parse Haskell.
--- I try the latter for now, hoping that this is not too brittle.
-
-moduleName :: Hs.Module -> String
-moduleName (Hs.Module _ (Hs.ModuleName modname) _ _ _ _ _) = modname
-
-moduleDecls :: Hs.Module -> [Hs.Decl]
-moduleDecls (Hs.Module _ _ _ _ _ _ decls) = decls
-
--- We assume that all ``nameXYZ'' definitions are pattern bindings.
--- Only for these we really need the RHS.
--- Not all ``dXYZ'' definitions are pattern bindings ---
--- for those that are not, we currently just return the first RHS,
--- and will not look at it.
-filterDecls :: [Hs.Decl] -> [(String, Hs.Rhs)]
-filterDecls = foldr f []
- where
-   f (Hs.PatBind _loc (Hs.PVar (Hs.Ident varname)) rhs _binds) r = (varname, rhs) : r
-   f (Hs.FunBind ((Hs.Match _loc (Hs.Ident fName) _pats _mtype rhs _binds) : _)) r = (fName, rhs) : r
-   f _ r = r
-
-getNames :: String -> [(String, Hs.Rhs)] -> [(String, String)]
-getNames modul = h
-  where
-    h :: [(String, Hs.Rhs)] -> [(String, String)]
-    h [] = []
-    h ((name1, Hs.UnGuardedRhs rhs) : ds) = case stripPrefix infoDeclNamePrefix name1 of
-      Nothing -> h ds
-      Just unique -> case rhs of
-        Hs.Lit (Hs.String agdaName) -> expectDef hsIdentPrefix (expectDef hsSubIdentPrefix h) ds
-          where
-            hsName = hsIdentPrefix ++ unique
-            hsName2 = hsSubIdentPrefix ++ unique
-            -- Some names have no definitions, so we need to check
-            -- whether there is a definition on the next line,
-            -- and only on the next line.
-            -- Names without definition still can be referenced in .prof files.
-            -- TODO: Should we flag these in some way?
-            expectDef :: String -> ([(String, Hs.Rhs)] -> [(String, String)]) -> [(String, Hs.Rhs)] -> [(String, String)]
-            expectDef _ _ [] = [(hsName, agdaName)]
-            expectDef prefix cont ((name2, _) : ds') = case stripPrefix prefix name2 of
-              Nothing -> (hsName, agdaName) : h ds
-              Just unique' -> if unique == unique' -- sanity check
-                then (name2, agdaName) : cont ds'
-                else error $ "infodecl\n  " ++ name1 ++ " = " ++ show rhs ++ "\nsucceeded by definition\n  " ++ name2 ++ " = ..."
-        _ -> error $ "Unexpected RHS in infodecl:\n  " ++ modul ++ '.' : name1
-    h ((_name, _rhs) : ds) = h ds
-
-
-namesFromFile0 :: FilePath -> IO (String, [(String, String)])
-namesFromFile0 file = do
-  ss <- liftM lines $ readFile file
-  evalStateT `flip` ss $ do
-    hmod <- getModule
-    pairs <- getNames0 hmod
-    return (hmod, pairs)
-
-namesFromFile :: FilePath -> IO ((String, [(String, String)]), Int)
-namesFromFile file = do
-  parseResult <- trace (file ++ ": starting") $ Hs.parseFile file
-  case parseResult of
-    Hs.ParseFailed sloc msg -> fail $ file ++ ": " ++ show sloc ++ ": " ++ msg
-    Hs.ParseOk modul -> let
-        hmod = moduleName modul
-        declPairs = filterDecls $ moduleDecls modul
-        pairs = getNames hmod declPairs
-        pairLen (x, y) = length x + length y
-        forceLen = length hmod + sum (map pairLen pairs)
-      in -- thetrace serves not only for information,
-         -- but also to force evaluation.
-         trace (file ++ ": \t" ++ show (length pairs) ++ " names; " ++ shows forceLen " characters")
-         $ return ((hmod, pairs), forceLen)
-
-namesFromDir :: FilePath -> IO [((String, [(String, String)]), Int)]
-namesFromDir dir = do
-    files <- find always (fileType ==? RegularFile &&? extension ==? ".hs") dir
-    mapM namesFromFile files
diff --git a/src/agda-ghc-names/Find.hs b/src/agda-ghc-names/Find.hs
deleted file mode 100644
--- a/src/agda-ghc-names/Find.hs
+++ /dev/null
@@ -1,50 +0,0 @@
--- agda-ghc-names/Find.hs
--- Copyright 2015 by Wolfram Kahl
--- Licensed under the same terms as Agda
-
-module Find where
-
-import ResolveHsNames (getResolveHsNamesMap, splitLastDotM, splitMapApply)
-import qualified Data.Map as Map
-import Control.Monad (liftM)
-import System.Environment (getArgs)
-import System.IO (stderr, hPutStrLn)
-import System.Exit (exitFailure)
-
-find :: (String -> IO ()) -> [String] -> IO ()
-find printUsage args0 = let
-    usage = printUsage "find {-m} <directory> {names}"
-  in do
-  (args, moduleOnly, singleArg) <- case args0 of
-    [] -> usage >> exitFailure
-    "-m" : ss -> return (ss, True, False)
-    [_,_] -> return (args0, False, True)
-    _ -> return (args0, False, False)
-  case args of
-    [] -> usage
-    dir : hsIdents -> do
-      namesMap <- getResolveHsNamesMap dir
-      let  mapsTo k v = k ++ "\t |->  " ++ v
-           resolveMod m = unlines $ (m ++ ":")
-                      : map ('\t' :) (case Map.lookup m namesMap of
-                          Nothing -> ["=== Not found! ==="]
-                          Just m' -> (show (Map.size m') ++ " keys; size: " ++
-                                        show (length m + sum (map length (Map.elems m'))))
-                            : map (uncurry mapsTo) (Map.toList m')
-                        )
-           resolveUnqual hsId = let
-               f modName modMap r = case Map.lookup hsId modMap of
-                  Nothing -> r
-                  Just agdaId -> ((modName ++ '.' : hsId) `mapsTo` agdaId) : r
-               in unlines $ Map.foldrWithKey f [] namesMap
-           resolveQual hsId = let agdaId = splitMapApply namesMap hsId
-             in if singleArg then agdaId else (hsId `mapsTo` agdaId)
-           resolve = if moduleOnly
-             then resolveMod
-             else \ hsId -> case splitLastDotM hsId of
-               Nothing -> resolveUnqual hsId
-               Just _ -> resolveQual hsId
-      case hsIdents of
-          [] -> interact resolve
-          _ -> mapM_ (putStrLn . resolve) hsIdents
-
diff --git a/src/agda-ghc-names/FixProf.hs b/src/agda-ghc-names/FixProf.hs
deleted file mode 100644
--- a/src/agda-ghc-names/FixProf.hs
+++ /dev/null
@@ -1,118 +0,0 @@
--- agda-ghc-names/FixProf.hs
--- Copyright 2015 by Wolfram Kahl
--- Licensed under the same terms as Agda
-
--- Given a mapping |HsModname -> HsIdent -> Maybe AgdaIdent|,
--- transform a *.prof file into *.agdaIdents.prof
-
-
-module FixProf where
-
--- import ResolveHsNames (apply2M, getResolveHsNamesMap)
-import Data.Char (isSpace)
-import Data.List (stripPrefix)
--- import Control.Monad (liftM)
--- import System.Environment (getArgs)
-import System.IO (stderr, hPutStrLn)
-
-splitFirstDot :: String -> (String, Maybe String)
-splitFirstDot s = case span ('.' /=) s of
-  (hd, []) -> (hd, Nothing)
-  (hd, _ : tl) -> (hd, Just tl)
-
-resolveCC0 :: (String -> String -> Maybe String) -> String -> String -> (String, Maybe String)
-resolveCC0 resolve cc hmod = case splitFirstDot cc of
-  (hsIdent, mlocalCC) -> case resolve hmod hsIdent of
-    Nothing -> (hsIdent, mlocalCC)
-    Just agdaIdent -> (agdaIdent, mlocalCC)
-
-resolveRawCC :: (String -> String -> Maybe String) -> String -> String -> String
-resolveRawCC resolve cc hmod = case resolveCC0 resolve cc hmod of
-  (agdaIdent, m) -> case m of
-    Nothing -> agdaIdent
-    Just localCC -> agdaIdent ++ '.' : localCC
-
-resolveCC :: (String -> String -> Maybe String) -> String -> String -> String
-resolveCC resolve cc hmod = case stripPrefix "CAF:" cc of
-  Nothing -> resolveRawCC resolve cc hmod
-  Just cc' -> "CAF:" ++ resolveRawCC resolve cc' hmod
-
--- If |checkPrefix pre s == Just (k, s')|,
--- then |k| is the width of the ``|pre|'' column,
--- and |s'| contains the remaining columns.
-checkPrefix :: String -> String -> Maybe (Int, String)
-checkPrefix pre s = case stripPrefix pre s of
-  Just s' -> case span (' ' ==) s' of
-    (spaces, s'') -> Just (length pre + length spaces, s'')
-  _ -> Nothing
-
--- If |checkSepLine s == Just (ccWidth, modWidth)|,
--- then these are the widths of the first two columns
--- (assuming that the "no." is always indented three positions).
-checkSepLine :: String -> Maybe (Int, Int)
-checkSepLine s = case checkPrefix "COST CENTRE" s of
-  Just (ccWidth, s') -> case checkPrefix "MODULE" s' of
-      Just (modWidth0, s'') -> let
-          modWidth = case stripPrefix "no." s'' of
-            Just _ -> modWidth0 - 3
-            Nothing -> modWidth0
-        in Just (ccWidth, modWidth)
-      Nothing -> error $ "checkSepLine: unexpected line: " ++ show s
-  _ -> Nothing
-
--- In the body of *.prof files,
--- the COST CENTRE column is indented by call depth,
--- which we need to preserve.
--- |firstWord s| returns the pair consisting of the
--- initial spaces and the first word in |s|:
-firstWord :: String -> (String, String)
-firstWord s = case span isSpace s of
-  (spaces, s') -> (spaces, takeWhile (not . isSpace) s')
-
--- |splitLine ccWidth modWidth s = ((indent, ccName), modName, rest)|
-splitLine :: Int -> Int -> String -> ((String, String), String, String)
-splitLine ccWidth modWidth s = case splitAt ccWidth s of
-  (cc0, s') -> case splitAt modWidth s' of
-    (mod0, s'') -> (firstWord cc0, head (words mod0), s'')
-
-updateLine :: (String -> String -> Maybe String) -> Int -> Int -> Bool -> String -> (String, String)
-updateLine resolve ccWidth modWidth keepMod s = case splitLine ccWidth modWidth s of
-  ((indent, cc), hmod, s') -> (,) (indent ++ resolveCC resolve cc hmod)
-     (if keepMod then spaceOut modWidth hmod s' else s')
-
-spaceOut :: Int -> String -> String -> String
-spaceOut w s1 s2 = take w (s1 ++ repeat ' ') ++ ' ' : ' ' : s2
-
-updateLines :: (String -> String -> Maybe String) -> Int -> Int -> Bool -> [String] -> ((Int, [String]), [String])
-updateLines resolve ccWidth modWidth keepMod ls = case h id ls of
-    (ps, ls') -> let
-        w = maximum (map (length . fst) ps)
-        render (cc, rest) = spaceOut w cc rest
-      in ((w, map render ps), ls')
-  where
-    h acc [] = (acc [],[])
-    h acc ([] : ss) = (acc [], ss)
-    h acc (s : ss) = h (acc . (updateLine resolve ccWidth modWidth keepMod s :)) ss
-
-updateProf :: (String -> String -> Maybe String) -> Bool -> [String] -> [String]
-updateProf resolve keepMod [] = []
-updateProf resolve keepMod (s : ss) = case checkSepLine s of
-  Nothing -> s : updateProf resolve keepMod ss
-  Just (ccWidth, modWidth) -> let
-    ((w, new), rest) = updateLines resolve ccWidth modWidth keepMod (drop 1 ss)
-    s' = drop ccWidth s
-    s'' = if keepMod then s' else drop modWidth s'
-   in  spaceOut w "COST CENTRE" s''
-   :   []
-   :   new
-   ++  []
-   :   updateProf resolve keepMod rest
-
-updateProfFile :: IO () -> (String -> String -> Maybe String) -> Bool -> FilePath -> IO ()
-updateProfFile usage resolve keepMod path = case stripPrefix (reverse ".prof") (reverse path) of
-  Nothing -> usage
-  Just revBasename -> let path' = reverse revBasename ++ ".agdaIdents.prof" in do
-    s <- readFile path
-    hPutStrLn stderr $ "read " ++ path
-    writeFile path' . unlines . updateProf resolve keepMod $ lines s
-    hPutStrLn stderr $ "wrote " ++ path'
diff --git a/src/agda-ghc-names/ResolveHsNames.hs b/src/agda-ghc-names/ResolveHsNames.hs
deleted file mode 100644
--- a/src/agda-ghc-names/ResolveHsNames.hs
+++ /dev/null
@@ -1,82 +0,0 @@
--- ResolveHsNames.hs
--- Copyright 2015 by Wolfram Kahl
--- Licensed under the same terms as Agda
-
-module ResolveHsNames where
-
-import ExtractNames (namesFromDir)
-
-import Data.Map (Map)
-import qualified Data.Map as Map
-
-import Control.Arrow (second)
-import Control.Monad (liftM)
-
-import System.IO (stderr, hPutStrLn)
-import Data.Binary (encodeFile, decodeFileOrFail)
-import System.FilePath ((</>))
-
-mkResolveMap :: [(String, [(String, String)])] -> ([Int], Map String (Map String String))
-mkResolveMap = second Map.fromList . unzip . map f
-  where
-    f (k,ps) = let
-        m = Map.fromList ps
-        c = Map.size m
-      in c `seq` (c, (k,m))
-
-splitLastDotM :: String -> Maybe (String, String)
-splitLastDotM s = case span ('.' /=) $ reverse s of
-  (rev, []) -> Nothing
-  (revLast, '.' : revInit) -> Just (reverse revInit, reverse revLast)
-  _ -> error "splitLastDot: IMPOSSIBLE"
-
-splitLastDot :: String -> (String, String)
-splitLastDot s = maybe ([], s) id $ splitLastDotM s
-
-apply2M :: Map String (Map String String) -> String -> String -> Maybe String
-apply2M m modul hsIdent =  do
-    m' <- Map.lookup modul m
-    agdaIdent <- Map.lookup hsIdent m'
-    return agdaIdent
-apply2 :: Map String (Map String String) -> String -> String -> String
-apply2 m modul hsIdent = maybe hsIdent id $ apply2M m modul hsIdent
-
-splitMapApplyM :: Map String (Map String String) -> String -> Maybe String
-splitMapApplyM m s = uncurry (apply2M m) $ splitLastDot s
-
-splitMapApply :: Map String (Map String String) -> String -> String
-splitMapApply m s = maybe s id $ splitMapApplyM m s
-
-extractResolveHsNamesMap :: FilePath -> IO (Map String (Map String String))
-extractResolveHsNamesMap dir = do
-  (ps, sizes) <- liftM unzip $ namesFromDir dir
-  let (cs, m) = mkResolveMap ps
-  hPutStrLn stderr $ show (Map.size m) ++ " modules read; " ++ show (sum cs) ++ " identifiers; " ++ shows (sum sizes) " characters."
-  return m
-
-extractResolveHsNamesFctM :: FilePath -> IO (String -> Maybe String)
-extractResolveHsNamesFctM = liftM splitMapApplyM . extractResolveHsNamesMap
-
--- unresolved names are preserved:
-extractResolveHsNamesFct :: FilePath -> IO (String -> String)
-extractResolveHsNamesFct = liftM (\ f s -> maybe s id $ f s) . extractResolveHsNamesFctM
-
-hsIdentMapFilename :: FilePath
-hsIdentMapFilename = "agda-ghc-name-cache.dat"
-
-writeResolveHsNamesMap :: FilePath -> IO (FilePath, Map String (Map String String))
-writeResolveHsNamesMap dir = let outFile = dir </> hsIdentMapFilename in do
-      resolveMap <- extractResolveHsNamesMap dir
-      encodeFile outFile resolveMap
-      return (outFile, resolveMap)
-
-getResolveHsNamesMap :: FilePath -> IO (Map String (Map String String))
-getResolveHsNamesMap dir = let mapFile = dir </> hsIdentMapFilename in do
-        e <- decodeFileOrFail mapFile
-        case e of
-          Left (_offset, _msg) -> do
-            (_ , r) <- writeResolveHsNamesMap dir
-            return r
-          Right r -> do
-            hPutStrLn stderr $ "read " ++ mapFile
-            return r
diff --git a/src/agda-ghc-names/agda-ghc-names.hs b/src/agda-ghc-names/agda-ghc-names.hs
deleted file mode 100644
--- a/src/agda-ghc-names/agda-ghc-names.hs
+++ /dev/null
@@ -1,49 +0,0 @@
--- agda-ghc-names.hs
--- Copyright 2015 by Wolfram Kahl
--- Licensed under the same terms as Agda
-
-module Main (main) where
-
-import ResolveHsNames (getResolveHsNamesMap, writeResolveHsNamesMap, apply2M, splitMapApply)
-import FixProf (updateProfFile)
-import Find (find)
-
-import Data.Char (isSpace)
-import Data.List (stripPrefix)
-import Control.Monad (liftM)
-import System.Environment (getArgs)
-import System.IO (stderr, hPutStrLn)
-
-import Debug.Trace
-
-printUsage :: String -> IO ()
-printUsage cmd = hPutStrLn stderr $ "Usage: agda-ghc-names " ++ cmd
-
-main :: IO ()
-main = do
-  args0 <- getArgs
-  case args0 of
-    "extract"  : args -> extract  args
-    "fixprof"  : args -> fixprof  args
-    "find"     : args -> find     printUsage args
-    _ -> printUsage "(fixprof|extract|find) {command args.}"
-
-extract :: [String] -> IO ()
-extract args = case args of
-    [dir] -> do
-      (outFile, _) <- writeResolveHsNamesMap dir
-      hPutStrLn stderr $ "wrote " ++ outFile
-    _ -> printUsage "extract <directory>"
-
-fixprof :: [String] -> IO ()
-fixprof args = case args of
-    "+m" : args' -> fixProf' True args'
-    _ -> fixProf' False args
-
-fixProf' keepMod args = case args of
-    [] -> usage
-    [_] -> usage
-    dir : profs -> do
-      resolve <- liftM apply2M $ getResolveHsNamesMap dir
-      mapM_ (updateProfFile usage resolve keepMod) profs
-  where usage = printUsage "fixprof {+m} <dir> <File>.prof"
diff --git a/src/data/JS/agda-rts.js b/src/data/JS/agda-rts.js
new file mode 100644
--- /dev/null
+++ b/src/data/JS/agda-rts.js
@@ -0,0 +1,172 @@
+// NOTE:
+// Some of the primitives here are curried, some are not. All uncurried primitives are prefixed by 'u'.
+
+var biginteger = require("biginteger")
+
+// Integers
+
+exports.primIntegerFromString = function(x) {
+  return biginteger.BigInteger(x);
+};
+exports.primShowInteger = function(x) {
+  return x.toString();
+};
+
+exports.uprimIntegerPlus = function(x,y) {
+  return x.add(y);
+};
+exports.uprimIntegerMinus = function(x,y) {
+  return x.subtract(y);
+};
+exports.uprimIntegerMultiply = function(x,y) {
+  return x.multiply(y);
+};
+exports.uprimIntegerEqual = function(x,y) {
+  return x.compare(y) == 0;
+};
+exports.uprimIntegerGreaterOrEqualThan = function(x,y) {
+  return x.compare(y) >= 0;
+};
+exports.uprimIntegerLessThan = function(x,y) {
+  return x.compare(y) == -1;
+};
+
+exports.primNatMinus = function(x) {
+  return function(y) {
+    var z = x.subtract(y);
+    if (z.isNegative()) {
+      return biginteger.ZERO;
+    } else {
+      return z;
+    }
+  };
+};
+
+// Floats
+
+exports.primShowFloat = function(x) {
+  // See Issue #2192.
+  if (Number.isInteger(x)) {
+    if (Object.is(x,-0.0)) {
+      return ("-0.0");
+    } else {
+        var a = x.toString();
+        return (a + ".0");
+    }
+  } else {
+    return x.toString();
+  }
+};
+
+exports.primFloatEquality = function(x) {
+  return function(y) {
+    return Object.is(x,y);
+  };
+};
+
+exports.primFloatNumericalEquality = function(x) {
+  return function(y) {
+    return x==y;
+  };
+};
+
+exports.uprimFloatEquality = function(x, y) {
+  return Object.is(x,y);
+};
+
+exports.primFloatNumericalLess = function(x) {
+  return function(y) {
+    if(x == Number.NEGATIVE_INFINITY) {
+      return y != Number.NEGATIVE_INFINITY;
+    } else if(y == Number.NEGATIVE_INFINITY) {
+      return false;
+    } else if(isNaN(x)) {
+      return !isNaN(y);
+    } else if(isNaN(y)) {
+      return false;
+    } else {
+      return x<y;
+    }
+  };
+};
+
+exports.primFloatPlus = function(x) {
+  return function(y) {
+    return x+y;
+  };
+};
+exports.primFloatMinus = function(x) {
+  return function(y) {
+    return x-y;
+  };
+};
+exports.primFloatTimes = function(x) {
+  return function(y) {
+    return x*y;
+  };
+};
+
+exports.primFloatNegate = function(x) {
+  return -x;
+};
+
+exports.primFloatDiv = function(x) {
+  return function(y) {
+    return x/y;
+  };
+};
+exports.primFloatSqrt = function(x) {
+  return Math.sqrt(x);
+};
+
+exports.primSin = function(x) {
+  return Math.sin(x);
+};
+
+exports.primCos = function(x) {
+  return Math.cos(x);
+};
+
+exports.primTan = function(x) {
+  return Math.tan(x);
+};
+
+exports.primASin = function(x) {
+  return Math.asin(x);
+};
+
+exports.primACos = function(x) {
+  return Math.acos(x);
+};
+
+exports.primATan = function(x) {
+  return Math.atan(x);
+};
+
+exports.primATan2 = function(y) {
+  return function(x){
+    return Math.atan2(y,x);
+  }
+};
+
+exports.primExp = function(x) {
+  return Math.exp(x);
+};
+
+// As Javascript is strict, this should be fine in general. Not sure
+// what PSeq (Axiom ...) (...) should do?
+exports.primSeq = function(x, y) {
+  return y;
+};
+
+exports.primShowQName = function(x) {
+  return x["name"];
+};
+exports.uprimQNameEquality = function(x,y) {
+  return x["id"].compare(y["id"]) == 0 && x["moduleId"].compare(y["moduleId"]) == 0;
+};
+exports.primQNameEquality = function(x) {
+  return function(y) {
+    return exports.uprimQNameEquality(x, y);
+  };
+};
diff --git a/src/data/JS/biginteger.js b/src/data/JS/biginteger.js
new file mode 100644
--- /dev/null
+++ b/src/data/JS/biginteger.js
@@ -0,0 +1,1620 @@
+/*
+	JavaScript BigInteger library version 0.9.1
+	http://silentmatt.com/biginteger/
+
+	Copyright (c) 2009 Matthew Crumley <email@matthewcrumley.com>
+	Copyright (c) 2010,2011 by John Tobey <John.Tobey@gmail.com>
+	Licensed under the MIT license.
+
+	Support for arbitrary internal representation base was added by
+	Vitaly Magerya.
+*/
+
+/*
+	File: biginteger.js
+
+	Exports:
+
+		<BigInteger>
+*/
+(function(exports) {
+"use strict";
+/*
+	Class: BigInteger
+	An arbitrarily-large integer.
+
+	<BigInteger> objects should be considered immutable. None of the "built-in"
+	methods modify *this* or their arguments. All properties should be
+	considered private.
+
+	All the methods of <BigInteger> instances can be called "statically". The
+	static versions are convenient if you don't already have a <BigInteger>
+	object.
+
+	As an example, these calls are equivalent.
+
+	> BigInteger(4).multiply(5); // returns BigInteger(20);
+	> BigInteger.multiply(4, 5); // returns BigInteger(20);
+
+	> var a = 42;
+	> var a = BigInteger.toJSValue("0b101010"); // Not completely useless...
+*/
+
+var CONSTRUCT = {}; // Unique token to call "private" version of constructor
+
+/*
+	Constructor: BigInteger()
+	Convert a value to a <BigInteger>.
+
+	Although <BigInteger()> is the constructor for <BigInteger> objects, it is
+	best not to call it as a constructor. If *n* is a <BigInteger> object, it is
+	simply returned as-is. Otherwise, <BigInteger()> is equivalent to <parse>
+	without a radix argument.
+
+	> var n0 = BigInteger();      // Same as <BigInteger.ZERO>
+	> var n1 = BigInteger("123"); // Create a new <BigInteger> with value 123
+	> var n2 = BigInteger(123);   // Create a new <BigInteger> with value 123
+	> var n3 = BigInteger(n2);    // Return n2, unchanged
+
+	The constructor form only takes an array and a sign. *n* must be an
+	array of numbers in little-endian order, where each digit is between 0
+	and BigInteger.base.  The second parameter sets the sign: -1 for
+	negative, +1 for positive, or 0 for zero. The array is *not copied and
+	may be modified*. If the array contains only zeros, the sign parameter
+	is ignored and is forced to zero.
+
+	> new BigInteger([5], -1): create a new BigInteger with value -5
+
+	Parameters:
+
+		n - Value to convert to a <BigInteger>.
+
+	Returns:
+
+		A <BigInteger> value.
+
+	See Also:
+
+		<parse>, <BigInteger>
+*/
+function BigInteger(n, s, token) {
+	if (token !== CONSTRUCT) {
+		if (n instanceof BigInteger) {
+			return n;
+		}
+		else if (typeof n === "undefined") {
+			return ZERO;
+		}
+		return BigInteger.parse(n);
+	}
+
+	n = n || [];  // Provide the nullary constructor for subclasses.
+	while (n.length && !n[n.length - 1]) {
+		--n.length;
+	}
+	this._d = n;
+	this._s = n.length ? (s || 1) : 0;
+}
+
+BigInteger._construct = function(n, s) {
+	return new BigInteger(n, s, CONSTRUCT);
+};
+
+// Base-10 speedup hacks in parse, toString, exp10 and log functions
+// require base to be a power of 10. 10^7 is the largest such power
+// that won't cause a precision loss when digits are multiplied.
+var BigInteger_base = 10000000;
+var BigInteger_base_log10 = 7;
+
+BigInteger.base = BigInteger_base;
+BigInteger.base_log10 = BigInteger_base_log10;
+
+var ZERO = new BigInteger([], 0, CONSTRUCT);
+// Constant: ZERO
+// <BigInteger> 0.
+BigInteger.ZERO = ZERO;
+
+var ONE = new BigInteger([1], 1, CONSTRUCT);
+// Constant: ONE
+// <BigInteger> 1.
+BigInteger.ONE = ONE;
+
+var M_ONE = new BigInteger(ONE._d, -1, CONSTRUCT);
+// Constant: M_ONE
+// <BigInteger> -1.
+BigInteger.M_ONE = M_ONE;
+
+// Constant: _0
+// Shortcut for <ZERO>.
+BigInteger._0 = ZERO;
+
+// Constant: _1
+// Shortcut for <ONE>.
+BigInteger._1 = ONE;
+
+/*
+	Constant: small
+	Array of <BigIntegers> from 0 to 36.
+
+	These are used internally for parsing, but useful when you need a "small"
+	<BigInteger>.
+
+	See Also:
+
+		<ZERO>, <ONE>, <_0>, <_1>
+*/
+BigInteger.small = [
+	ZERO,
+	ONE,
+	/* Assuming BigInteger_base > 36 */
+	new BigInteger( [2], 1, CONSTRUCT),
+	new BigInteger( [3], 1, CONSTRUCT),
+	new BigInteger( [4], 1, CONSTRUCT),
+	new BigInteger( [5], 1, CONSTRUCT),
+	new BigInteger( [6], 1, CONSTRUCT),
+	new BigInteger( [7], 1, CONSTRUCT),
+	new BigInteger( [8], 1, CONSTRUCT),
+	new BigInteger( [9], 1, CONSTRUCT),
+	new BigInteger([10], 1, CONSTRUCT),
+	new BigInteger([11], 1, CONSTRUCT),
+	new BigInteger([12], 1, CONSTRUCT),
+	new BigInteger([13], 1, CONSTRUCT),
+	new BigInteger([14], 1, CONSTRUCT),
+	new BigInteger([15], 1, CONSTRUCT),
+	new BigInteger([16], 1, CONSTRUCT),
+	new BigInteger([17], 1, CONSTRUCT),
+	new BigInteger([18], 1, CONSTRUCT),
+	new BigInteger([19], 1, CONSTRUCT),
+	new BigInteger([20], 1, CONSTRUCT),
+	new BigInteger([21], 1, CONSTRUCT),
+	new BigInteger([22], 1, CONSTRUCT),
+	new BigInteger([23], 1, CONSTRUCT),
+	new BigInteger([24], 1, CONSTRUCT),
+	new BigInteger([25], 1, CONSTRUCT),
+	new BigInteger([26], 1, CONSTRUCT),
+	new BigInteger([27], 1, CONSTRUCT),
+	new BigInteger([28], 1, CONSTRUCT),
+	new BigInteger([29], 1, CONSTRUCT),
+	new BigInteger([30], 1, CONSTRUCT),
+	new BigInteger([31], 1, CONSTRUCT),
+	new BigInteger([32], 1, CONSTRUCT),
+	new BigInteger([33], 1, CONSTRUCT),
+	new BigInteger([34], 1, CONSTRUCT),
+	new BigInteger([35], 1, CONSTRUCT),
+	new BigInteger([36], 1, CONSTRUCT)
+];
+
+// Used for parsing/radix conversion
+BigInteger.digits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ".split("");
+
+/*
+	Method: toString
+	Convert a <BigInteger> to a string.
+
+	When *base* is greater than 10, letters are upper case.
+
+	Parameters:
+
+		base - Optional base to represent the number in (default is base 10).
+		       Must be between 2 and 36 inclusive, or an Error will be thrown.
+
+	Returns:
+
+		The string representation of the <BigInteger>.
+*/
+BigInteger.prototype.toString = function(base) {
+	base = +base || 10;
+	if (base < 2 || base > 36) {
+		throw new Error("illegal radix " + base + ".");
+	}
+	if (this._s === 0) {
+		return "0";
+	}
+	if (base === 10) {
+		var str = this._s < 0 ? "-" : "";
+		str += this._d[this._d.length - 1].toString();
+		for (var i = this._d.length - 2; i >= 0; i--) {
+			var group = this._d[i].toString();
+			while (group.length < BigInteger_base_log10) group = '0' + group;
+			str += group;
+		}
+		return str;
+	}
+	else {
+		var numerals = BigInteger.digits;
+		base = BigInteger.small[base];
+		var sign = this._s;
+
+		var n = this.abs();
+		var digits = [];
+		var digit;
+
+		while (n._s !== 0) {
+			var divmod = n.divRem(base);
+			n = divmod[0];
+			digit = divmod[1];
+			// TODO: This could be changed to unshift instead of reversing at the end.
+			// Benchmark both to compare speeds.
+			digits.push(numerals[digit.valueOf()]);
+		}
+		return (sign < 0 ? "-" : "") + digits.reverse().join("");
+	}
+};
+
+// Verify strings for parsing
+BigInteger.radixRegex = [
+	/^$/,
+	/^$/,
+	/^[01]*$/,
+	/^[012]*$/,
+	/^[0-3]*$/,
+	/^[0-4]*$/,
+	/^[0-5]*$/,
+	/^[0-6]*$/,
+	/^[0-7]*$/,
+	/^[0-8]*$/,
+	/^[0-9]*$/,
+	/^[0-9aA]*$/,
+	/^[0-9abAB]*$/,
+	/^[0-9abcABC]*$/,
+	/^[0-9a-dA-D]*$/,
+	/^[0-9a-eA-E]*$/,
+	/^[0-9a-fA-F]*$/,
+	/^[0-9a-gA-G]*$/,
+	/^[0-9a-hA-H]*$/,
+	/^[0-9a-iA-I]*$/,
+	/^[0-9a-jA-J]*$/,
+	/^[0-9a-kA-K]*$/,
+	/^[0-9a-lA-L]*$/,
+	/^[0-9a-mA-M]*$/,
+	/^[0-9a-nA-N]*$/,
+	/^[0-9a-oA-O]*$/,
+	/^[0-9a-pA-P]*$/,
+	/^[0-9a-qA-Q]*$/,
+	/^[0-9a-rA-R]*$/,
+	/^[0-9a-sA-S]*$/,
+	/^[0-9a-tA-T]*$/,
+	/^[0-9a-uA-U]*$/,
+	/^[0-9a-vA-V]*$/,
+	/^[0-9a-wA-W]*$/,
+	/^[0-9a-xA-X]*$/,
+	/^[0-9a-yA-Y]*$/,
+	/^[0-9a-zA-Z]*$/
+];
+
+/*
+	Function: parse
+	Parse a string into a <BigInteger>.
+
+	*base* is optional but, if provided, must be from 2 to 36 inclusive. If
+	*base* is not provided, it will be guessed based on the leading characters
+	of *s* as follows:
+
+	- "0x" or "0X": *base* = 16
+	- "0c" or "0C": *base* = 8
+	- "0b" or "0B": *base* = 2
+	- else: *base* = 10
+
+	If no base is provided, or *base* is 10, the number can be in exponential
+	form. For example, these are all valid:
+
+	> BigInteger.parse("1e9");              // Same as "1000000000"
+	> BigInteger.parse("1.234*10^3");       // Same as 1234
+	> BigInteger.parse("56789 * 10 ** -2"); // Same as 567
+
+	If any characters fall outside the range defined by the radix, an exception
+	will be thrown.
+
+	Parameters:
+
+		s - The string to parse.
+		base - Optional radix (default is to guess based on *s*).
+
+	Returns:
+
+		a <BigInteger> instance.
+*/
+BigInteger.parse = function(s, base) {
+	// Expands a number in exponential form to decimal form.
+	// expandExponential("-13.441*10^5") === "1344100";
+	// expandExponential("1.12300e-1") === "0.112300";
+	// expandExponential(1000000000000000000000000000000) === "1000000000000000000000000000000";
+	function expandExponential(str) {
+		str = str.replace(/\s*[*xX]\s*10\s*(\^|\*\*)\s*/, "e");
+
+		return str.replace(/^([+\-])?(\d+)\.?(\d*)[eE]([+\-]?\d+)$/, function(x, s, n, f, c) {
+			c = +c;
+			var l = c < 0;
+			var i = n.length + c;
+			x = (l ? n : f).length;
+			c = ((c = Math.abs(c)) >= x ? c - x + l : 0);
+			var z = (new Array(c + 1)).join("0");
+			var r = n + f;
+			return (s || "") + (l ? r = z + r : r += z).substr(0, i += l ? z.length : 0) + (i < r.length ? "." + r.substr(i) : "");
+		});
+	}
+
+	s = s.toString();
+	if (typeof base === "undefined" || +base === 10) {
+		s = expandExponential(s);
+	}
+
+	var prefixRE;
+	if (typeof base === "undefined") {
+		prefixRE = '0[xcb]';
+	}
+	else if (base == 16) {
+		prefixRE = '0x';
+	}
+	else if (base == 8) {
+		prefixRE = '0c';
+	}
+	else if (base == 2) {
+		prefixRE = '0b';
+	}
+	else {
+		prefixRE = '';
+	}
+	var parts = new RegExp('^([+\\-]?)(' + prefixRE + ')?([0-9a-z]*)(?:\\.\\d*)?$', 'i').exec(s);
+	if (parts) {
+		var sign = parts[1] || "+";
+		var baseSection = parts[2] || "";
+		var digits = parts[3] || "";
+
+		if (typeof base === "undefined") {
+			// Guess base
+			if (baseSection === "0x" || baseSection === "0X") { // Hex
+				base = 16;
+			}
+			else if (baseSection === "0c" || baseSection === "0C") { // Octal
+				base = 8;
+			}
+			else if (baseSection === "0b" || baseSection === "0B") { // Binary
+				base = 2;
+			}
+			else {
+				base = 10;
+			}
+		}
+		else if (base < 2 || base > 36) {
+			throw new Error("Illegal radix " + base + ".");
+		}
+
+		base = +base;
+
+		// Check for digits outside the range
+		if (!(BigInteger.radixRegex[base].test(digits))) {
+			throw new Error("Bad digit for radix " + base);
+		}
+
+		// Strip leading zeros, and convert to array
+		digits = digits.replace(/^0+/, "").split("");
+		if (digits.length === 0) {
+			return ZERO;
+		}
+
+		// Get the sign (we know it's not zero)
+		sign = (sign === "-") ? -1 : 1;
+
+		// Optimize 10
+		if (base == 10) {
+			var d = [];
+			while (digits.length >= BigInteger_base_log10) {
+				d.push(parseInt(digits.splice(digits.length-BigInteger.base_log10, BigInteger.base_log10).join(''), 10));
+			}
+			d.push(parseInt(digits.join(''), 10));
+			return new BigInteger(d, sign, CONSTRUCT);
+		}
+
+		// Do the conversion
+		var d = ZERO;
+		base = BigInteger.small[base];
+		var small = BigInteger.small;
+		for (var i = 0; i < digits.length; i++) {
+			d = d.multiply(base).add(small[parseInt(digits[i], 36)]);
+		}
+		return new BigInteger(d._d, sign, CONSTRUCT);
+	}
+	else {
+		throw new Error("Invalid BigInteger format: " + s);
+	}
+};
+
+/*
+	Function: add
+	Add two <BigIntegers>.
+
+	Parameters:
+
+		n - The number to add to *this*. Will be converted to a <BigInteger>.
+
+	Returns:
+
+		The numbers added together.
+
+	See Also:
+
+		<subtract>, <multiply>, <quotient>, <next>
+*/
+BigInteger.prototype.add = function(n) {
+	if (this._s === 0) {
+		return BigInteger(n);
+	}
+
+	n = BigInteger(n);
+	if (n._s === 0) {
+		return this;
+	}
+	if (this._s !== n._s) {
+		n = n.negate();
+		return this.subtract(n);
+	}
+
+	var a = this._d;
+	var b = n._d;
+	var al = a.length;
+	var bl = b.length;
+	var sum = new Array(Math.max(al, bl) + 1);
+	var size = Math.min(al, bl);
+	var carry = 0;
+	var digit;
+
+	for (var i = 0; i < size; i++) {
+		digit = a[i] + b[i] + carry;
+		sum[i] = digit % BigInteger_base;
+		carry = (digit / BigInteger_base) | 0;
+	}
+	if (bl > al) {
+		a = b;
+		al = bl;
+	}
+	for (i = size; carry && i < al; i++) {
+		digit = a[i] + carry;
+		sum[i] = digit % BigInteger_base;
+		carry = (digit / BigInteger_base) | 0;
+	}
+	if (carry) {
+		sum[i] = carry;
+	}
+
+	for ( ; i < al; i++) {
+		sum[i] = a[i];
+	}
+
+	return new BigInteger(sum, this._s, CONSTRUCT);
+};
+
+/*
+	Function: negate
+	Get the additive inverse of a <BigInteger>.
+
+	Returns:
+
+		A <BigInteger> with the same magnatude, but with the opposite sign.
+
+	See Also:
+
+		<abs>
+*/
+BigInteger.prototype.negate = function() {
+	return new BigInteger(this._d, (-this._s) | 0, CONSTRUCT);
+};
+
+/*
+	Function: abs
+	Get the absolute value of a <BigInteger>.
+
+	Returns:
+
+		A <BigInteger> with the same magnatude, but always positive (or zero).
+
+	See Also:
+
+		<negate>
+*/
+BigInteger.prototype.abs = function() {
+	return (this._s < 0) ? this.negate() : this;
+};
+
+/*
+	Function: subtract
+	Subtract two <BigIntegers>.
+
+	Parameters:
+
+		n - The number to subtract from *this*. Will be converted to a <BigInteger>.
+
+	Returns:
+
+		The *n* subtracted from *this*.
+
+	See Also:
+
+		<add>, <multiply>, <quotient>, <prev>
+*/
+BigInteger.prototype.subtract = function(n) {
+	if (this._s === 0) {
+		return BigInteger(n).negate();
+	}
+
+	n = BigInteger(n);
+	if (n._s === 0) {
+		return this;
+	}
+	if (this._s !== n._s) {
+		n = n.negate();
+		return this.add(n);
+	}
+
+	var m = this;
+	// negative - negative => -|a| - -|b| => -|a| + |b| => |b| - |a|
+	if (this._s < 0) {
+		m = new BigInteger(n._d, 1, CONSTRUCT);
+		n = new BigInteger(this._d, 1, CONSTRUCT);
+	}
+
+	// Both are positive => a - b
+	var sign = m.compareAbs(n);
+	if (sign === 0) {
+		return ZERO;
+	}
+	else if (sign < 0) {
+		// swap m and n
+		var t = n;
+		n = m;
+		m = t;
+	}
+
+	// a > b
+	var a = m._d;
+	var b = n._d;
+	var al = a.length;
+	var bl = b.length;
+	var diff = new Array(al); // al >= bl since a > b
+	var borrow = 0;
+	var i;
+	var digit;
+
+	for (i = 0; i < bl; i++) {
+		digit = a[i] - borrow - b[i];
+		if (digit < 0) {
+			digit += BigInteger_base;
+			borrow = 1;
+		}
+		else {
+			borrow = 0;
+		}
+		diff[i] = digit;
+	}
+	for (i = bl; i < al; i++) {
+		digit = a[i] - borrow;
+		if (digit < 0) {
+			digit += BigInteger_base;
+		}
+		else {
+			diff[i++] = digit;
+			break;
+		}
+		diff[i] = digit;
+	}
+	for ( ; i < al; i++) {
+		diff[i] = a[i];
+	}
+
+	return new BigInteger(diff, sign, CONSTRUCT);
+};
+
+(function() {
+	function addOne(n, sign) {
+		var a = n._d;
+		var sum = a.slice();
+		var carry = true;
+		var i = 0;
+
+		while (true) {
+			var digit = (a[i] || 0) + 1;
+			sum[i] = digit % BigInteger_base;
+			if (digit <= BigInteger_base - 1) {
+				break;
+			}
+			++i;
+		}
+
+		return new BigInteger(sum, sign, CONSTRUCT);
+	}
+
+	function subtractOne(n, sign) {
+		var a = n._d;
+		var sum = a.slice();
+		var borrow = true;
+		var i = 0;
+
+		while (true) {
+			var digit = (a[i] || 0) - 1;
+			if (digit < 0) {
+				sum[i] = digit + BigInteger_base;
+			}
+			else {
+				sum[i] = digit;
+				break;
+			}
+			++i;
+		}
+
+		return new BigInteger(sum, sign, CONSTRUCT);
+	}
+
+	/*
+		Function: next
+		Get the next <BigInteger> (add one).
+
+		Returns:
+
+			*this* + 1.
+
+		See Also:
+
+			<add>, <prev>
+	*/
+	BigInteger.prototype.next = function() {
+		switch (this._s) {
+		case 0:
+			return ONE;
+		case -1:
+			return subtractOne(this, -1);
+		// case 1:
+		default:
+			return addOne(this, 1);
+		}
+	};
+
+	/*
+		Function: prev
+		Get the previous <BigInteger> (subtract one).
+
+		Returns:
+
+			*this* - 1.
+
+		See Also:
+
+			<next>, <subtract>
+	*/
+	BigInteger.prototype.prev = function() {
+		switch (this._s) {
+		case 0:
+			return M_ONE;
+		case -1:
+			return addOne(this, -1);
+		// case 1:
+		default:
+			return subtractOne(this, 1);
+		}
+	};
+})();
+
+/*
+	Function: compareAbs
+	Compare the absolute value of two <BigIntegers>.
+
+	Calling <compareAbs> is faster than calling <abs> twice, then <compare>.
+
+	Parameters:
+
+		n - The number to compare to *this*. Will be converted to a <BigInteger>.
+
+	Returns:
+
+		-1, 0, or +1 if *|this|* is less than, equal to, or greater than *|n|*.
+
+	See Also:
+
+		<compare>, <abs>
+*/
+BigInteger.prototype.compareAbs = function(n) {
+	if (this === n) {
+		return 0;
+	}
+
+	if (!(n instanceof BigInteger)) {
+		if (!isFinite(n)) {
+			return(isNaN(n) ? n : -1);
+		}
+		n = BigInteger(n);
+	}
+
+	if (this._s === 0) {
+		return (n._s !== 0) ? -1 : 0;
+	}
+	if (n._s === 0) {
+		return 1;
+	}
+
+	var l = this._d.length;
+	var nl = n._d.length;
+	if (l < nl) {
+		return -1;
+	}
+	else if (l > nl) {
+		return 1;
+	}
+
+	var a = this._d;
+	var b = n._d;
+	for (var i = l-1; i >= 0; i--) {
+		if (a[i] !== b[i]) {
+			return a[i] < b[i] ? -1 : 1;
+		}
+	}
+
+	return 0;
+};
+
+/*
+	Function: compare
+	Compare two <BigIntegers>.
+
+	Parameters:
+
+		n - The number to compare to *this*. Will be converted to a <BigInteger>.
+
+	Returns:
+
+		-1, 0, or +1 if *this* is less than, equal to, or greater than *n*.
+
+	See Also:
+
+		<compareAbs>, <isPositive>, <isNegative>, <isUnit>
+*/
+BigInteger.prototype.compare = function(n) {
+	if (this === n) {
+		return 0;
+	}
+
+	n = BigInteger(n);
+
+	if (this._s === 0) {
+		return -n._s;
+	}
+
+	if (this._s === n._s) { // both positive or both negative
+		var cmp = this.compareAbs(n);
+		return cmp * this._s;
+	}
+	else {
+		return this._s;
+	}
+};
+
+/*
+	Function: isUnit
+	Return true iff *this* is either 1 or -1.
+
+	Returns:
+
+		true if *this* compares equal to <BigInteger.ONE> or <BigInteger.M_ONE>.
+
+	See Also:
+
+		<isZero>, <isNegative>, <isPositive>, <compareAbs>, <compare>,
+		<BigInteger.ONE>, <BigInteger.M_ONE>
+*/
+BigInteger.prototype.isUnit = function() {
+	return this === ONE ||
+		this === M_ONE ||
+		(this._d.length === 1 && this._d[0] === 1);
+};
+
+/*
+	Function: multiply
+	Multiply two <BigIntegers>.
+
+	Parameters:
+
+		n - The number to multiply *this* by. Will be converted to a
+		<BigInteger>.
+
+	Returns:
+
+		The numbers multiplied together.
+
+	See Also:
+
+		<add>, <subtract>, <quotient>, <square>
+*/
+BigInteger.prototype.multiply = function(n) {
+	// TODO: Consider adding Karatsuba multiplication for large numbers
+	if (this._s === 0) {
+		return ZERO;
+	}
+
+	n = BigInteger(n);
+	if (n._s === 0) {
+		return ZERO;
+	}
+	if (this.isUnit()) {
+		if (this._s < 0) {
+			return n.negate();
+		}
+		return n;
+	}
+	if (n.isUnit()) {
+		if (n._s < 0) {
+			return this.negate();
+		}
+		return this;
+	}
+	if (this === n) {
+		return this.square();
+	}
+
+	var r = (this._d.length >= n._d.length);
+	var a = (r ? this : n)._d; // a will be longer than b
+	var b = (r ? n : this)._d;
+	var al = a.length;
+	var bl = b.length;
+
+	var pl = al + bl;
+	var partial = new Array(pl);
+	var i;
+	for (i = 0; i < pl; i++) {
+		partial[i] = 0;
+	}
+
+	for (i = 0; i < bl; i++) {
+		var carry = 0;
+		var bi = b[i];
+		var jlimit = al + i;
+		var digit;
+		for (var j = i; j < jlimit; j++) {
+			digit = partial[j] + bi * a[j - i] + carry;
+			carry = (digit / BigInteger_base) | 0;
+			partial[j] = (digit % BigInteger_base) | 0;
+		}
+		if (carry) {
+			digit = partial[j] + carry;
+			carry = (digit / BigInteger_base) | 0;
+			partial[j] = digit % BigInteger_base;
+		}
+	}
+	return new BigInteger(partial, this._s * n._s, CONSTRUCT);
+};
+
+// Multiply a BigInteger by a single-digit native number
+// Assumes that this and n are >= 0
+// This is not really intended to be used outside the library itself
+BigInteger.prototype.multiplySingleDigit = function(n) {
+	if (n === 0 || this._s === 0) {
+		return ZERO;
+	}
+	if (n === 1) {
+		return this;
+	}
+
+	var digit;
+	if (this._d.length === 1) {
+		digit = this._d[0] * n;
+		if (digit >= BigInteger_base) {
+			return new BigInteger([(digit % BigInteger_base)|0,
+					(digit / BigInteger_base)|0], 1, CONSTRUCT);
+		}
+		return new BigInteger([digit], 1, CONSTRUCT);
+	}
+
+	if (n === 2) {
+		return this.add(this);
+	}
+	if (this.isUnit()) {
+		return new BigInteger([n], 1, CONSTRUCT);
+	}
+
+	var a = this._d;
+	var al = a.length;
+
+	var pl = al + 1;
+	var partial = new Array(pl);
+	for (var i = 0; i < pl; i++) {
+		partial[i] = 0;
+	}
+
+	var carry = 0;
+	for (var j = 0; j < al; j++) {
+		digit = n * a[j] + carry;
+		carry = (digit / BigInteger_base) | 0;
+		partial[j] = (digit % BigInteger_base) | 0;
+	}
+	if (carry) {
+		partial[j] = carry;
+	}
+
+	return new BigInteger(partial, 1, CONSTRUCT);
+};
+
+/*
+	Function: square
+	Multiply a <BigInteger> by itself.
+
+	This is slightly faster than regular multiplication, since it removes the
+	duplicated multiplcations.
+
+	Returns:
+
+		> this.multiply(this)
+
+	See Also:
+		<multiply>
+*/
+BigInteger.prototype.square = function() {
+	// Normally, squaring a 10-digit number would take 100 multiplications.
+	// Of these 10 are unique diagonals, of the remaining 90 (100-10), 45 are repeated.
+	// This procedure saves (N*(N-1))/2 multiplications, (e.g., 45 of 100 multiplies).
+	// Based on code by Gary Darby, Intellitech Systems Inc., www.DelphiForFun.org
+
+	if (this._s === 0) {
+		return ZERO;
+	}
+	if (this.isUnit()) {
+		return ONE;
+	}
+
+	var digits = this._d;
+	var length = digits.length;
+	var imult1 = new Array(length + length + 1);
+	var product, carry, k;
+	var i;
+
+	// Calculate diagonal
+	for (i = 0; i < length; i++) {
+		k = i * 2;
+		product = digits[i] * digits[i];
+		carry = (product / BigInteger_base) | 0;
+		imult1[k] = product % BigInteger_base;
+		imult1[k + 1] = carry;
+	}
+
+	// Calculate repeating part
+	for (i = 0; i < length; i++) {
+		carry = 0;
+		k = i * 2 + 1;
+		for (var j = i + 1; j < length; j++, k++) {
+			product = digits[j] * digits[i] * 2 + imult1[k] + carry;
+			carry = (product / BigInteger_base) | 0;
+			imult1[k] = product % BigInteger_base;
+		}
+		k = length + i;
+		var digit = carry + imult1[k];
+		carry = (digit / BigInteger_base) | 0;
+		imult1[k] = digit % BigInteger_base;
+		imult1[k + 1] += carry;
+	}
+
+	return new BigInteger(imult1, 1, CONSTRUCT);
+};
+
+/*
+	Function: quotient
+	Divide two <BigIntegers> and truncate towards zero.
+
+	<quotient> throws an exception if *n* is zero.
+
+	Parameters:
+
+		n - The number to divide *this* by. Will be converted to a <BigInteger>.
+
+	Returns:
+
+		The *this* / *n*, truncated to an integer.
+
+	See Also:
+
+		<add>, <subtract>, <multiply>, <divRem>, <remainder>
+*/
+BigInteger.prototype.quotient = function(n) {
+	return this.divRem(n)[0];
+};
+
+/*
+	Function: divide
+	Deprecated synonym for <quotient>.
+*/
+BigInteger.prototype.divide = BigInteger.prototype.quotient;
+
+/*
+	Function: remainder
+	Calculate the remainder of two <BigIntegers>.
+
+	<remainder> throws an exception if *n* is zero.
+
+	Parameters:
+
+		n - The remainder after *this* is divided *this* by *n*. Will be
+		    converted to a <BigInteger>.
+
+	Returns:
+
+		*this* % *n*.
+
+	See Also:
+
+		<divRem>, <quotient>
+*/
+BigInteger.prototype.remainder = function(n) {
+	return this.divRem(n)[1];
+};
+
+/*
+	Function: divRem
+	Calculate the integer quotient and remainder of two <BigIntegers>.
+
+	<divRem> throws an exception if *n* is zero.
+
+	Parameters:
+
+		n - The number to divide *this* by. Will be converted to a <BigInteger>.
+
+	Returns:
+
+		A two-element array containing the quotient and the remainder.
+
+		> a.divRem(b)
+
+		is exactly equivalent to
+
+		> [a.quotient(b), a.remainder(b)]
+
+		except it is faster, because they are calculated at the same time.
+
+	See Also:
+
+		<quotient>, <remainder>
+*/
+BigInteger.prototype.divRem = function(n) {
+	n = BigInteger(n);
+	if (n._s === 0) {
+		throw new Error("Divide by zero");
+	}
+	if (this._s === 0) {
+		return [ZERO, ZERO];
+	}
+	if (n._d.length === 1) {
+		return this.divRemSmall(n._s * n._d[0]);
+	}
+
+	// Test for easy cases -- |n1| <= |n2|
+	switch (this.compareAbs(n)) {
+	case 0: // n1 == n2
+		return [this._s === n._s ? ONE : M_ONE, ZERO];
+	case -1: // |n1| < |n2|
+		return [ZERO, this];
+	}
+
+	var sign = this._s * n._s;
+	var a = n.abs();
+	var b_digits = this._d;
+	var b_index = b_digits.length;
+	var digits = n._d.length;
+	var quot = [];
+	var guess;
+
+	var part = new BigInteger([], 0, CONSTRUCT);
+
+	while (b_index) {
+		part._d.unshift(b_digits[--b_index]);
+		part = new BigInteger(part._d, 1, CONSTRUCT);
+
+		if (part.compareAbs(n) < 0) {
+			quot.push(0);
+			continue;
+		}
+		if (part._s === 0) {
+			guess = 0;
+		}
+		else {
+			var xlen = part._d.length, ylen = a._d.length;
+			var highx = part._d[xlen-1]*BigInteger_base + part._d[xlen-2];
+			var highy = a._d[ylen-1]*BigInteger_base + a._d[ylen-2];
+			if (part._d.length > a._d.length) {
+				// The length of part._d can either match a._d length,
+				// or exceed it by one.
+				highx = (highx+1)*BigInteger_base;
+			}
+			guess = Math.ceil(highx/highy);
+		}
+		do {
+			var check = a.multiplySingleDigit(guess);
+			if (check.compareAbs(part) <= 0) {
+				break;
+			}
+			guess--;
+		} while (guess);
+
+		quot.push(guess);
+		if (!guess) {
+			continue;
+		}
+		var diff = part.subtract(check);
+		part._d = diff._d.slice();
+	}
+
+	return [new BigInteger(quot.reverse(), sign, CONSTRUCT),
+		   new BigInteger(part._d, this._s, CONSTRUCT)];
+};
+
+// Throws an exception if n is outside of (-BigInteger.base, -1] or
+// [1, BigInteger.base).  It's not necessary to call this, since the
+// other division functions will call it if they are able to.
+BigInteger.prototype.divRemSmall = function(n) {
+	var r;
+	n = +n;
+	if (n === 0) {
+		throw new Error("Divide by zero");
+	}
+
+	var n_s = n < 0 ? -1 : 1;
+	var sign = this._s * n_s;
+	n = Math.abs(n);
+
+	if (n < 1 || n >= BigInteger_base) {
+		throw new Error("Argument out of range");
+	}
+
+	if (this._s === 0) {
+		return [ZERO, ZERO];
+	}
+
+	if (n === 1 || n === -1) {
+		return [(sign === 1) ? this.abs() : new BigInteger(this._d, sign, CONSTRUCT), ZERO];
+	}
+
+	// 2 <= n < BigInteger_base
+
+	// divide a single digit by a single digit
+	if (this._d.length === 1) {
+		var q = new BigInteger([(this._d[0] / n) | 0], 1, CONSTRUCT);
+		r = new BigInteger([(this._d[0] % n) | 0], 1, CONSTRUCT);
+		if (sign < 0) {
+			q = q.negate();
+		}
+		if (this._s < 0) {
+			r = r.negate();
+		}
+		return [q, r];
+	}
+
+	var digits = this._d.slice();
+	var quot = new Array(digits.length);
+	var part = 0;
+	var diff = 0;
+	var i = 0;
+	var guess;
+
+	while (digits.length) {
+		part = part * BigInteger_base + digits[digits.length - 1];
+		if (part < n) {
+			quot[i++] = 0;
+			digits.pop();
+			diff = BigInteger_base * diff + part;
+			continue;
+		}
+		if (part === 0) {
+			guess = 0;
+		}
+		else {
+			guess = (part / n) | 0;
+		}
+
+		var check = n * guess;
+		diff = part - check;
+		quot[i++] = guess;
+		if (!guess) {
+			digits.pop();
+			continue;
+		}
+
+		digits.pop();
+		part = diff;
+	}
+
+	r = new BigInteger([diff], 1, CONSTRUCT);
+	if (this._s < 0) {
+		r = r.negate();
+	}
+	return [new BigInteger(quot.reverse(), sign, CONSTRUCT), r];
+};
+
+/*
+	Function: isEven
+	Return true iff *this* is divisible by two.
+
+	Note that <BigInteger.ZERO> is even.
+
+	Returns:
+
+		true if *this* is even, false otherwise.
+
+	See Also:
+
+		<isOdd>
+*/
+BigInteger.prototype.isEven = function() {
+	var digits = this._d;
+	return this._s === 0 || digits.length === 0 || (digits[0] % 2) === 0;
+};
+
+/*
+	Function: isOdd
+	Return true iff *this* is not divisible by two.
+
+	Returns:
+
+		true if *this* is odd, false otherwise.
+
+	See Also:
+
+		<isEven>
+*/
+BigInteger.prototype.isOdd = function() {
+	return !this.isEven();
+};
+
+/*
+	Function: sign
+	Get the sign of a <BigInteger>.
+
+	Returns:
+
+		* -1 if *this* < 0
+		* 0 if *this* == 0
+		* +1 if *this* > 0
+
+	See Also:
+
+		<isZero>, <isPositive>, <isNegative>, <compare>, <BigInteger.ZERO>
+*/
+BigInteger.prototype.sign = function() {
+	return this._s;
+};
+
+/*
+	Function: isPositive
+	Return true iff *this* > 0.
+
+	Returns:
+
+		true if *this*.compare(<BigInteger.ZERO>) == 1.
+
+	See Also:
+
+		<sign>, <isZero>, <isNegative>, <isUnit>, <compare>, <BigInteger.ZERO>
+*/
+BigInteger.prototype.isPositive = function() {
+	return this._s > 0;
+};
+
+/*
+	Function: isNegative
+	Return true iff *this* < 0.
+
+	Returns:
+
+		true if *this*.compare(<BigInteger.ZERO>) == -1.
+
+	See Also:
+
+		<sign>, <isPositive>, <isZero>, <isUnit>, <compare>, <BigInteger.ZERO>
+*/
+BigInteger.prototype.isNegative = function() {
+	return this._s < 0;
+};
+
+/*
+	Function: isZero
+	Return true iff *this* == 0.
+
+	Returns:
+
+		true if *this*.compare(<BigInteger.ZERO>) == 0.
+
+	See Also:
+
+		<sign>, <isPositive>, <isNegative>, <isUnit>, <BigInteger.ZERO>
+*/
+BigInteger.prototype.isZero = function() {
+	return this._s === 0;
+};
+
+/*
+	Function: exp10
+	Multiply a <BigInteger> by a power of 10.
+
+	This is equivalent to, but faster than
+
+	> if (n >= 0) {
+	>     return this.multiply(BigInteger("1e" + n));
+	> }
+	> else { // n <= 0
+	>     return this.quotient(BigInteger("1e" + -n));
+	> }
+
+	Parameters:
+
+		n - The power of 10 to multiply *this* by. *n* is converted to a
+		javascipt number and must be no greater than <BigInteger.MAX_EXP>
+		(0x7FFFFFFF), or an exception will be thrown.
+
+	Returns:
+
+		*this* * (10 ** *n*), truncated to an integer if necessary.
+
+	See Also:
+
+		<pow>, <multiply>
+*/
+BigInteger.prototype.exp10 = function(n) {
+	n = +n;
+	if (n === 0) {
+		return this;
+	}
+	if (Math.abs(n) > Number(MAX_EXP)) {
+		throw new Error("exponent too large in BigInteger.exp10");
+	}
+	// Optimization for this == 0. This also keeps us from having to trim zeros in the positive n case
+	if (this._s === 0) {
+		return ZERO;
+	}
+	if (n > 0) {
+		var k = new BigInteger(this._d.slice(), this._s, CONSTRUCT);
+
+		for (; n >= BigInteger_base_log10; n -= BigInteger_base_log10) {
+			k._d.unshift(0);
+		}
+		if (n == 0)
+			return k;
+		k._s = 1;
+		k = k.multiplySingleDigit(Math.pow(10, n));
+		return (this._s < 0 ? k.negate() : k);
+	} else if (-n >= this._d.length*BigInteger_base_log10) {
+		return ZERO;
+	} else {
+		var k = new BigInteger(this._d.slice(), this._s, CONSTRUCT);
+
+		for (n = -n; n >= BigInteger_base_log10; n -= BigInteger_base_log10) {
+			k._d.shift();
+		}
+		return (n == 0) ? k : k.divRemSmall(Math.pow(10, n))[0];
+	}
+};
+
+/*
+	Function: pow
+	Raise a <BigInteger> to a power.
+
+	In this implementation, 0**0 is 1.
+
+	Parameters:
+
+		n - The exponent to raise *this* by. *n* must be no greater than
+		<BigInteger.MAX_EXP> (0x7FFFFFFF), or an exception will be thrown.
+
+	Returns:
+
+		*this* raised to the *nth* power.
+
+	See Also:
+
+		<modPow>
+*/
+BigInteger.prototype.pow = function(n) {
+	if (this.isUnit()) {
+		if (this._s > 0) {
+			return this;
+		}
+		else {
+			return BigInteger(n).isOdd() ? this : this.negate();
+		}
+	}
+
+	n = BigInteger(n);
+	if (n._s === 0) {
+		return ONE;
+	}
+	else if (n._s < 0) {
+		if (this._s === 0) {
+			throw new Error("Divide by zero");
+		}
+		else {
+			return ZERO;
+		}
+	}
+	if (this._s === 0) {
+		return ZERO;
+	}
+	if (n.isUnit()) {
+		return this;
+	}
+
+	if (n.compareAbs(MAX_EXP) > 0) {
+		throw new Error("exponent too large in BigInteger.pow");
+	}
+	var x = this;
+	var aux = ONE;
+	var two = BigInteger.small[2];
+
+	while (n.isPositive()) {
+		if (n.isOdd()) {
+			aux = aux.multiply(x);
+			if (n.isUnit()) {
+				return aux;
+			}
+		}
+		x = x.square();
+		n = n.quotient(two);
+	}
+
+	return aux;
+};
+
+/*
+	Function: modPow
+	Raise a <BigInteger> to a power (mod m).
+
+	Because it is reduced by a modulus, <modPow> is not limited by
+	<BigInteger.MAX_EXP> like <pow>.
+
+	Parameters:
+
+		exponent - The exponent to raise *this* by. Must be positive.
+		modulus - The modulus.
+
+	Returns:
+
+		*this* ^ *exponent* (mod *modulus*).
+
+	See Also:
+
+		<pow>, <mod>
+*/
+BigInteger.prototype.modPow = function(exponent, modulus) {
+	var result = ONE;
+	var base = this;
+
+	while (exponent.isPositive()) {
+		if (exponent.isOdd()) {
+			result = result.multiply(base).remainder(modulus);
+		}
+
+		exponent = exponent.quotient(BigInteger.small[2]);
+		if (exponent.isPositive()) {
+			base = base.square().remainder(modulus);
+		}
+	}
+
+	return result;
+};
+
+/*
+	Function: log
+	Get the natural logarithm of a <BigInteger> as a native JavaScript number.
+
+	This is equivalent to
+
+	> Math.log(this.toJSValue())
+
+	but handles values outside of the native number range.
+
+	Returns:
+
+		log( *this* )
+
+	See Also:
+
+		<toJSValue>
+*/
+BigInteger.prototype.log = function() {
+	switch (this._s) {
+	case 0:	 return -Infinity;
+	case -1: return NaN;
+	default: // Fall through.
+	}
+
+	var l = this._d.length;
+
+	if (l*BigInteger_base_log10 < 30) {
+		return Math.log(this.valueOf());
+	}
+
+	var N = Math.ceil(30/BigInteger_base_log10);
+	var firstNdigits = this._d.slice(l - N);
+	return Math.log((new BigInteger(firstNdigits, 1, CONSTRUCT)).valueOf()) + (l - N) * Math.log(BigInteger_base);
+};
+
+/*
+	Function: valueOf
+	Convert a <BigInteger> to a native JavaScript integer.
+
+	This is called automatically by JavaScipt to convert a <BigInteger> to a
+	native value.
+
+	Returns:
+
+		> parseInt(this.toString(), 10)
+
+	See Also:
+
+		<toString>, <toJSValue>
+*/
+BigInteger.prototype.valueOf = function() {
+	return parseInt(this.toString(), 10);
+};
+
+/*
+	Function: toJSValue
+	Convert a <BigInteger> to a native JavaScript integer.
+
+	This is the same as valueOf, but more explicitly named.
+
+	Returns:
+
+		> parseInt(this.toString(), 10)
+
+	See Also:
+
+		<toString>, <valueOf>
+*/
+BigInteger.prototype.toJSValue = function() {
+	return parseInt(this.toString(), 10);
+};
+
+var MAX_EXP = BigInteger(0x7FFFFFFF);
+// Constant: MAX_EXP
+// The largest exponent allowed in <pow> and <exp10> (0x7FFFFFFF or 2147483647).
+BigInteger.MAX_EXP = MAX_EXP;
+
+(function() {
+	function makeUnary(fn) {
+		return function(a) {
+			return fn.call(BigInteger(a));
+		};
+	}
+
+	function makeBinary(fn) {
+		return function(a, b) {
+			return fn.call(BigInteger(a), BigInteger(b));
+		};
+	}
+
+	function makeTrinary(fn) {
+		return function(a, b, c) {
+			return fn.call(BigInteger(a), BigInteger(b), BigInteger(c));
+		};
+	}
+
+	(function() {
+		var i, fn;
+		var unary = "toJSValue,isEven,isOdd,sign,isZero,isNegative,abs,isUnit,square,negate,isPositive,toString,next,prev,log".split(",");
+		var binary = "compare,remainder,divRem,subtract,add,quotient,divide,multiply,pow,compareAbs".split(",");
+		var trinary = ["modPow"];
+
+		for (i = 0; i < unary.length; i++) {
+			fn = unary[i];
+			BigInteger[fn] = makeUnary(BigInteger.prototype[fn]);
+		}
+
+		for (i = 0; i < binary.length; i++) {
+			fn = binary[i];
+			BigInteger[fn] = makeBinary(BigInteger.prototype[fn]);
+		}
+
+		for (i = 0; i < trinary.length; i++) {
+			fn = trinary[i];
+			BigInteger[fn] = makeTrinary(BigInteger.prototype[fn]);
+		}
+
+		BigInteger.exp10 = function(x, n) {
+			return BigInteger(x).exp10(n);
+		};
+	})();
+})();
+
+exports.BigInteger = BigInteger;
+})(typeof exports !== 'undefined' ? exports : this);
diff --git a/src/data/MAlonzo/src/MAlonzo/RTE.hs b/src/data/MAlonzo/src/MAlonzo/RTE.hs
--- a/src/data/MAlonzo/src/MAlonzo/RTE.hs
+++ b/src/data/MAlonzo/src/MAlonzo/RTE.hs
@@ -2,6 +2,7 @@
 
 import Unsafe.Coerce
 import GHC.Prim
+import Numeric.IEEE ( IEEE(identicalIEEE) )
 
 -- Special version of coerce that plays well with rules.
 {-# INLINE [1] coe #-}
@@ -9,13 +10,17 @@
 {-# RULES "coerce-id" forall (x :: a) . coe x = x #-}
 
 -- Builtin QNames.
-data QName = QName { nameId, moduleId :: Integer, qnameString :: String}
+data QName = QName { nameId, moduleId :: Integer, qnameString :: String, qnameFixity :: Fixity }
 
+data Assoc      = NonAssoc | LeftAssoc | RightAssoc
+data Precedence = Unrelated | Related Integer
+data Fixity     = Fixity Assoc Precedence
+
 instance Eq QName where
-  QName a b _ == QName c d _ = (a, b) == (c, d)
+  QName a b _ _ == QName c d _ _ = (a, b) == (c, d)
 
 instance Ord QName where
-  compare (QName a b _) (QName c d _) = compare (a, b) (c, d)
+  compare (QName a b _ _) (QName c d _ _) = compare (a, b) (c, d)
 
 erased :: a
 erased = coe (\ _ -> erased)
@@ -26,3 +31,65 @@
 mazUnreachableError :: a
 mazUnreachableError = error ("Agda: unreachable code reached.")
 
+addInt :: Integer -> Integer -> Integer
+addInt = (+)
+
+subInt :: Integer -> Integer -> Integer
+subInt = (-)
+
+mulInt :: Integer -> Integer -> Integer
+mulInt = (*)
+
+geqInt :: Integer -> Integer -> Bool
+geqInt = (>=)
+
+ltInt :: Integer -> Integer -> Bool
+ltInt = (<)
+
+eqInt :: Integer -> Integer -> Bool
+eqInt = (==)
+
+quotInt :: Integer -> Integer -> Integer
+quotInt = quot
+
+remInt :: Integer -> Integer -> Integer
+remInt = rem
+
+eqFloat :: Double -> Double -> Bool
+eqFloat x y = identicalIEEE x y || (isNaN x && isNaN y)
+
+eqNumFloat :: Double -> Double -> Bool
+eqNumFloat = (==)
+
+negativeZero :: Double
+negativeZero = -0.0
+
+positiveInfinity :: Double
+positiveInfinity = 1.0 / 0.0
+
+negativeInfinity :: Double
+negativeInfinity = -positiveInfinity
+
+positiveNaN :: Double
+positiveNaN = 0.0 / 0.0
+
+negativeNaN :: Double
+negativeNaN = -positiveNaN
+
+-- Adapted from the same function on Agda.Syntax.Literal.
+compareFloat :: Double -> Double -> Ordering
+compareFloat x y
+  | identicalIEEE x y          = EQ
+  | isNegInf x                 = LT
+  | isNegInf y                 = GT
+  | isNaN x && isNaN y         = EQ
+  | isNaN x                    = LT
+  | isNaN y                    = GT
+  | otherwise                  = compare x y
+  where
+    isNegInf z = z < 0 && isInfinite z
+
+ltNumFloat :: Double -> Double -> Bool
+ltNumFloat x y = case compareFloat x y of
+                LT -> True
+                _  -> False
diff --git a/src/data/agda.sty b/src/data/agda.sty
--- a/src/data/agda.sty
+++ b/src/data/agda.sty
@@ -195,6 +195,7 @@
     \definecolor{AgdaDatatype}              {HTML}{000000}
     \definecolor{AgdaField}                 {HTML}{000000}
     \definecolor{AgdaFunction}              {HTML}{000000}
+    \definecolor{AgdaMacro}                 {HTML}{000000}
     \definecolor{AgdaModule}                {HTML}{000000}
     \definecolor{AgdaPostulate}             {HTML}{000000}
     \definecolor{AgdaPrimitive}             {HTML}{000000}
@@ -342,7 +343,7 @@
 
 % Misc.
 \newcommand{\AgdaHole}[1]{\colorbox{AgdaHole}{#1}}
-\long\def\AgdaHide#1{} % Used to hide code from LaTeX.
+\long\def\AgdaHide#1{\ignorespaces} % Used to hide code from LaTeX.
 
 \newcommand{\AgdaIndent}[1]{$\;\;$}
 
@@ -358,10 +359,172 @@
   \newdimen\mathindent\mathindent\leftmargini
 \fi
 
-\newenvironment{code}%
-{\noindent\ignorespaces\advance\leftskip\mathindent\AgdaCodeStyle\pboxed}%
-{\endpboxed\par\noindent%
-\ignorespacesafterend}
+% Adds the given amount of vertical space and starts a new line.
+%
+% The implementation comes from lhs2TeX's polycode.fmt, written by
+% Andres Löh.
+\newcommand{\AgdaNewlineWithVerticalSpace}[1]{%
+  {\parskip=0pt\parindent=0pt\par\vskip #1\noindent}}
+
+% 0: No space around code. 1: Space around code.
+\newcounter{Agda@SpaceAroundCode}
+
+% Use this command to avoid extra space around code blocks.
+\newcommand{\AgdaNoSpaceAroundCode}{%
+  \setcounter{Agda@SpaceAroundCode}{0}}
+
+% Use this command to include extra space around code blocks.
+\newcommand{\AgdaSpaceAroundCode}{%
+  \setcounter{Agda@SpaceAroundCode}{1}}
+
+% By default space is inserted around code blocks.
+\AgdaSpaceAroundCode{}
+
+% Sometimes one might want to break up a code block into multiple
+% pieces, but keep code in different blocks aligned with respect to
+% each other. Then one can use the AgdaAlign environment. Example
+% usage:
+%
+%   \begin{AgdaAlign}
+%   \begin{code}
+%     code
+%       code  (more code)
+%   \end{code}
+%   Explanation...
+%   \begin{code}
+%     aligned with "code"
+%       code  (aligned with (more code))
+%   \end{code}
+%   \end{AgdaAlign}
+%
+% Note that AgdaAlign environments should not be nested.
+%
+% Sometimes one might also want to hide code in the middle of a code
+% block. This can be accomplished in the following way:
+%
+%   \begin{AgdaAlign}
+%   \begin{code}
+%     visible
+%   \end{code}
+%   \AgdaHide{
+%   \begin{code}
+%     hidden
+%   \end{code}}
+%   \begin{code}
+%     visible
+%   \end{code}
+%   \end{AgdaAlign}
+%
+% However, the result may be ugly: extra space is perhaps inserted
+% around the code blocks.
+%
+% The AgdaSuppressSpace environment ensures that extra space is only
+% inserted before the first code block, and after the last one (but
+% not if \AgdaNoSpaceAroundCode{} is used).
+%
+% The environment takes one argument, the number of wrapped code
+% blocks (excluding hidden ones). Example usage:
+%
+%   \begin{AgdaAlign}
+%   \begin{code}
+%     code
+%       more code
+%   \end{code}
+%   Explanation...
+%   \begin{AgdaSuppressSpace}{2}
+%   \begin{code}
+%     aligned with "code"
+%       aligned with "more code"
+%   \end{code}
+%   \AgdaHide{
+%   \begin{code}
+%     hidden code
+%   \end{code}}
+%   \begin{code}
+%       also aligned with "more code"
+%   \end{code}
+%   \end{AgdaSuppressSpace}
+%   \end{AgdaAlign}
+%
+% Note that AgdaSuppressSpace environments should not be nested.
+%
+% There is also a combined environment, AgdaMultiCode, that combines
+% the effects of AgdaAlign and AgdaSuppressSpace.
+
+% 0: AgdaAlign is not active. 1: AgdaAlign is active.
+\newcounter{Agda@Align}
+\setcounter{Agda@Align}{0}
+
+% The current code block.
+\newcounter{Agda@AlignCurrent}
+
+\newcommand{\Agda@AlignStart}{%
+  \setcounter{Agda@Align}{1}%
+  \setcounter{Agda@AlignCurrent}{1}}
+
+\newcommand{\Agda@AlignEnd}{\setcounter{Agda@Align}{0}}
+
+\newenvironment{AgdaAlign}{%
+  \Agda@AlignStart{}}{%
+  \Agda@AlignEnd{}%
+  \ignorespacesafterend}
+
+% 0: AgdaSuppressSpace is not active. 1: AgdaSuppressSpace is active.
+\newcounter{Agda@Suppress}
+\setcounter{Agda@Suppress}{0}
+
+% The current code block.
+\newcounter{Agda@SuppressCurrent}
+
+% The expected number of code blocks.
+\newcounter{Agda@SuppressLast}
+
+\newcommand{\Agda@SuppressStart}[1]{%
+  \setcounter{Agda@Suppress}{1}%
+  \setcounter{Agda@SuppressLast}{#1}%
+  \setcounter{Agda@SuppressCurrent}{1}}
+
+\newcommand{\Agda@SuppressEnd}{\setcounter{Agda@Suppress}{0}}
+
+\newenvironment{AgdaSuppressSpace}[1]{%
+  \Agda@SuppressStart{#1}}{%
+  \Agda@SuppressEnd{}%
+  \ignorespacesafterend}
+
+\newenvironment{AgdaMultiCode}[1]{%
+  \Agda@AlignStart{}%
+  \Agda@SuppressStart{#1}}{%
+  \Agda@SuppressEnd{}%
+  \Agda@AlignEnd{}%
+  \ignorespacesafterend}
+
+% The code environment.
+%
+% The implementation is based on plainhscode in lhs2TeX's
+% polycode.fmt, written by Andres Löh.
+\newenvironment{code}{%
+  \ifthenelse{\value{Agda@SpaceAroundCode} = 0 \or%
+              \not \(\value{Agda@Suppress} = 0 \or%
+                     \value{Agda@SuppressCurrent} = 1\)}{%
+    \AgdaNewlineWithVerticalSpace{0pt}}{%
+    \AgdaNewlineWithVerticalSpace{\abovedisplayskip}}%
+  \advance\leftskip\mathindent%
+  \AgdaCodeStyle%
+  \pboxed%
+  \ifthenelse{\value{Agda@Align} = 0}{}{%
+    \ifthenelse{\value{Agda@AlignCurrent} = 1}{%
+      \savecolumns}{%
+      \restorecolumns}}}{%
+  \endpboxed%
+  \ifthenelse{\value{Agda@SpaceAroundCode} = 0 \or%
+              \not \(\value{Agda@Suppress} = 0 \or%
+                     \value{Agda@SuppressCurrent} =%
+                     \value{Agda@SuppressLast}\)}{%
+    \AgdaNewlineWithVerticalSpace{0pt}}{%
+    \AgdaNewlineWithVerticalSpace{\belowdisplayskip}}%
+  \stepcounter{Agda@AlignCurrent}%
+  \stepcounter{Agda@SuppressCurrent}%
+  \ignorespacesafterend}
 
 % Default column for polytable.
 \defaultcolumn{@{~}l@{~}}
diff --git a/src/data/emacs-mode/agda-input.el b/src/data/emacs-mode/agda-input.el
--- a/src/data/emacs-mode/agda-input.el
+++ b/src/data/emacs-mode/agda-input.el
@@ -470,14 +470,63 @@
 
   ;; Blackboard bold letters.
 
-  ("bn"   . ("ℕ"))
-  ("bz"   . ("ℤ"))
-  ("bq"   . ("ℚ"))
-  ("br"   . ("ℝ"))
-  ("bc"   . ("ℂ"))
-  ("bp"   . ("ℙ"))
-  ("bb"   . ("𝔹"))
-  ("bsum" . ("⅀"))
+  ("bA"   . ("𝔸"))
+  ("bB"   . ("𝔹"))
+  ("bC"   . ("ℂ"))
+  ("bD"   . ("𝔻"))
+  ("bE"   . ("𝔼"))
+  ("bF"   . ("𝔽"))
+  ("bG"   . ("𝔾"))
+  ("bH"   . ("ℍ"))
+  ("bI"   . ("𝕀"))
+  ("bJ"   . ("𝕁"))
+  ("bK"   . ("𝕂"))
+  ("bL"   . ("𝕃"))
+  ("bM"   . ("𝕄"))
+  ("bN"   . ("ℕ"))
+  ("bO"   . ("𝕆"))
+  ("bP"   . ("ℙ"))
+  ("bQ"   . ("ℚ"))
+  ("bR"   . ("ℝ"))
+  ("bS"   . ("𝕊"))
+  ("bT"   . ("𝕋"))
+  ("bU"   . ("𝕌"))
+  ("bV"   . ("𝕍"))
+  ("bW"   . ("𝕎"))
+  ("bX"   . ("𝕏"))
+  ("bY"   . ("𝕐"))
+  ("bZ"   . ("ℤ"))
+  ("bGG"  . ("ℾ"))
+  ("bGP"  . ("ℿ"))
+  ("bGS"  . ("⅀"))
+  ("ba"   . ("𝕒"))
+  ("bb"   . ("𝕓"))
+  ("bc"   . ("𝕔"))
+  ("bd"   . ("𝕕"))
+  ("be"   . ("𝕖"))
+  ("bf"   . ("𝕗"))
+  ("bg"   . ("𝕘"))
+  ("bh"   . ("𝕙"))
+  ("bi"   . ("𝕚"))
+  ("bj"   . ("𝕛"))
+  ("bk"   . ("𝕜"))
+  ("bl"   . ("𝕝"))
+  ("bm"   . ("𝕞"))
+  ("bn"   . ("𝕟"))
+  ("bo"   . ("𝕠"))
+  ("bp"   . ("𝕡"))
+  ("bq"   . ("𝕢"))
+  ("br"   . ("𝕣"))
+  ("bs"   . ("𝕤"))
+  ("bt"   . ("𝕥"))
+  ("bu"   . ("𝕦"))
+  ("bv"   . ("𝕧"))
+  ("bw"   . ("𝕨"))
+  ("bx"   . ("𝕩"))
+  ("by"   . ("𝕪"))
+  ("bz"   . ("𝕫"))
+  ("bGg"  . ("ℽ"))
+  ("bGp"  . ("ℼ"))
 
   ;; Blackboard bold numbers.
 
@@ -511,6 +560,9 @@
 
   ("lbag" . ("⟅"))
   ("rbag" . ("⟆"))
+
+  ("(|" . ("⦇"))
+  ("|)" . ("⦈"))
 
   ;; Primes.
 
diff --git a/src/data/emacs-mode/agda2-abbrevs.el b/src/data/emacs-mode/agda2-abbrevs.el
--- a/src/data/emacs-mode/agda2-abbrevs.el
+++ b/src/data/emacs-mode/agda2-abbrevs.el
@@ -18,11 +18,6 @@
   nil
   "data " _ " : Set where\n")
 
-(define-skeleton agda2-abbrevs-codata
-  "Inserts a codata template."
-  nil
-  "codata " _ " : Set where\n")
-
 (define-skeleton agda2-abbrevs-record
   "Inserts a record type template."
   nil
@@ -54,13 +49,18 @@
   nil
   "∀ {" _ "} ")
 
+(define-skeleton agda2-abbrevs-code-block
+  "Inserts a code block."
+  nil
+  "\\begin{code}\n  " _ "\n\\end{code}\n")
+
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; Abbrevs
 
 (defvar agda2-abbrevs-defaults '(
   ("m"   "" agda2-abbrevs-module)
   ("d"   "" agda2-abbrevs-data)
-  ("c"   "" agda2-abbrevs-codata)
+  ("c"   "" agda2-abbrevs-code-block)
   ("re"  "" agda2-abbrevs-record)
   ("rec" "" agda2-abbrevs-record-value)
   ("u"   "" agda2-abbrevs-using)
diff --git a/src/data/emacs-mode/agda2-highlight.el b/src/data/emacs-mode/agda2-highlight.el
--- a/src/data/emacs-mode/agda2-highlight.el
+++ b/src/data/emacs-mode/agda2-highlight.el
@@ -129,6 +129,9 @@
             (agda2-highlight-termination-problem-face
              :foreground "black"
              :background "light salmon")
+            (agda2-highlight-positivity-problem-face
+             :foreground "black"
+             :background "peru")
             (agda2-highlight-incomplete-pattern-face
              :foreground "black"
              :background "purple")
@@ -340,6 +343,12 @@
   "The face used for termination problems."
   :group 'agda2-highlight-faces)
 
+(defface agda2-highlight-positivity-problem-face
+  '((t (:background "peru"
+        :foreground "black")))
+  "The face used for positivity problems."
+  :group 'agda2-highlight-faces)
+
 (defface agda2-highlight-incomplete-pattern-face
   '((t (:background "wheat"
         :foreground "black")))
@@ -376,6 +385,7 @@
     (unsolvedmeta           . agda2-highlight-unsolved-meta-face)
     (unsolvedconstraint     . agda2-highlight-unsolved-constraint-face)
     (terminationproblem     . agda2-highlight-termination-problem-face)
+    (positivityproblem      . agda2-highlight-positivity-problem-face)
     (incompletepattern      . agda2-highlight-incomplete-pattern-face)
     (typechecks             . agda2-highlight-typechecks-face))
   "Alist mapping code aspects to the face used when displaying them.
@@ -403,6 +413,7 @@
 `string'                 Strings.
 `symbol'                 Symbols like forall, =, ->, etc.
 `terminationproblem'     Termination problems.
+`positivityproblem'      Positivity problems.
 `typechecks'             Code which is being type-checked.
 `unsolvedconstraint'     Unsolved constraints, not connected to meta
                            variables.
diff --git a/src/data/emacs-mode/agda2-mode-pkg.el b/src/data/emacs-mode/agda2-mode-pkg.el
new file mode 100644
--- /dev/null
+++ b/src/data/emacs-mode/agda2-mode-pkg.el
@@ -0,0 +1,2 @@
+(define-package "agda2-mode" "2.5.1"
+  "interactive development for Agda, a dependently typed functional programming language")
diff --git a/src/data/emacs-mode/agda2-mode.el b/src/data/emacs-mode/agda2-mode.el
--- a/src/data/emacs-mode/agda2-mode.el
+++ b/src/data/emacs-mode/agda2-mode.el
@@ -10,7 +10,7 @@
 
 ;;; Code:
 
-(defvar agda2-version "2.5.1.2"
+(defvar agda2-version "2.5.2"
   "The version of the Agda mode.
 Note that the same version of the Agda executable must be used.")
 
@@ -93,19 +93,27 @@
   :type '(repeat string)
   :group 'agda2)
 
+(defvar agda2-backends '("GHC" "GHCNoMain" "JS" "LaTeX")
+  "Compilation backends.")
+
 (defcustom agda2-backend
-  "MAlonzo"
-  "The backend which is used to compile Agda programs."
-  :type '(choice (const "MAlonzo")
-                 (const "MAlonzoNoMain")
-                 (const "Epic")
-                 (const "JS"))
+  'ask
+  "The backend used to compile Agda programs."
+  :type `(choice (const :tag "Ask every time" ask)
+                 ,@(mapcar (lambda (x) `(const ,x)) agda2-backends))
   :group 'agda2)
 
 (defcustom agda2-toplevel-module "Agda.Interaction.GhciTop"
   "The name of the Agda toplevel module."
   :type 'string :group 'agda2)
 
+(defcustom agda2-warning-window-max-height
+  0.35
+  "The maximum height of the warning window.
+A multiple of the frame height."
+  :type 'number
+  :group 'agda2)
+
 (defcustom agda2-information-window-max-height
   0.35
   "The maximum height of the information window.
@@ -197,7 +205,7 @@
                         (modify-syntax-entry keys "w" tbl)))
                     (standard-syntax-table))
     ;; Then override the remaining special cases.
-    (dolist (cs '((?- . "w 12b") (?\n . "> b")
+    (dolist (cs '((?{ . "(}1n") (?} . "){4n") (?- . "w 123b") (?\n . "> b")
                   (?. . ".") (?\; . ".") (?_ . ".") (?! . ".")))
       (modify-syntax-entry (car cs) (cdr cs) tbl))
     tbl)
@@ -223,7 +231,7 @@
     (agda2-remove-annotations                "\C-c\C-x\C-d"       (global)       "Remove goals and highlighting (\"deactivate\")")
     (agda2-display-implicit-arguments        "\C-c\C-x\C-h"       (global)       "Toggle display of hidden arguments")
     (agda2-show-constraints                  ,(kbd "C-c C-=")     (global)       "Show constraints")
-    (agda2-solveAll                          ,(kbd "C-c C-s")     (global)       "Solve constraints")
+    (agda2-solve-maybe-all                   ,(kbd "C-c C-s")     (local global) "Solve constraints")
     (agda2-show-goals                        ,(kbd "C-c C-?")     (global)       "Show goals")
     (agda2-next-goal                         "\C-c\C-f"           (global)       "Next goal") ; Forward.
     (agda2-previous-goal                     "\C-c\C-b"           (global)       "Previous goal") ; Back.
@@ -244,14 +252,14 @@
     (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")
+    (agda2-set-program-version               "\C-c\C-x\C-s"       (global)       "Switch to another version of Agda")
     (eri-indent                  ,(kbd "TAB"))
     (eri-indent-reverse          [S-iso-lefttab])
     (eri-indent-reverse          [S-lefttab])
     (eri-indent-reverse          [S-tab])
     (agda2-goto-definition-mouse [mouse-2])
     (agda2-goto-definition-keyboard "\M-.")
-    (agda2-go-back                  "\M-*")
+    (agda2-go-back                  ,(if (version< emacs-version "25.1") "\M-*" "\M-,"))
     )
   "Table of commands, used to build keymaps and menus.
 Each element has the form (CMD &optional KEYS WHERE DESC) where
@@ -288,6 +296,9 @@
 (defvar agda2-info-buffer nil
   "Agda information buffer.")
 
+(defvar agda2-warning-buffer nil
+  "Agda warnings buffer.")
+
 (defvar agda2-process-buffer nil
   "Agda subprocess buffer.
 Set in `agda2-restart'.")
@@ -431,6 +442,8 @@
  (force-mode-line-update)
  ;; Protect global value of default-input-method from set-input-method.
  (make-local-variable 'default-input-method)
+ ;; Don't take script into account when determining word boundaries
+ (set (make-local-variable 'word-combining-categories) (cons '(nil . nil) word-combining-categories))
  (set-input-method "Agda")
  ;; Highlighting etc. is removed when we switch from the Agda mode.
  ;; Use case: When a file M.lagda with a local variables list
@@ -453,7 +466,7 @@
          (output (with-output-to-string
                    (call-process agda2-program-name
                                  nil standard-output nil "--version")))
-         (version (and (string-match "^Agda version \\([0-9.]+\\)$" output)
+         (version (and (string-match "^Agda version \\([0-9.]+\\)" output)
                        (match-string 1 output))))
     (unless (equal version agda2-version)
       (error "The Agda mode's version (%s) does not match that of %s (%s)."
@@ -746,7 +759,7 @@
                   (or ask (string-match "\\`\\s *\\'" txt)))
              (setq txt (read-string (concat want ": ") nil nil txt t)))
             (t (setq input-from-goal t)))
-      (apply 'agda2-go t t t cmd
+      (apply 'agda2-go t input-from-goal t cmd
              (format "%d" g)
              (if input-from-goal (agda2-goal-Range o) (agda2-mkRange nil))
              (agda2-string-quote txt) args))))
@@ -774,22 +787,16 @@
             ))
 
 (defun agda2-measure-load-time
-  (&optional highlighting-level dont-touch continuation)
+  (&optional highlighting-level continuation)
   "Load the current buffer and print how much time it takes.
 \(Wall-clock time.)
 
 The given HIGHLIGHTING-LEVEL is used (if non-nil).
 
-The file is first saved and \"touched\", unless DONT-TOUCH is
-non-nil.
-
 If CONTINUATION is non-nil, then CONTINUATION is applied to the
 resulting time (represented as a string)."
   (interactive)
   (agda2-abort-if-in-progress)
-  (unless dont-touch
-    (save-buffer)
-    (shell-command (concat "touch \"" (buffer-file-name) "\"")))
   (let* ((agda2-highlight-level
           (or highlighting-level agda2-highlight-level)))
     (setq agda2-measure-data (cons continuation (current-time)))
@@ -800,11 +807,22 @@
 
 The variable `agda2-backend' determines which backend is used."
   (interactive)
-  (agda2-go t t t "Cmd_compile"
-            agda2-backend
-            (agda2-string-quote (buffer-file-name))
-            (agda2-list-quote agda2-program-args)
-            ))
+  (let ((backend (cond ((equal agda2-backend "MAlonzo")       "GHC")
+                       ((equal agda2-backend "MAlonzoNoMain") "GHCNoMain")
+                       ((equal agda2-backend 'ask)
+                        (completing-read "Backend: " agda2-backends
+                                         nil t nil nil nil
+                                         'inherit-input-method))
+                       (t agda2-backend))))
+    (unless (member backend agda2-backends)
+      (if (equal backend "")
+          (error "No backend chosen")
+        (error "Invalid backend: %s" backend)))
+    (agda2-go t t t "Cmd_compile"
+              backend
+              (agda2-string-quote (buffer-file-name))
+              (agda2-list-quote agda2-program-args)
+              )))
 
 (defun agda2-give()
   "Give to the goal at point the expression in it" (interactive)
@@ -867,21 +885,25 @@
 (defun agda2-make-case-action-extendlam (newcls)
   "Replace definition of extended lambda with new clauses NEWCLS and reload."
   (agda2-forget-all-goals);; we reload later anyway.
-  (let* ((pmax (- (re-search-forward "\\([^!]}\\)\\|;") 1))
+  (let* ((p0 (point))
+         (pmax (re-search-forward "!}"))
          (bracketCount 0)
+         (p1 (goto-char (+ (current-indentation) (line-beginning-position))))
+         (indent (current-column))
          cl)
+    (goto-char p0)
     (re-search-backward "{!")
-      (while (and (not (equal (preceding-char) ?\;)) (>= bracketCount 0))
-        (backward-char)
-        (if (equal (preceding-char) ?}) (incf bracketCount))
-        (if (equal (preceding-char) ?{) (decf bracketCount)))
-    (let ((p (point)))
+    (while (and (not (equal (preceding-char) ?\;)) (>= bracketCount 0) (> (point) p1))
+      (backward-char)
+      (if (equal (preceding-char) ?}) (incf bracketCount))
+      (if (equal (preceding-char) ?{) (decf bracketCount)))
+    (let* ((is-lambda-where (= (point) p1))
+           (p (point)))
       (delete-region (point) pmax)
-      (insert " ")
+      (if (not is-lambda-where) (insert " "))
       (while (setq cl (pop newcls))
         (insert cl)
-        (if newcls (insert " ; ")))
-      (insert " ")
+        (if newcls (if is-lambda-where (insert "\n" (make-string indent ? )) (insert " ; "))))
       (goto-char p)))
   (agda2-load))
 
@@ -891,6 +913,42 @@
 major mode)."
   (setq agda2-buffer-external-status status))
 
+(defun agda2-warning-buffer nil
+  "Creates the Agda warning buffer, if it does not already exist.
+The buffer is returned."
+  (unless (buffer-live-p agda2-warning-buffer)
+    (setq agda2-warning-buffer
+          (generate-new-buffer "*Agda warnings*"))
+
+    (with-current-buffer agda2-warning-buffer
+      (compilation-mode "AgdaInfo")
+      ;; Support for jumping to positions mentioned in the text.
+      (set (make-local-variable 'compilation-error-regexp-alist)
+           '(("\\([\\\\/][^[:space:]]*\\):\\([0-9]+\\),\\([0-9]+\\)-\\(\\([0-9]+\\),\\)?\\([0-9]+\\)"
+              1 (2 . 5) (3 . 6))))
+      ;; No support for recompilation. The key binding is removed, and
+      ;; attempts to run `recompile' will (hopefully) result in an
+      ;; error.
+      (let ((map (copy-keymap (current-local-map))))
+        (define-key map (kbd "g") 'undefined)
+        (use-local-map map))
+      (set (make-local-variable 'compile-command)
+           'agda2-does-not-support-compilation-via-the-compilation-mode)
+
+      (set-syntax-table agda2-mode-syntax-table)
+      (set (make-local-variable 'word-combining-categories) (cons '(nil . nil) word-combining-categories))
+      (set-input-method "Agda")))
+
+  agda2-warning-buffer)
+
+(defun agda2-font-syntactic-face (state)
+  (cond ((nth 4 state)
+         ( save-excursion
+           (goto-char (nth 8 state))
+           (cond ((looking-at "--[[:space:]\n]") 'font-lock-comment-face)
+                 ((looking-at "{-[^#]") 'font-lock-comment-face)
+          )))))
+
 (defun agda2-info-buffer nil
   "Creates the Agda info buffer, if it does not already exist.
 The buffer is returned."
@@ -914,6 +972,7 @@
            'agda2-does-not-support-compilation-via-the-compilation-mode)
 
       (set-syntax-table agda2-mode-syntax-table)
+      (set (make-local-variable 'word-combining-categories) (cons '(nil . nil) word-combining-categories))
       (set-input-method "Agda")))
 
   agda2-info-buffer)
@@ -996,6 +1055,90 @@
               (goto-char (point-max))
             (goto-char (point-min))))))))
 
+(defun agda2-close-warning nil
+  (interactive)
+  (when (buffer-live-p agda2-warning-buffer)
+        (delete-windows-on agda2-warning-buffer))
+)
+
+(defun agda2-warning-action (name text &optional append)
+  "Insert TEXT into the Agda warning buffer and display it.
+NAME is displayed in the buffer's mode line.
+
+If APPEND is non-nil, then TEXT is appended at the end of the
+buffer, and point placed after this text.
+
+If APPEND is nil, then any previous text is removed before TEXT
+is inserted, and point is placed before this text."
+  (interactive)
+  (let ((buf (agda2-warning-buffer)))
+    (with-current-buffer buf
+      ;; In some cases the jump-to-position-mentioned-in-text
+      ;; functionality (see compilation-error-regexp-alist above)
+      ;; didn't work: Emacs jumped to the wrong position. However, it
+      ;; seems to work if compilation-forget-errors is used. This
+      ;; problem may be related to Emacs bug #9679
+      ;; (http://debbugs.gnu.org/cgi/bugreport.cgi?bug=9679). The idea
+      ;; to use compilation-forget-errors comes from a comment due to
+      ;; Oleksandr Manzyuk
+      ;; (https://github.com/haskell/haskell-mode/issues/67).
+      (compilation-forget-errors)
+      (unless append (erase-buffer))
+      (save-excursion
+        (goto-char (point-max))
+        (insert text))
+      (put-text-property 0 (length name) 'face '(:weight bold) name)
+      (setq mode-line-buffer-identification name)
+      (force-mode-line-update))
+    ;; If the current window displays the information buffer, then the
+    ;; window configuration is left untouched.
+    (unless (equal (window-buffer) buf)
+      (let ((agda-info
+              (and agda2-info-buffer
+                   (car-safe
+                     ;; All windows, including minibuffers, on any
+                     ;; frame on the current terminal, displaying the
+                     ;; present Agda file buffer.
+                    (get-buffer-window-list agda2-info-buffer t 0)))))
+        (save-selected-window
+          ;; Select a window displaying the Agda file buffer (if such
+          ;; a window exists). With certain configurations of
+          ;; display-buffer this should increase the likelihood that
+          ;; the info buffer will be displayed on the same frame.
+          (when agda-info
+            (select-window agda-info 'no-record))
+          (let* (;; The warnings window should be displayed below the
+                 ;; Agda info one
+                 (split-width-threshold nil)
+                 (split-height-threshold 1)
+                 (window
+                   (display-buffer
+                     buf
+                     ;; Under Emacs 23 the effect of the following
+                     ;; argument is only that the current window
+                     ;; should not be used.
+                     '((display-buffer-below-selected)
+                       .
+                       (;; Do not use the same window
+                        (inhibit-same-window . t)
+                        ;; Do not raise or select another frame.
+                        (inhibit-switch-frame . t))))))
+            (if window
+                (fit-window-to-buffer window
+                  (truncate
+                    (* (frame-height)
+                       agda2-warning-window-max-height))))))))
+    ;; Move point in every window displaying the information buffer.
+    ;; Exception: If we are appending, don't move point in selected
+    ;; windows.
+    (dolist (window (get-buffer-window-list buf 'no-minibuffer t))
+      (unless (and append
+                   (equal window (selected-window)))
+        (with-selected-window window
+          (if append
+              (goto-char (point-max))
+            (goto-char (point-min))))))))
+
 (defun agda2-info-action-and-copy (name text &optional append)
   "Same as agda2-info-action but also puts TEXT in the kill ring."
   (kill-new text)
@@ -1108,6 +1251,36 @@
                    (concat ,cmd " " ,eval " "
                            (agda2-string-quote expr)))))))
 
+(defmacro agda2-maybe-normalised-global (name comment cmd)
+  "This macro constructs a function NAME which runs CMD.
+COMMENT is used to build the function's comments. The function
+NAME takes a prefix argument which tells whether it should
+normalise types or not when running CMD (through
+`agda2-go' t nil t;)."
+  (let ((eval (make-symbol "eval")))
+    `(defun ,name (prefix)
+       ,(concat comment ".
+
+The form of the result depends on the prefix argument:
+
+* If the prefix argument is `nil' (i.e., if no prefix argument is
+  given), then the result is simplified.
+
+* If the prefix argument is `(4)' (for instance if C-u is typed
+  exactly once right before the command is invoked), then the
+  result is neither explicitly normalised nor simplified.
+
+* If any other prefix argument is used (for instance if C-u is
+  typed twice right before the command is invoked), then the
+  result is normalised.")
+       (interactive "P")
+       (let ((,eval (cond ((equal prefix nil) "AsIs")
+                          ((equal prefix '(4)) "Simplified")
+                          ("Normalised"))))
+         (agda2-go t nil t
+                   (concat ,cmd " " ,eval " "
+                           ))))))
+
 (agda2-maybe-normalised
  agda2-goal-type
  "Show the type of the goal at point"
@@ -1213,11 +1386,28 @@
                           'agda2-module-contents
                         'agda2-module-contents-toplevel)))
 
-(defun agda2-solveAll ()
-  "Solves all goals that are already instantiated internally."
+(defun agda2-solve-maybe-all ()
+  "Solves goals that are already instantiated internally.
+Either only one if point is a goal, or all of them."
   (interactive)
-  (agda2-go t t t "Cmd_solveAll"))
+  (call-interactively (if (agda2-goal-at (point))
+                          'agda2-solveOne
+                          'agda2-solveAll))
+)
 
+(agda2-maybe-normalised-global
+  agda2-solveAll
+  "Solves all goals that are already instantiated internally."
+  "Cmd_solveAll"
+)
+
+(agda2-maybe-normalised
+  agda2-solveOne
+  "Solves the goal at point if it is already instantiated internally"
+  "Cmd_solveOne"
+  nil
+)
+
 (defun agda2-solveAll-action (iss)
   (while iss
     (let* ((g (pop iss)) (txt (pop iss))
@@ -1234,28 +1424,49 @@
 
 (defun agda2-compute-normalised (&optional arg)
   "Compute the normal form of the expression in the goal at point.
-With a prefix argument \"abstract\" is ignored during the computation."
+
+With a prefix argument distinct from `(4)' the normal form of
+\"show <expression>\" is computed, and then the resulting string
+is printed.
+
+With any prefix argument \"abstract\" is ignored during the
+computation."
   (interactive "P")
   (let ((cmd (concat "Cmd_compute"
-                     (if arg " True" " False"))))
+                      (cond ((equal arg nil) " DefaultCompute")
+                            ((equal arg '(4)) " IgnoreAbstract")
+                            (" UseShowInstance")))))
     (agda2-goal-cmd cmd "expression to normalise")))
 
 (defun agda2-compute-normalised-toplevel (expr &optional arg)
-  "Computes the normal form of the given expression.
-The scope used for the expression is that of the last point inside the current
-top-level module.
-With a prefix argument \"abstract\" is ignored during the computation."
+  "Compute the normal form of the given expression.
+The scope used for the expression is that of the last point
+inside the current top-level module.
+
+With a prefix argument distinct from `(4)' the normal form of
+\"show <expression>\" is computed, and then the resulting string
+is printed.
+
+With any prefix argument \"abstract\" is ignored during the
+computation."
   (interactive "MExpression: \nP")
   (let ((cmd (concat "Cmd_compute_toplevel"
-                     (if arg " True" " False")
-                     " ")))
+                     (cond ((equal arg nil) " DefaultCompute")
+                            ((equal arg '(4)) " IgnoreAbstract")
+                            (" UseShowInstance")) " ")))
     (agda2-go t nil t (concat cmd (agda2-string-quote expr)))))
 
 (defun agda2-compute-normalised-maybe-toplevel ()
-  "Computes the normal form of the given expression,
-using the scope of the current goal or, if point is not in a goal, the
-top-level scope.
-With a prefix argument \"abstract\" is ignored during the computation."
+  "Compute the normal form of the given expression.
+The scope used for the expression is that of the last point
+inside the current top-level module.
+
+With a prefix argument distinct from `(4)' the normal form of
+\"show <expression>\" is computed, and then the resulting string
+is printed.
+
+With any prefix argument \"abstract\" is ignored during the
+computation."
   (interactive)
   (if (agda2-goal-at (point))
       (call-interactively 'agda2-compute-normalised)
@@ -1578,7 +1789,7 @@
   ;; Enable highlighting of comments via Font Lock mode (which uses
   ;; the syntax table).
   (set (make-local-variable 'font-lock-defaults)
-       '(nil nil nil nil nil))
+       '(nil nil nil nil nil (font-lock-syntactic-face-function . agda2-font-syntactic-face)))
   ;; If the following s-expression is removed, then highlighting of
   ;; comments stops working.
   (when font-lock-mode
@@ -1700,6 +1911,24 @@
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; Switching to a different version of Agda
 
+(defun get-agda-program-versions ()
+  "Get \"version strings\" of executables starting with
+'agda-mode' in current path."
+  (delete-dups
+   (mapcar (lambda (path)
+             ;; strip 'agda-mode' prefix
+             (replace-regexp-in-string "^agda-mode-?" ""
+                                       (file-name-nondirectory path)))
+           (remove-if-not 'file-executable-p
+             ;; concatenate result
+             (reduce 'append
+                     ;; for each directory in exec-path, get list of
+                     ;; files whose name starts with 'agda-mode'
+                     (mapcar (lambda (path)
+                               (when (file-accessible-directory-p path)
+                                 (directory-files path 't "^agda-mode")))
+                             exec-path))))))
+
 ;; Note that other versions of Agda may use different protocols, so
 ;; this function unloads the Emacs mode.
 
@@ -1710,7 +1939,8 @@
 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")
+  (interactive
+   (list (completing-read "Version: " (get-agda-program-versions))))
 
   (let*
       ((agda-buffers
diff --git a/src/data/lib/prim/Agda/Builtin/Bool.agda b/src/data/lib/prim/Agda/Builtin/Bool.agda
--- a/src/data/lib/prim/Agda/Builtin/Bool.agda
+++ b/src/data/lib/prim/Agda/Builtin/Bool.agda
@@ -1,3 +1,4 @@
+{-# OPTIONS --without-K #-}
 
 module Agda.Builtin.Bool where
 
@@ -13,4 +14,3 @@
 {-# COMPILED_JS Bool  function (x,v) { return ((x)? v["true"]() : v["false"]()); } #-}
 {-# COMPILED_JS false false #-}
 {-# COMPILED_JS true  true  #-}
-
diff --git a/src/data/lib/prim/Agda/Builtin/Char.agda b/src/data/lib/prim/Agda/Builtin/Char.agda
--- a/src/data/lib/prim/Agda/Builtin/Char.agda
+++ b/src/data/lib/prim/Agda/Builtin/Char.agda
@@ -1,3 +1,4 @@
+{-# OPTIONS --without-K #-}
 
 module Agda.Builtin.Char where
 
diff --git a/src/data/lib/prim/Agda/Builtin/Coinduction.agda b/src/data/lib/prim/Agda/Builtin/Coinduction.agda
--- a/src/data/lib/prim/Agda/Builtin/Coinduction.agda
+++ b/src/data/lib/prim/Agda/Builtin/Coinduction.agda
@@ -1,3 +1,4 @@
+{-# OPTIONS --without-K #-}
 
 module Agda.Builtin.Coinduction where
 
diff --git a/src/data/lib/prim/Agda/Builtin/Equality.agda b/src/data/lib/prim/Agda/Builtin/Equality.agda
--- a/src/data/lib/prim/Agda/Builtin/Equality.agda
+++ b/src/data/lib/prim/Agda/Builtin/Equality.agda
@@ -1,3 +1,4 @@
+{-# OPTIONS --without-K #-}
 
 module Agda.Builtin.Equality where
 
diff --git a/src/data/lib/prim/Agda/Builtin/Float.agda b/src/data/lib/prim/Agda/Builtin/Float.agda
--- a/src/data/lib/prim/Agda/Builtin/Float.agda
+++ b/src/data/lib/prim/Agda/Builtin/Float.agda
@@ -1,3 +1,4 @@
+{-# OPTIONS --without-K #-}
 
 module Agda.Builtin.Float where
 
@@ -11,11 +12,13 @@
 
 primitive
   primFloatEquality : Float → Float → Bool
-  primFloatLess     : Float → Float → Bool
+  primFloatNumericalEquality : Float → Float → Bool
+  primFloatNumericalLess     : Float → Float → Bool
   primNatToFloat    : Nat → Float
   primFloatPlus     : Float → Float → Float
   primFloatMinus    : Float → Float → Float
   primFloatTimes    : Float → Float → Float
+  primFloatNegate   : Float → Float
   primFloatDiv      : Float → Float → Float
   primFloatSqrt     : Float → Float
   primRound         : Float → Int
@@ -24,4 +27,10 @@
   primExp           : Float → Float
   primLog           : Float → Float
   primSin           : Float → Float
+  primCos           : Float → Float
+  primTan           : Float → Float
+  primASin          : Float → Float
+  primACos          : Float → Float
+  primATan          : Float → Float
+  primATan2         : Float → Float → Float
   primShowFloat     : Float → String
diff --git a/src/data/lib/prim/Agda/Builtin/FromNat.agda b/src/data/lib/prim/Agda/Builtin/FromNat.agda
--- a/src/data/lib/prim/Agda/Builtin/FromNat.agda
+++ b/src/data/lib/prim/Agda/Builtin/FromNat.agda
@@ -1,3 +1,4 @@
+{-# OPTIONS --without-K #-}
 
 module Agda.Builtin.FromNat where
 
diff --git a/src/data/lib/prim/Agda/Builtin/FromNeg.agda b/src/data/lib/prim/Agda/Builtin/FromNeg.agda
--- a/src/data/lib/prim/Agda/Builtin/FromNeg.agda
+++ b/src/data/lib/prim/Agda/Builtin/FromNeg.agda
@@ -1,3 +1,4 @@
+{-# OPTIONS --without-K #-}
 
 module Agda.Builtin.FromNeg where
 
diff --git a/src/data/lib/prim/Agda/Builtin/FromString.agda b/src/data/lib/prim/Agda/Builtin/FromString.agda
--- a/src/data/lib/prim/Agda/Builtin/FromString.agda
+++ b/src/data/lib/prim/Agda/Builtin/FromString.agda
@@ -1,3 +1,4 @@
+{-# OPTIONS --without-K #-}
 
 module Agda.Builtin.FromString where
 
diff --git a/src/data/lib/prim/Agda/Builtin/IO.agda b/src/data/lib/prim/Agda/Builtin/IO.agda
--- a/src/data/lib/prim/Agda/Builtin/IO.agda
+++ b/src/data/lib/prim/Agda/Builtin/IO.agda
@@ -1,3 +1,4 @@
+{-# OPTIONS --without-K #-}
 
 module Agda.Builtin.IO where
 
@@ -6,4 +7,3 @@
 
 {-# HASKELL type AgdaIO a b = IO b #-}
 {-# COMPILED_TYPE IO MAlonzo.Code.Agda.Builtin.IO.AgdaIO #-}
-
diff --git a/src/data/lib/prim/Agda/Builtin/Int.agda b/src/data/lib/prim/Agda/Builtin/Int.agda
--- a/src/data/lib/prim/Agda/Builtin/Int.agda
+++ b/src/data/lib/prim/Agda/Builtin/Int.agda
@@ -1,3 +1,4 @@
+{-# OPTIONS --without-K #-}
 
 module Agda.Builtin.Int where
 
diff --git a/src/data/lib/prim/Agda/Builtin/List.agda b/src/data/lib/prim/Agda/Builtin/List.agda
--- a/src/data/lib/prim/Agda/Builtin/List.agda
+++ b/src/data/lib/prim/Agda/Builtin/List.agda
@@ -1,3 +1,4 @@
+{-# OPTIONS --without-K #-}
 
 module Agda.Builtin.List where
 
@@ -14,4 +15,8 @@
 
 {-# COMPILED_DATA List MAlonzo.Code.Agda.Builtin.List.AgdaList [] (:) #-}
 {-# COMPILED_DATA_UHC List __LIST__ __NIL__ __CONS__ #-}
-
+{-# COMPILED_JS List function(x,v) {
+  if (x.length < 1) { return v["[]"](); } else { return v["_∷_"](x[0], x.slice(1)); }
+} #-}
+{-# COMPILED_JS [] Array() #-}
+{-# COMPILED_JS _∷_ function (x) { return function(y) { return Array(x).concat(y); }; } #-}
diff --git a/src/data/lib/prim/Agda/Builtin/Nat.agda b/src/data/lib/prim/Agda/Builtin/Nat.agda
--- a/src/data/lib/prim/Agda/Builtin/Nat.agda
+++ b/src/data/lib/prim/Agda/Builtin/Nat.agda
@@ -1,3 +1,4 @@
+{-# OPTIONS --without-K #-}
 
 module Agda.Builtin.Nat where
 
diff --git a/src/data/lib/prim/Agda/Builtin/Reflection.agda b/src/data/lib/prim/Agda/Builtin/Reflection.agda
--- a/src/data/lib/prim/Agda/Builtin/Reflection.agda
+++ b/src/data/lib/prim/Agda/Builtin/Reflection.agda
@@ -1,3 +1,4 @@
+{-# OPTIONS --without-K #-}
 
 module Agda.Builtin.Reflection where
 
@@ -8,6 +9,7 @@
 open import Agda.Builtin.String
 open import Agda.Builtin.Char
 open import Agda.Builtin.Float
+open import Agda.Builtin.Int
 
 -- Names --
 
@@ -19,6 +21,39 @@
   primQNameLess     : Name → Name → Bool
   primShowQName     : Name → String
 
+-- Fixity --
+
+data Associativity : Set where
+  left-assoc  : Associativity
+  right-assoc : Associativity
+  non-assoc   : Associativity
+
+data Precedence : Set where
+  related   : Int → Precedence
+  unrelated : Precedence
+
+data Fixity : Set where
+  fixity : Associativity → Precedence → Fixity
+
+{-# BUILTIN ASSOC      Associativity #-}
+{-# BUILTIN ASSOCLEFT  left-assoc    #-}
+{-# BUILTIN ASSOCRIGHT right-assoc   #-}
+{-# BUILTIN ASSOCNON   non-assoc     #-}
+
+{-# BUILTIN PRECEDENCE    Precedence #-}
+{-# BUILTIN PRECRELATED   related    #-}
+{-# BUILTIN PRECUNRELATED unrelated  #-}
+
+{-# BUILTIN FIXITY       Fixity #-}
+{-# BUILTIN FIXITYFIXITY fixity #-}
+
+{-# COMPILED_DATA Associativity MAlonzo.RTE.Assoc MAlonzo.RTE.LeftAssoc MAlonzo.RTE.RightAssoc MAlonzo.RTE.NonAssoc #-}
+{-# COMPILED_DATA Precedence MAlonzo.RTE.Precedence MAlonzo.RTE.Related MAlonzo.RTE.Unrelated #-}
+{-# COMPILED_DATA Fixity MAlonzo.RTE.Fixity MAlonzo.RTE.Fixity #-}
+
+primitive
+  primQNameFixity : Name → Fixity
+
 -- Metavariables --
 
 postulate Meta : Set
@@ -194,6 +229,7 @@
   inferType     : Term → TC Type
   checkType     : Term → Type → TC Term
   normalise     : Term → TC Term
+  reduce        : Term → TC Term
   catchTC       : ∀ {a} {A : Set a} → TC A → TC A → TC A
   quoteTC       : ∀ {a} {A : Set a} → A → TC Term
   unquoteTC     : ∀ {a} {A : Set a} → Term → TC A
@@ -207,7 +243,12 @@
   getDefinition : Name → TC Definition
   blockOnMeta   : ∀ {a} {A : Set a} → Meta → TC A
   commitTC      : TC ⊤
+  isMacro       : Name → TC Bool
 
+  -- If the argument is 'true' makes the following primitives also normalise
+  -- their results: inferType, checkType, quoteTC, getType, and getContext
+  withNormalisation : ∀ {a} {A : Set a} → Bool → TC A → TC A
+
 {-# BUILTIN AGDATCM              TC            #-}
 {-# BUILTIN AGDATCMRETURN        returnTC      #-}
 {-# BUILTIN AGDATCMBIND          bindTC        #-}
@@ -216,6 +257,7 @@
 {-# BUILTIN AGDATCMINFERTYPE     inferType     #-}
 {-# BUILTIN AGDATCMCHECKTYPE     checkType     #-}
 {-# BUILTIN AGDATCMNORMALISE     normalise     #-}
+{-# BUILTIN AGDATCMREDUCE        reduce        #-}
 {-# BUILTIN AGDATCMCATCHERROR    catchTC       #-}
 {-# BUILTIN AGDATCMQUOTETERM     quoteTC       #-}
 {-# BUILTIN AGDATCMUNQUOTETERM   unquoteTC     #-}
@@ -229,3 +271,5 @@
 {-# BUILTIN AGDATCMGETDEFINITION getDefinition #-}
 {-# BUILTIN AGDATCMBLOCKONMETA   blockOnMeta   #-}
 {-# BUILTIN AGDATCMCOMMIT        commitTC      #-}
+{-# BUILTIN AGDATCMISMACRO       isMacro       #-}
+{-# BUILTIN AGDATCMWITHNORMALISATION withNormalisation #-}
diff --git a/src/data/lib/prim/Agda/Builtin/Size.agda b/src/data/lib/prim/Agda/Builtin/Size.agda
--- a/src/data/lib/prim/Agda/Builtin/Size.agda
+++ b/src/data/lib/prim/Agda/Builtin/Size.agda
@@ -1,3 +1,4 @@
+{-# OPTIONS --without-K #-}
 
 module Agda.Builtin.Size where
 
diff --git a/src/data/lib/prim/Agda/Builtin/Strict.agda b/src/data/lib/prim/Agda/Builtin/Strict.agda
--- a/src/data/lib/prim/Agda/Builtin/Strict.agda
+++ b/src/data/lib/prim/Agda/Builtin/Strict.agda
@@ -1,3 +1,4 @@
+{-# OPTIONS --without-K #-}
 
 module Agda.Builtin.Strict where
 
diff --git a/src/data/lib/prim/Agda/Builtin/String.agda b/src/data/lib/prim/Agda/Builtin/String.agda
--- a/src/data/lib/prim/Agda/Builtin/String.agda
+++ b/src/data/lib/prim/Agda/Builtin/String.agda
@@ -1,3 +1,4 @@
+{-# OPTIONS --without-K #-}
 
 module Agda.Builtin.String where
 
@@ -15,3 +16,10 @@
   primStringEquality : String → String → Bool
   primShowChar       : Char → String
   primShowString     : String → String
+
+{-# COMPILED_JS primStringToList function(x) { return x.split(""); } #-}
+{-# COMPILED_JS primStringFromList function(x) { return x.join(""); } #-}
+{-# COMPILED_JS primStringAppend function(x) { return function(y) { return x+y; }; } #-}
+{-# COMPILED_JS primStringEquality function(x) { return function(y) { return x===y; }; } #-}
+{-# COMPILED_JS primShowChar function(x) { return x; } #-}
+{-# COMPILED_JS primShowString function(x) { return x; } #-}
diff --git a/src/data/lib/prim/Agda/Builtin/TrustMe.agda b/src/data/lib/prim/Agda/Builtin/TrustMe.agda
--- a/src/data/lib/prim/Agda/Builtin/TrustMe.agda
+++ b/src/data/lib/prim/Agda/Builtin/TrustMe.agda
@@ -1,3 +1,4 @@
+{-# OPTIONS --without-K #-}
 
 module Agda.Builtin.TrustMe where
 
diff --git a/src/data/lib/prim/Agda/Builtin/Unit.agda b/src/data/lib/prim/Agda/Builtin/Unit.agda
--- a/src/data/lib/prim/Agda/Builtin/Unit.agda
+++ b/src/data/lib/prim/Agda/Builtin/Unit.agda
@@ -1,3 +1,4 @@
+{-# OPTIONS --without-K #-}
 
 module Agda.Builtin.Unit where
 
diff --git a/src/data/lib/prim/Agda/Primitive.agda b/src/data/lib/prim/Agda/Primitive.agda
--- a/src/data/lib/prim/Agda/Primitive.agda
+++ b/src/data/lib/prim/Agda/Primitive.agda
@@ -1,5 +1,7 @@
 -- The Agda primitives (preloaded).
 
+{-# OPTIONS --without-K #-}
+
 module Agda.Primitive where
 
 ------------------------------------------------------------------------
diff --git a/src/data/uhc-agda-base/src/UHC/Agda/Builtins.hs b/src/data/uhc-agda-base/src/UHC/Agda/Builtins.hs
--- a/src/data/uhc-agda-base/src/UHC/Agda/Builtins.hs
+++ b/src/data/uhc-agda-base/src/UHC/Agda/Builtins.hs
@@ -61,11 +61,13 @@
   , primShowFloat
   , primMkFloat
   , primFloatEquality
-  , primFloatLess
+  , primFloatNumericalEquality
+  , primFloatNumericalLess
   , primNatToFloat
   , primFloatPlus
   , primFloatMinus
   , primFloatTimes
+  , primFloatNegate
   , primFloatDiv
   , primFloatSqrt
   , primRound
@@ -74,12 +76,19 @@
   , primExp
   , primLog
   , primSin
+  , primCos
+  , primTan
+  , primASin
+  , primACos
+  , primATan
+  , primATan2
     -- Reflection
   , QName (..)
   , primMkQName
   , primQNameEquality
   , primQNameLess
   , primShowQName
+  , primQNameFixity
   , primMetaEquality
   , primMetaLess
   , primShowMeta
@@ -100,12 +109,18 @@
 import UHC.OldException (onException)
 import System.IO (openFile, IOMode (ReadMode), hClose, hFileSize, hGetContents)
 
+------------------------------------------------------------------------------
+-- Adapted from the ieee754 package. See the LICENSE file.
+foreign import ccall "double.h identical" c_identical :: Double -> Double -> Int
 
+identicalIEEE :: Double -> Double -> Bool
+identicalIEEE x y = c_identical x y /= 0
+------------------------------------------------------------------------------
+
 -- internal helper for this file
 notImplError :: String -> a
 notImplError f = error $ "Feature " ++ f ++ " is not implemented in the UHC backend!"
 
-
 -- ====================
 -- Integer
 -- ====================
@@ -304,9 +319,11 @@
 -- Float
 -- ====================
 
+positiveNaN :: Double
+positiveNaN = 0.0 / 0.0
+
 primShowFloat :: Double -> String
 primShowFloat x
-  | isNegativeZero x = "0.0"
   | isNaN x          = "NaN"
   | isInfinite x     = if x < 0 then "-Infinity" else "Infinity"
   | otherwise        = reverse . dropZeroes . reverse $ show x
@@ -319,20 +336,34 @@
 primMkFloat :: String -> Double
 primMkFloat = read
 
+-- ASR (2016-09-29). We use bitwise equality for comparing Double
+-- because Haskell's Eq, which equates 0.0 and -0.0, allows to prove a
+-- contradiction (see Issue #2169).
 primFloatEquality :: Double -> Double -> Bool
-primFloatEquality x y
-  | isNaN x && isNaN y = True
-  | otherwise          = x == y
+primFloatEquality x y = identicalIEEE x y || (isNaN x && isNaN y)
 
-primFloatLess :: Double -> Double -> Bool
-primFloatLess x y
-  | isNegInf y = False
-  | isNegInf x = True
-  | isNaN x    = True
-  | otherwise  = x < y
+primFloatNumericalEquality :: Double -> Double -> Bool
+primFloatNumericalEquality = (==)
+
+-- Adapted from the same function on Agda.Syntax.Literal.
+compareFloat :: Double -> Double -> Ordering
+compareFloat x y
+  | identicalIEEE x y          = EQ
+  | isNegInf x                 = LT
+  | isNegInf y                 = GT
+  | isNaN x && isNaN y         = EQ
+  | isNaN x                    = LT
+  | isNaN y                    = GT
+  | otherwise                  = compare x y
   where
     isNegInf z = z < 0 && isInfinite z
 
+primFloatNumericalLess :: Double -> Double -> Bool
+primFloatNumericalLess x y =
+  case compareFloat x y of
+    LT -> True
+    _  -> False
+
 primNatToFloat :: Nat -> Double
 primNatToFloat n = fromIntegral (unNat n)
 
@@ -345,6 +376,9 @@
 primFloatTimes :: Double -> Double -> Double
 primFloatTimes = (*)
 
+primFloatNegate :: Double -> Double
+primFloatNegate = negate
+
 primFloatDiv :: Double -> Double -> Double
 primFloatDiv = (/)
 
@@ -369,6 +403,24 @@
 primSin :: Double -> Double
 primSin = sin
 
+primCos :: Double -> Double
+primCos = cos
+
+primTan :: Double -> Double
+primTan = tan
+
+primASin :: Double -> Double
+primASin = asin
+
+primACos :: Double -> Double
+primACos = acos
+
+primATan :: Double -> Double
+primATan = atan
+
+primATan2 :: Double -> Double -> Double
+primATan2 = atan2
+
 -- ====================
 -- Reflection
 -- ====================
@@ -390,6 +442,9 @@
 
 primShowQName :: QName -> String
 primShowQName = qnameString
+
+primQNameFixity :: QName -> a
+primQNameFixity = error "TODO: primQNameFixity"
 
 type Meta = Integer
 
diff --git a/src/data/uhc-agda-base/src/UHC/Agda/double.c b/src/data/uhc-agda-base/src/UHC/Agda/double.c
new file mode 100644
--- /dev/null
+++ b/src/data/uhc-agda-base/src/UHC/Agda/double.c
@@ -0,0 +1,12 @@
+#include <stdint.h>
+
+union cast {
+  double   x;
+  uint64_t n;
+};
+
+int identical (double x, double y) {
+  union cast cx = { .x = x };
+  union cast cy = { .x = y };
+  return cx.n == cy.n;
+}
diff --git a/src/data/uhc-agda-base/src/UHC/Agda/double.h b/src/data/uhc-agda-base/src/UHC/Agda/double.h
new file mode 100644
--- /dev/null
+++ b/src/data/uhc-agda-base/src/UHC/Agda/double.h
@@ -0,0 +1,2 @@
+
+int identical (double x, double y);
diff --git a/src/full/Agda/Auto/Auto.hs b/src/full/Agda/Auto/Auto.hs
--- a/src/full/Agda/Auto/Auto.hs
+++ b/src/full/Agda/Auto/Auto.hs
@@ -1,10 +1,5 @@
 {-# LANGUAGE CPP #-}
-{-# LANGUAGE TupleSections #-}
 
-#if __GLASGOW_HASKELL__ >= 710
-{-# LANGUAGE FlexibleContexts #-}
-#endif
-
 module Agda.Auto.Auto (auto) where
 
 import Prelude hiding (null)
@@ -71,7 +66,7 @@
 getName :: A.Expr -> Maybe (Bool, I.QName)
 getName (A.ScopedExpr _ e) = getName e
 getName (A.Def qname) = Just (False, qname)
-getName (A.Proj qname) = Just (False, qname)
+getName (A.Proj _ qname) = Just (False, head $ I.unAmbQ qname)
 getName (A.Con qname) = Just (True, head $ I.unAmbQ qname)
 getName _ = Nothing
 
@@ -127,8 +122,7 @@
     -- Get the meta variable for the interaction point we are trying to fill.
     -- Add the @autohints@ for that meta to the hints collection.
     mi <- lookupInteractionId ii
-    --thisdefinfo <- catchError (liftM Just $ findClause mi) (\_ -> return Nothing)
-    thisdefinfo <- findClauseDeep mi
+    thisdefinfo <- findClauseDeep ii
     ehints <- (ehints ++) <$> do autohints hintmode mi $ fmap fst3 thisdefinfo
 
     -- If @thisdefinfo /= Nothing@ get the its type (normalized).
@@ -322,7 +316,7 @@
                         case lookup mi riis of
                          Nothing ->
                           -- catchError
-                           (giveExpr mi expr >> return (Nothing, Nothing))
+                           (giveExpr Nothing 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
@@ -375,10 +369,11 @@
               cls'' <- forM cls' $ \ (I.Clause _ tel ps body t catchall) -> do
                 withCurrentModule (AN.qnameModule def) $ do
                  -- Normalise the dot patterns
-                 ps <- addCtxTel tel $ normalise ps
-                 body <- etaContractBody body
-                 liftM modifyAbstractClause $ inContext [] $ reify $ AN.QNamed def $ I.Clause noRange tel ps body t catchall
-              pcs <- withInteractionId ii $ mapM prettyA cls''
+                 ps <- addContext tel $ normalise ps
+                 body <- etaContract body
+                 liftM modifyAbstractClause $ inTopContext $ reify $ AN.QNamed def $ I.Clause noRange tel ps body t catchall
+              moduleTel <- lookupSection (AN.qnameModule def)
+              pcs <- withInteractionId ii $ inTopContext $ addContext moduleTel $ mapM prettyA cls''
               ticks <- liftIO $ readIORef ticks
 
 
@@ -466,6 +461,7 @@
       c <- getConstInfo n
       case theDef c of
         Axiom{}    -> return True
+        AbstractDefn{} -> return True
         Function{} -> return True
         _          -> return False
 
diff --git a/src/full/Agda/Auto/CaseSplit.hs b/src/full/Agda/Auto/CaseSplit.hs
--- a/src/full/Agda/Auto/CaseSplit.hs
+++ b/src/full/Agda/Auto/CaseSplit.hs
@@ -1,5 +1,4 @@
 {-# 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
--- a/src/full/Agda/Auto/Convert.hs
+++ b/src/full/Agda/Auto/Convert.hs
@@ -1,15 +1,13 @@
 {-# LANGUAGE CPP #-}
 
-#if __GLASGOW_HASKELL__ >= 710
-{-# LANGUAGE FlexibleContexts #-}
-#endif
-
 module Agda.Auto.Convert where
 
 import Control.Applicative hiding (getConst, Const(..))
 import Data.IORef
 import Data.Map (Map)
 import qualified Data.Map as Map
+import Data.Maybe
+import Data.Traversable (traverse)
 import Control.Monad.State
 
 import Agda.Syntax.Concrete (exprFieldA)
@@ -20,16 +18,15 @@
 import qualified Agda.Syntax.Abstract as A
 import qualified Agda.Syntax.Position as SP
 import qualified Agda.TypeChecking.Monad.Base as MB
-import Agda.TypeChecking.Monad.State (getImportedSignature)
-import Agda.TypeChecking.Monad.Signature (getConstInfo, getDefFreeVars)
+import Agda.TypeChecking.Monad.Signature (getConstInfo, getDefFreeVars, ignoreAbstractMode)
 import Agda.Utils.Permutation (Permutation(Perm), permute, takeP, compactP)
 import Agda.TypeChecking.Level (reallyUnLevelView)
 import Agda.TypeChecking.Monad.Base (mvJudgement, mvPermutation, getMetaInfo, ctxEntry, envContext, clEnv)
-import Agda.TypeChecking.Monad.MetaVars (lookupMeta, withMetaInfo)
+import Agda.TypeChecking.Monad.MetaVars (lookupMeta, withMetaInfo, lookupInteractionPoint)
 import Agda.TypeChecking.Monad.Context (getContextArgs)
 import Agda.TypeChecking.Monad.Constraints (getAllConstraints)
-import Agda.TypeChecking.Substitute (piApply, applySubst)
-import Agda.TypeChecking.Telescope (piApplyM, renamingR)
+import Agda.TypeChecking.Substitute (piApply, applySubst, renamingR)
+import Agda.TypeChecking.Telescope (piApplyM)
 import qualified Agda.TypeChecking.Substitute as I (absBody)
 import Agda.TypeChecking.Reduce (Normalise, normalise, instantiate)
 import Agda.TypeChecking.EtaContract (etaContract)
@@ -37,6 +34,8 @@
 import Agda.TypeChecking.Free (freeIn)
 import qualified Agda.Utils.HashMap as HMap
 
+import Agda.Interaction.MakeCase (getClauseForIP)
+
 import Agda.Auto.NarrowingSearch
 import Agda.Auto.Syntax
 
@@ -109,6 +108,7 @@
            return (Def narg clauses' Nothing Nothing, [])
      (cont, projfcns2) <- case defn of
       MB.Axiom {} -> return (Postulate, [])
+      MB.AbstractDefn -> return (Postulate, [])
       MB.Function {MB.funClauses = clauses} -> clausesToDef clauses
       -- MB.Primitive {MB.primClauses = []} -> throwError $ strMsg "Auto: Primitive functions are not supported" -- Andreas, 2013-06-17 breaks interaction/AutoMisc
       MB.Primitive {MB.primClauses = clauses} -> clausesToDef clauses
@@ -298,18 +298,25 @@
   Nothing -> cls'
 
 tomyClause :: I.Clause -> TOM (Maybe ([Pat O], MExp O))
-tomyClause cl@(I.Clause {I.clauseBody = body}) = do
- let pats = I.clausePats cl
+tomyClause cl = do
+ let -- Jesper, 2016-07-28: I can't figure out if this should be the old or new
+     -- clause body (i.e. relative to the positions of pattern variables or
+     -- relative to the clauseTel). Both options pass the test suite, so I
+     -- have the impression it doesn't actually matter.
+     -- ALTERNATIVE CODE:
+     -- perm = fromMaybe __IMPOSSIBLE__ $ IP.clausePerm cl
+     -- body = applySubst (renamingR perm) $ I.clauseBody cl
+     body = I.clauseBody cl
+     pats = I.clausePats cl
  pats' <- mapM tomyPat $ IP.unnumberPatVars pats
- body' <- tomyBody body
+ body' <- traverse tomyExp =<< lift (norm body)
  return $ case body' of
-           Just (body', _) -> Just (pats', body')
-           Nothing -> Nothing
-
+           Just body' -> Just (pats', body')
+           Nothing    -> Nothing
 
 tomyPat :: Common.Arg I.Pattern -> TOM (Pat O)
 tomyPat p = case Common.unArg p of
- I.ProjP _ -> lift $ copatternsNotImplemented
+ I.ProjP{} -> lift $ copatternsNotImplemented
  I.VarP n -> return $ PatVar (show n)
  I.DotP _ -> return $ PatVar "_" -- because Agda includes these when referring to variables in the body
  I.ConP con _ pats -> do
@@ -322,19 +329,6 @@
   return $ PatConApp c (replicate npar PatExp ++ pats')
  I.LitP _ -> throwError $ strMsg "Auto: Literals in patterns are not supported"
 
-tomyBody :: I.ClauseBodyF I.Term -> TOM (Maybe (MExp O, Int))
-tomyBody (I.Body t) = do
- t <- lift $ norm t
- t' <- tomyExp t
- return $ Just (t', 0)
-tomyBody (I.Bind (I.Abs _ b)) = do
- res <- tomyBody b
- return $ case res of
-  Nothing -> Nothing
-  Just (b', i) -> Just (b', i + 1)
-tomyBody (I.Bind (I.NoAbs _ b)) = tomyBody b
-tomyBody I.NoBody = return Nothing
-
 weaken :: Int -> MExp O -> MExp O
 weaken _ e@(Meta m) = e
 weaken i (NotM e) =
@@ -398,7 +392,7 @@
       c   <- getConst False name TMAll
       as' <- tomyExps as
       return $ NotM $ App Nothing (NotM OKVal) (Const c) as'
-    I.Con con as -> do
+    I.Con con ci as -> do
       let name = I.conName con
       c   <- getConst True name TMAll
       as' <- tomyExps as
@@ -453,7 +447,7 @@
 fmExp m (I.Lit _) = False
 fmExp m (I.Level (I.Max as)) = any (fmLevel m) as
 fmExp m (I.Def _ as) = fmExps m $ I.argsFromElims as
-fmExp m (I.Con _ as) = fmExps m as
+fmExp m (I.Con _ ci as) = fmExps m as
 fmExp m (I.Pi x y)  = fmType m (Common.unDom x) || fmType m (I.unAbs y)
 fmExp m (I.Sort _) = False
 fmExp m (I.MetaV mid _) = mid == m
@@ -481,7 +475,9 @@
     Common.Hidden    -> Hidden
 
 icnvh :: FMode -> Common.ArgInfo
-icnvh h = (Common.setHiding h' Common.defaultArgInfo)
+icnvh h = Common.setHiding h' $
+          Common.setOrigin Common.Inserted $
+          Common.defaultArgInfo
     where
     h' = case h of
         NotHidden -> Common.NotHidden
@@ -518,7 +514,7 @@
         frommyExps n as v
 -}
        (ndrop, h) = case iscon of
-                      Just n -> (n, \ q -> I.Con (I.ConHead q Common.Inductive [])) -- TODO: restore fields
+                      Just n -> (n, \ q -> I.Con (I.ConHead q Common.Inductive []) Common.ConOSystem) -- TODO: restore fields
                       Nothing -> (0, \ f vs -> I.Def f $ map I.Apply vs)
    frommyExps ndrop as (h name [])
   Lam hid (Abs mid t) -> do
@@ -567,7 +563,7 @@
   ALConPar _ -> __IMPOSSIBLE__
  where
   addend x (I.Var h xs) = I.Var h (xs ++ [I.Apply x])
-  addend x (I.Con h xs) = I.Con h (xs ++ [x])
+  addend x (I.Con h ci xs) = I.Con h ci (xs ++ [x])
   addend x (I.Def h xs) = I.Def h (xs ++ [I.Apply x])
   addend x (I.Shared p) = addend x (I.derefPtr p)
   addend _ _ = __IMPOSSIBLE__
@@ -591,7 +587,8 @@
   f e = e
 
 modifyAbstractClause :: A.Clause -> A.Clause
-modifyAbstractClause (A.Clause lhs (A.RHS e) decls catchall) = A.Clause lhs (A.RHS (modifyAbstractExpr e)) decls catchall
+modifyAbstractClause (A.Clause lhs dots (A.RHS e mc) decls catchall) =
+  A.Clause lhs dots (A.RHS (modifyAbstractExpr e) mc) decls catchall
 modifyAbstractClause cl = cl
 
 -- ---------------------------------
@@ -667,7 +664,7 @@
      cnvps n (_ : _) = __IMPOSSIBLE__
      cnvp (HI hid p) = do
       p' <- case p of
-       CSPatVar v -> return (I.VarP $ let HI _ (Id n, _) = ids !! v in n)
+       CSPatVar v -> return (I.varP $ let HI _ (Id n, _) = ids !! v in n)
        CSPatConApp c ps -> do
         cdef <- lift $ readIORef c
         let (Just ndrop, name) = cdorigin cdef
@@ -682,19 +679,14 @@
       return $ Common.Arg (icnvh hid) $ Common.unnamed p'   -- TODO: recover names
  ps <- cnvps 0 pats
  body <- case mrhs of
-          Nothing -> return $ I.NoBody
-          Just e -> do
-           e' <- frommyExp e {- renm e -} -- renaming before adding to clause below
-           let r 0 = I.Body e'
-               r n = I.Bind $ I.Abs "h" $ r (n - 1)
-               e'' = r nv
-           return e''
+          Nothing -> return $ Nothing
+          Just e -> Just <$> frommyExp e
  let cperm =  Perm nv perm
  return $ I.Clause
    { I.clauseRange = SP.noRange
    , I.clauseTel   = tel
-   , I.namedClausePats = IP.numberPatVars cperm $ applySubst (renamingR $ compactP cperm) ps
-   , I.clauseBody  = applySubst (renamingR cperm) <$> body
+   , I.namedClausePats = IP.numberPatVars __IMPOSSIBLE__ cperm $ applySubst (renamingR $ compactP cperm) ps
+   , I.clauseBody  = body
    , I.clauseType  = Nothing -- TODO: compute clause type
    , I.clauseCatchall = False
    }
@@ -706,14 +698,6 @@
          CSPatConApp{} -> True
          _ -> False
 
-
-etaContractBody :: I.ClauseBody -> MB.TCM I.ClauseBody
-etaContractBody (I.NoBody) = return I.NoBody
-etaContractBody (I.Body b) = etaContract b >>= \b -> return (I.Body b)
-etaContractBody (I.Bind (I.Abs id b)) = etaContractBody b >>= \b -> return (I.Bind (I.Abs id b))
-etaContractBody (I.Bind (I.NoAbs x b))  = I.Bind . I.NoAbs x <$> etaContractBody b
-
-
 -- ---------------------------------
 
 freeIn :: Nat -> MExp o -> Bool
@@ -751,39 +735,16 @@
 
 -- ---------------------------------------
 
-findClauseDeep :: I.MetaId -> MB.TCM (Maybe (AN.QName, I.Clause, Bool))
-findClauseDeep m = do
-  sig <- getImportedSignature
-  let res = do
-        def <- HMap.elems $ sig ^. MB.sigDefinitions
-        MB.Function{MB.funClauses = cs} <- [MB.theDef def]
-        c <- cs
-        unless (peelbinds False findMeta $ I.clauseBody c) []
-        return (MB.defName def, c, peelbinds __IMPOSSIBLE__ toplevel $ I.clauseBody c)
-  return $ case res of
-    [] -> Nothing
-    r:_ -> Just r   -- TODO: with pattern matching lambdas we might get more than one hit, which to choose?
+findClauseDeep :: Common.InteractionId -> MB.TCM (Maybe (AN.QName, I.Clause, Bool))
+findClauseDeep ii = ignoreAbstractMode $ do  -- Andreas, 2016-09-04, issue #2162
+  MB.InteractionPoint { MB.ipClause = ipCl} <- lookupInteractionPoint ii
+  (f, clauseNo) <- case ipCl of
+    MB.IPClause f clauseNo _ -> return (f, clauseNo)
+    MB.IPNoClause -> MB.typeError $ MB.GenericError $
+      "Cannot apply the auto tactic here, we are not in a function clause"
+  (_, c, _) <- getClauseForIP f clauseNo
+  return $ Just (f, c, maybe __IMPOSSIBLE__ toplevel $ I.clauseBody c)
   where
-    peelbinds d f = r
-     where r b = case b of
-                  I.Bind b -> r $ I.absBody b
-                  I.NoBody -> d
-                  I.Body e -> f e
-    findMeta e =
-     case I.ignoreSharing e of
-      I.Var _ es -> findMetas $ I.argsFromElims es
-      I.Lam _ b -> findMeta (I.absBody b)
-      I.Lit{} -> False
-      I.Level (I.Max as) -> any (fmLevel m) as
-      I.Def _ es -> findMetas $ I.argsFromElims es
-      I.Con _ as -> findMetas as
-      I.Pi it ot -> findMetat (Common.unDom it) || findMetat (I.unAbs ot)
-      I.Sort{} -> False
-      I.MetaV m' _  -> m == m'
-      I.DontCare _ -> False
-      I.Shared{} -> __IMPOSSIBLE__
-    findMetas = any (findMeta . Common.unArg)
-    findMetat (I.El _ e) = findMeta e
     toplevel e =
      case I.ignoreSharing e of
       I.MetaV{} -> True
@@ -821,7 +782,7 @@
       (I.Lam hid1 b1, I.Lam hid2 b2) | hid1 == hid2 -> f (nl + 1) n c (I.absBody b1) (I.absBody b2)
       (I.Lit lit1, I.Lit lit2) | lit1 == lit2 -> c (n + 1)
       (I.Def n1 as1, I.Def n2 as2) | n1 == n2 -> fes nl (n + 1) c as1 as2
-      (I.Con n1 as1, I.Con n2 as2) | n1 == n2 -> fs nl (n + 1) c as1 as2
+      (I.Con n1 _ as1, I.Con n2 _ as2) | n1 == n2 -> fs nl (n + 1) c as1 as2
       (I.Pi (Common.Dom info1 it1) ot1, I.Pi (Common.Dom info2 it2) ot2) | Common.argInfoHiding info1 == Common.argInfoHiding info2 -> ft nl n (\n -> ft (nl + 1) n c (I.absBody ot1) (I.absBody ot2)) it1 it2
       (I.Sort{}, I.Sort{}) -> c n -- sloppy
       _ -> Nothing
@@ -831,6 +792,6 @@
      _ -> Nothing
     fes nl n c es1 es2 = case (es1, es2) of
      ([], []) -> c n
-     (I.Proj f : es1, I.Proj f' : es2) | f == f' -> fes nl n c es1 es2
+     (I.Proj _ f : es1, I.Proj _ f' : es2) | f == f' -> fes nl n c es1 es2
      (I.Apply (Common.Arg info1 e1) : es1, I.Apply (Common.Arg info2 e2) : es2) | Common.argInfoHiding info1 == Common.argInfoHiding info2 -> f nl n (\n -> fes nl n c es1 es2) e1 e2
      _ -> Nothing
diff --git a/src/full/Agda/Auto/NarrowingSearch.hs b/src/full/Agda/Auto/NarrowingSearch.hs
--- a/src/full/Agda/Auto/NarrowingSearch.hs
+++ b/src/full/Agda/Auto/NarrowingSearch.hs
@@ -1,9 +1,4 @@
 {-# LANGUAGE CPP                       #-}
-{-# LANGUAGE ExistentialQuantification #-}
-{-# LANGUAGE FlexibleInstances         #-}
-{-# LANGUAGE FunctionalDependencies    #-}
-{-# LANGUAGE MultiParamTypeClasses     #-}
-{-# LANGUAGE Rank2Types                #-}
 {-# LANGUAGE ScopedTypeVariables       #-}
 
 module Agda.Auto.NarrowingSearch where
diff --git a/src/full/Agda/Auto/SearchControl.hs b/src/full/Agda/Auto/SearchControl.hs
--- a/src/full/Agda/Auto/SearchControl.hs
+++ b/src/full/Agda/Auto/SearchControl.hs
@@ -1,6 +1,4 @@
 {-# LANGUAGE CPP                   #-}
-{-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE UndecidableInstances  #-}
 
 {-# OPTIONS_GHC -fno-warn-orphans #-}
diff --git a/src/full/Agda/Auto/Syntax.hs b/src/full/Agda/Auto/Syntax.hs
--- a/src/full/Agda/Auto/Syntax.hs
+++ b/src/full/Agda/Auto/Syntax.hs
@@ -1,5 +1,4 @@
 {-# 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
--- a/src/full/Agda/Auto/Typecheck.hs
+++ b/src/full/Agda/Auto/Typecheck.hs
@@ -1,6 +1,4 @@
 {-# LANGUAGE CPP                       #-}
-{-# LANGUAGE ExistentialQuantification #-}
-{-# LANGUAGE FlexibleContexts          #-}
 {-# LANGUAGE ScopedTypeVariables       #-}
 
 module Agda.Auto.Typecheck where
diff --git a/src/full/Agda/Benchmarking.hs b/src/full/Agda/Benchmarking.hs
--- a/src/full/Agda/Benchmarking.hs
+++ b/src/full/Agda/Benchmarking.hs
@@ -1,7 +1,5 @@
 {-# LANGUAGE CPP                       #-}
-{-# LANGUAGE FunctionalDependencies    #-}
 {-# LANGUAGE IncoherentInstances       #-}
-{-# LANGUAGE MultiParamTypeClasses     #-}
 {-# LANGUAGE NoMonomorphismRestriction #-}
 
 #if __GLASGOW_HASKELL__ <= 708
@@ -67,12 +65,14 @@
     -- ^ Subphase for 'Termination'.
   | ModuleName
     -- ^ Subphase for 'Import'.
+  | BuildInterface
+    -- ^ Subphase for 'Serialization'.
   | Sort
-    -- ^ Subphase for 'Serialize'.
+    -- ^ Subphase for 'Serialization'.
   | BinaryEncode
-    -- ^ Subphase for 'Serialize'.
+    -- ^ Subphase for 'Serialization'.
   | Compress
-    -- ^ Subphase for 'Serialize'.
+    -- ^ Subphase for 'Serialization'.
   | Operators
     -- ^ Subphase for 'Parsing'.
   | Free
@@ -81,6 +81,10 @@
     -- ^ Subphase for 'Typing': occurs check for solving metas.
   | CheckLHS
     -- ^ Subphase for 'Typing': checking the LHS
+  | CheckRHS
+    -- ^ Subphase for 'Typing': checking the RHS
+  | TypeSig
+    -- ^ Subphase for 'Typing': checking a type signature
   | UnifyIndices
     -- ^ Subphase for 'CheckLHS': unification of the indices
   | InverseScopeLookup
diff --git a/src/full/Agda/Compiler/CallCompiler.hs b/src/full/Agda/Compiler/CallCompiler.hs
--- a/src/full/Agda/Compiler/CallCompiler.hs
+++ b/src/full/Agda/Compiler/CallCompiler.hs
@@ -42,7 +42,7 @@
       Nothing     -> return ()
       Just errors -> typeError (CompilationError errors)
   else
-    reportSLn "" 1 $ "NOT calling: " ++ intercalate " " (cmd : args)
+    reportSLn "compile.cmd" 1 $ "NOT calling: " ++ intercalate " " (cmd : args)
 
 -- | Generalisation of @callCompiler@ where the raised exception is
 -- returned.
@@ -53,7 +53,7 @@
      -- ^ Command-line arguments.
   -> TCM (Maybe String)
 callCompiler' cmd args = do
-  reportSLn "" 1 $ "Calling: " ++ intercalate " " (cmd : args)
+  reportSLn "compile.cmd" 1 $ "Calling: " ++ intercalate " " (cmd : args)
   (_, out, err, p) <-
     liftIO $ createProcess
                (proc cmd args) { std_err = CreatePipe
@@ -68,7 +68,7 @@
       -- The handle should be in text mode.
       liftIO $ hSetBinaryMode out False
       progressInfo <- liftIO $ hGetContents out
-      mapM_ (reportSLn "" 1) $ lines progressInfo
+      mapM_ (reportSLn "compile.output" 1) $ lines progressInfo
 
   errors <- liftIO $ case err of
     Nothing  -> __IMPOSSIBLE__
diff --git a/src/full/Agda/Compiler/Common.hs b/src/full/Agda/Compiler/Common.hs
--- a/src/full/Agda/Compiler/Common.hs
+++ b/src/full/Agda/Compiler/Common.hs
@@ -44,7 +44,7 @@
 import Agda.Utils.Impossible
 
 data IsMain = IsMain | NotMain
-  deriving (Eq)
+  deriving (Eq, Show)
 
 doCompile :: IsMain -> Interface -> (IsMain -> Interface -> TCM ()) -> TCM ()
 doCompile isMain i f = do
@@ -65,7 +65,7 @@
             mapM (getVisitedModule . toTopLevelModuleName . fst) (iImportedModules i)
         mapM_ (comp NotMain) imps
         lift $ setInterface i
-        lift $ f NotMain i
+        lift $ f isMain i
         modify (Set.insert $ iModuleName i)
 
 setInterface :: Interface -> TCM ()
diff --git a/src/full/Agda/Compiler/Epic/Compiler.hs b/src/full/Agda/Compiler/Epic/Compiler.hs
--- a/src/full/Agda/Compiler/Epic/Compiler.hs
+++ b/src/full/Agda/Compiler/Epic/Compiler.hs
@@ -125,13 +125,13 @@
             uptodate <- liftIO $ isNewerThan eifFile ifile
             (eif, imps') <- case uptodate of
                 True  -> do
-                    lift $ reportSLn "" 1 $
+                    lift $ reportSLn "compile.epic" 2 $
                       (prettyShow . iModuleName) i ++ " : no compilation is needed."
                     eif <- readEInterface eifFile
                     modify $ \s -> s { curModule = eif }
                     return (eif, Set.insert file imps)
                 False -> do
-                    lift $ reportSLn "" 1 $
+                    lift $ reportSLn "compile.epic" 1 $
                         "Compiling: " ++ (prettyShow . iModuleName) i
                     resetNameSupply
                     initialAnalysis i
@@ -182,6 +182,7 @@
         case defEpicDef def of
           Nothing -> putDelayed q True
           _       -> return ()
+      AbstractDefn -> __IMPOSSIBLE__
       _ -> return ()
 
 idPrint :: String -> (a -> Compile TCM b) -> a -> Compile TCM b
diff --git a/src/full/Agda/Compiler/Epic/Forcing.hs b/src/full/Agda/Compiler/Epic/Forcing.hs
--- a/src/full/Agda/Compiler/Epic/Forcing.hs
+++ b/src/full/Agda/Compiler/Epic/Forcing.hs
@@ -1,6 +1,5 @@
 {-# LANGUAGE CPP #-}
 {-# LANGUAGE ScopedTypeVariables #-}
-{-# LANGUAGE FlexibleContexts #-}
 
 module Agda.Compiler.Epic.Forcing where
 
@@ -141,7 +140,7 @@
 
 -- TODO: restore fields in ConHead
 mkCon :: QName -> Int -> Term
-mkCon c n = I.Con (I.ConHead c Inductive []) $ map (defaultArg . I.var) $ downFrom n
+mkCon c n = I.Con (I.ConHead c Inductive []) ConOSystem $ map (defaultArg . I.var) $ downFrom n
 
 unifyI :: Telescope -> FlexibleVars -> Type -> Args -> Args -> Compile TCM [Maybe Term]
 unifyI tele flex typ a1 a2 = lift $ typeError $ NotImplemented "using the new unification algorithm for forcing"
@@ -285,7 +284,7 @@
 buildTerm :: Var -> Nat -> Term -> Compile TCM (Expr -> Expr, Var)
 buildTerm var idx (I.Shared p) = buildTerm var idx $ I.derefPtr p
 buildTerm var idx (I.Var i _) | idx == i = return (id, var)
-buildTerm var idx (I.Con con args) = do
+buildTerm var idx (I.Con con _ args) = do
     let c = I.conName con
     vs <- replicateM (length args) newName
     (pos , arg) <- fromMaybe __IMPOSSIBLE__ <$> findPosition idx (map (Just . unArg) args)
@@ -308,7 +307,7 @@
     pred :: Term -> Compile TCM Bool
     pred t = case I.ignoreSharing t of
       I.Var i _ | var == i -> return True
-      I.Con c args         -> do
+      I.Con c _ args -> do
           forc <- getForcedArgs $ I.conName c
           or <$> mapM (pred . unArg) (notForced forc args)
-      _                  -> return False
+      _ -> return False
diff --git a/src/full/Agda/Compiler/Epic/FromAgda.hs b/src/full/Agda/Compiler/Epic/FromAgda.hs
--- a/src/full/Agda/Compiler/Epic/FromAgda.hs
+++ b/src/full/Agda/Compiler/Epic/FromAgda.hs
@@ -48,7 +48,7 @@
         let projArgs = projectionArgs f
             cc       = fromMaybe __IMPOSSIBLE__ $ funCompiled f
         ccs  <- reverseCCBody projArgs <$> normaliseStatic cc
-        let len   = (+ projArgs) . length . clausePats . head .  funClauses $ f
+        let len   = (+ projArgs) . length . namedClausePats . head .  funClauses $ f
             toEta = arity (defType defini) - len
         -- forcing <- lift $ gets (optForcing . stPersistentOptions)
         lift $ reportSDoc "epic.fromagda" 5 $ text "compiling fun:" <+> prettyTCM n
@@ -82,6 +82,7 @@
                           -- Hopefully they are defined!
       let ar = arity $ defType defini
       return <$> mkFun n n' (primName p) ar
+    AbstractDefn -> __IMPOSSIBLE__
   where
     mkFun q = mkFunGen q apps ("primitive: " ++)
     mkCon q tag ari = do
@@ -245,7 +246,7 @@
       return $ case del of
         True  -> Lazy f
         False -> f
-    T.Con c args -> do
+    T.Con c ci args -> do
         let con = unqname $ conName c
         apps con <$> mapM (substTerm env . unArg) args
     T.Shared p -> substTerm env $ derefPtr p
diff --git a/src/full/Agda/Compiler/Epic/Injection.hs b/src/full/Agda/Compiler/Epic/Injection.hs
--- a/src/full/Agda/Compiler/Epic/Injection.hs
+++ b/src/full/Agda/Compiler/Epic/Injection.hs
@@ -1,6 +1,4 @@
 {-# LANGUAGE CPP               #-}
-{-# LANGUAGE FlexibleInstances #-}
-{-# LANGUAGE PatternGuards     #-}
 
 module Agda.Compiler.Epic.Injection where
 
@@ -98,13 +96,14 @@
 patternToTerm n p = case p of
     VarP v          -> var n
     DotP t          -> t
-    ConP c typ args -> Con c $ zipWith (\ arg t -> arg {unArg = t}) args
+    ConP c typ args -> Con c ci $ zipWith (\ arg t -> arg {unArg = t}) args
                              $ snd
                              $ foldr (\ arg (n, ts) -> (n + nrBinds arg, patternToTerm n arg : ts))
                                      (n , [])
                              $ map namedArg args
+      where ci = fromConPatternInfo typ
     LitP l          -> Lit l
-    ProjP d         -> Def d [] -- Andreas, 2012-10-31 that might not be enought to get a term from list of patterns (TODO)
+    ProjP _ d       -> Def d [] -- Andreas, 2012-10-31 that might not be enought to get a term from list of patterns (TODO)
 
 nrBinds :: Num i => Pattern -> i
 nrBinds p = case p of
@@ -140,19 +139,20 @@
    , text ("argumentNo=" ++ show idx)
    -- , prettyTCM (clausePats clause)
    ]
- case getBody clause of
+ case compiledClauseBody clause of
   Nothing -> return emptyC
   Just body -> do
-    let t    = patternToTerm idxR $ unArg $ fromMaybe __IMPOSSIBLE__ $
-                 unnumberPatVars (clausePats clause) !!! idx
+    let vars = unnumberPatVars $ namedClausePats clause
+    let t    = patternToTerm idxR $ namedArg $ fromMaybe __IMPOSSIBLE__ $
+                 vars !!! idx
         t'   = applySubst (substForDot $ namedClausePats clause) t
-        idxR = sum . map (nrBinds . unArg) . genericDrop (idx + 1) $ unnumberPatVars $ clausePats clause
+        idxR = sum . map (nrBinds . namedArg) . drop (idx + 1) $ vars
     body' <- lift $ reduce body
     lift $ reportSLn "epic.injection" 40 "reduced body"
     injFs <- gets (injectiveFuns . importedModules)
     lift $ reportSLn "epic.injection" 40 "calculated injFs"
     res <- (t' <: body') `runReaderT` (Map.insert nam (InjectiveFun idx
-                                                      (length (clausePats clause))) injFs)
+                                                      (length (namedClausePats clause))) injFs)
     lift $ reportSDoc "epic.injection" 20 $ vcat
       [ text "isInjective:" <+> text (show nam)
       , text "at Index   :" <+> text (show idx)
@@ -258,7 +258,7 @@
 instance Injectible a => Injectible (Elim' a) where
   e1 <: e2 =
     case (e1, e2) of
-      (Proj f1 , Proj f2 ) | f1 == f2 -> return $ Just []
+      (Proj _ f1, Proj _ f2) | f1==f2 -> return $ Just []
       (Apply a1, Apply a2)            -> a1 <: a2
       _                               -> return Nothing
 
@@ -290,7 +290,7 @@
               Just (Apply a) -> t1 <: unArg a
       (Var i1 es1, Var i2 es2) | i1 == i2 -> es1 <: es2
       (Def q1 es1, Def q2 es2) | q1 == q2 -> es1 <: es2
-      (Con con1 args1, Con con2 args2) -> do
+      (Con con1 _ args1, Con con2 _ args2) -> do
         let c1 = conName con1
             c2 = conName con2
         args1' <- flip notForced args1 <$> do lift . getForcedArgs $ c1
@@ -313,7 +313,7 @@
         args1' <- map unArg <$> mapM (lift . lift . reduce) args1
         args2' <- map unArg <$> mapM (lift . lift . reduce) args2
         unionConstraints <$> zipWithM (\a b -> (a <: b)) args1' args2'
-      (Con con1 args1, Con con2 args2) -> do
+      (Con con1 _ args1, Con con2 _ args2) -> do
         let c1 = conName con1
             c2 = conName con2
         args1' <- map unArg <$> flip notForced args1 <$> getForcedArgs c1
diff --git a/src/full/Agda/Compiler/Epic/Interface.hs b/src/full/Agda/Compiler/Epic/Interface.hs
--- a/src/full/Agda/Compiler/Epic/Interface.hs
+++ b/src/full/Agda/Compiler/Epic/Interface.hs
@@ -8,7 +8,7 @@
 
 import Data.Function
 import Data.Map(Map)
-import Data.Monoid
+import Data.Semigroup (Semigroup, Monoid, (<>), mempty, mappend)
 import Data.Set (Set)
 import Data.Typeable ( Typeable )
 
@@ -60,6 +60,21 @@
     , injectiveFuns :: Map QName InjectiveFun
     } deriving (Typeable, Show)
 
+instance Semigroup EInterface where
+  x <> y = EInterface
+      { constrTags    = comb constrTags
+      , definitions   = comb definitions
+      , defDelayed    = comb defDelayed
+      , conArity      = comb conArity
+      , mainName      = mainName x `mplus` mainName y
+      , relevantArgs  = comb relevantArgs
+      , forcedArgs    = comb forcedArgs
+      , injectiveFuns = comb injectiveFuns
+      }
+    where
+      comb :: Semigroup a => (EInterface -> a) -> a
+      comb f = ((<>) `on` f) x y
+
 instance Monoid EInterface where
   mempty = EInterface
       { constrTags    = mempty
@@ -71,16 +86,4 @@
       , forcedArgs    = mempty
       , injectiveFuns = mempty
       }
-  mappend x y = EInterface
-      { constrTags    = comb constrTags
-      , definitions   = comb definitions
-      , defDelayed    = comb defDelayed
-      , conArity      = comb conArity
-      , mainName      = mainName x `mplus` mainName y
-      , relevantArgs  = comb relevantArgs
-      , forcedArgs    = comb forcedArgs
-      , injectiveFuns = comb injectiveFuns
-      }
-    where
-      comb :: Monoid a => (EInterface -> a) -> a
-      comb f = (mappend `on` f) x y
+  mappend = (<>)
diff --git a/src/full/Agda/Compiler/Epic/Primitive.hs b/src/full/Agda/Compiler/Epic/Primitive.hs
--- a/src/full/Agda/Compiler/Epic/Primitive.hs
+++ b/src/full/Agda/Compiler/Epic/Primitive.hs
@@ -102,7 +102,7 @@
 defName :: T.Term -> QName
 defName v = case T.ignoreSharing v of
   T.Def q [] -> q
-  T.Con q [] -> T.conName q
+  T.Con q ci [] -> T.conName q
   _          -> __IMPOSSIBLE__
 
 -- | Translation to primitive integer functions
diff --git a/src/full/Agda/Compiler/Epic/Static.hs b/src/full/Agda/Compiler/Epic/Static.hs
--- a/src/full/Agda/Compiler/Epic/Static.hs
+++ b/src/full/Agda/Compiler/Epic/Static.hs
@@ -1,5 +1,4 @@
 {-# LANGUAGE CPP #-}
-{-# LANGUAGE FlexibleInstances #-}
 
 -- | Find the places where the builtin static is used and do some normalisation
 --   there.
@@ -57,11 +56,12 @@
 etaExpand def@(Def n ts) = do
     defs <- lift $ use $ stImports . sigDefinitions
     let f   = maybe __IMPOSSIBLE__ theDef (HM.lookup n defs)
-        len = length . clausePats . head .  funClauses $ f
+        len = length . namedClausePats . head .  funClauses $ f
         toEta :: Num a => a
         toEta = fromIntegral $ len - length ts
         term  = raise toEta def `applys` map var (downFrom toEta)
-    return $ foldr (\ v t -> Lam defaultArgInfo (Abs v t)) term $ replicate toEta "staticVar"
+        info  = setOrigin Inserted defaultArgInfo
+    return $ foldr (\ v t -> Lam info (Abs v t)) term $ replicate toEta "staticVar"
 etaExpand x = return x
 
 class Evaluate a where
@@ -99,7 +99,7 @@
             ]
           ]
         return f
-    Con c args   -> Con c <$> evaluate args
+    Con c ci args   -> Con c ci <$> evaluate args
     Pi  arg abs  -> return term
     Sort s       -> return term
     MetaV i args -> return term
@@ -116,7 +116,4 @@
     isStatic :: QName -> Compile TCM Bool
     isStatic q = do
       defs <- lift $ use $ stImports . sigDefinitions
-      return $ case fmap theDef $ HM.lookup q defs of
-          Nothing -> False
-          Just (f@Function{}) -> funStatic f
-          Just _              -> False
+      return $ maybe False (^. theDefLens . funStatic) $ HM.lookup q defs
diff --git a/src/full/Agda/Compiler/HaskellTypes.hs b/src/full/Agda/Compiler/HaskellTypes.hs
--- a/src/full/Agda/Compiler/HaskellTypes.hs
+++ b/src/full/Agda/Compiler/HaskellTypes.hs
@@ -105,7 +105,7 @@
             underAbstraction a b $ \b ->
               hsForall <$> getHsVar 0 <*> (hsFun hsA <$> fromType b)
           else hsFun <$> fromType (unDom a) <*> fromType (noabsApp __IMPOSSIBLE__ b)
-        Con c args -> hsApp <$> getHsType (conName c) <*> fromArgs args
+        Con c ci args -> hsApp <$> getHsType (conName c) <*> fromArgs args
         Lam{}      -> err
         Level{}    -> return hsUnit
         Lit{}      -> return hsUnit
diff --git a/src/full/Agda/Compiler/JS/Case.hs b/src/full/Agda/Compiler/JS/Case.hs
deleted file mode 100644
--- a/src/full/Agda/Compiler/JS/Case.hs
+++ /dev/null
@@ -1,127 +0,0 @@
-{-# LANGUAGE CPP #-}
-
-module Agda.Compiler.JS.Case where
-
-import Prelude hiding ( null )
-import Data.Map ( Map, empty, null, mapWithKey, fromListWith, unionWith )
-import Data.List ( genericLength, genericTake, intercalate )
-
-import Agda.Syntax.Common ( Nat )
-
-import Agda.Compiler.JS.Pretty ( Pretty, pretty, pretties )
-import Agda.Compiler.JS.Syntax
-  ( Exp(Undefined,Local,Lambda,Object,Apply),
-    LocalId(LocalId), MemberId )
-import Agda.Compiler.JS.Substitution ( shiftFrom )
-
-#include "undefined.h"
-import Agda.Utils.Impossible ( Impossible(Impossible), throwImpossible )
-
--- ECMAScript doesn't support pattern-mathching case, so
--- we translate to a visitor pattern.  We use a decision-tree
--- translation, as that seems to fit visitor objects better.
-
-data Case = Case { pats :: [Patt], body :: Exp }
-  deriving (Show)
-
-instance Pretty Case where
-  pretty n i (Case ps e) =
-    intercalate " " (pretties n i ps) ++ " -> " ++ pretty (n + numVars ps) i e
-
--- Not handling literal patterns yet
--- Note that all patterns introduce binders, in depth-first prefix order,
--- for example Tagged l [ VarPatt , VarPatt ] should be thought
--- of as "x2 @ l (x1, x0)".
-
-data Patt =
-  VarPatt |
-  Tagged Tag [Patt]
-  deriving (Show)
-
-instance Pretty Patt where
-  pretty n i VarPatt = "x"
-  pretty n i (Tagged (Tag l _ _) ps) =
-    "(" ++ intercalate " " (pretty n i l : pretties n i ps) ++ ")"
-
--- With each tag, we record its name, and the names of the
--- other constructors of the datatype (e.g. we'd represent
--- zero as Tag "zero" ["suc","zero"]).  We also record the
--- the function which accepts a visitor (by default Apply,
--- but can be over-ridden by the FFI).
-
-data Tag = Tag MemberId [MemberId] (Exp -> [Exp] ->  Exp)
-
-instance Show Tag where
-  show (Tag i is _) = show i
-
--- Number of bound variables in a pattern
-
-numVars :: [Patt] -> Nat
-numVars = sum . map numVars'
-
-numVars' :: Patt -> Nat
-numVars' (VarPatt)     = 1
-numVars' (Tagged l ps) = 1 + numVars ps
-
--- Compile a case statement to a function
--- in lambda n cs, n is the number of parameters
-
-lambda :: [Case] -> Exp
-lambda []     = Undefined
-lambda (c:cs) = lambda' 0 0 (genericLength (pats c)) (c:cs)
-
--- In lambda' l m n cs,
--- l is the number of free variables,
--- m is the number of already read parameters, with m <= l, and
--- n is the number of unread parameters.
--- Each case should be of the form (Case ps e) where ps has length m+n.
--- e can have (l - m + #bv ps) variables free.
--- lambda' l m n cs can have l variables free.
-
-lambda' :: Nat -> Nat -> Nat -> [Case] -> Exp
-lambda' l m n []       = Undefined
-lambda' l 0 0 (c : cs) = body c
-lambda' l 0 n cs       = Lambda 1 (lambda' (l+1) 1 (n-1) cs)
-lambda' l m n cs       =
-  case null ts of
-    True -> lambda' l (m-1) n (map pop cs)
-    False -> visit cs (Local (LocalId (m-1))) [Object (mapWithKey (match l (m-1) n cs) ts)]
-  where
-    ts = tags cs
-
--- Pop cases
-
-pop :: Case -> Case
-pop (Case (VarPatt : ps) e) = (Case ps e)
-pop _                       = __IMPOSSIBLE__
-
--- Cases which match a given tag/arity
-
-match :: Nat -> Nat -> Nat -> [Case] -> MemberId -> Nat -> Exp
-match l m n cs t x = Lambda x (lambda' (l + x) (m + x) n (concat (map (refine t x) cs)))
-
--- Refine a case statement by a given tag/arity
-
-refine :: MemberId -> Nat -> Case -> [Case]
-refine t x (Case (VarPatt : qs) e) =
-  [Case (genericTake x (repeat VarPatt) ++ qs) (shiftFrom (numVars qs) x e)]
-refine t x (Case (Tagged (Tag u _ _) ps : qs) e) | t == u =
-  [Case (ps ++ qs) e]
-refine _ _ _ = []
-
--- Extract the visit function
-
-visit :: [Case] -> Exp -> [Exp] -> Exp
-visit (Case (Tagged (Tag _ _ v) _ : _) _ : _ ) = v
-visit (Case (VarPatt              : _) _ : cs) = visit cs
-visit _                                        = Apply
-
--- Extract the list of possible tags, and their arity.
-
-tags :: [Case] -> Map MemberId Nat
-tags = foldl (unionWith max) empty . map tag
-
-tag :: Case -> Map MemberId Nat
-tag (Case (Tagged (Tag t us _) ps : qs) e) =
-  fromListWith max ((t, genericLength ps) : [ (u, 0) | u <- us ])
-tag _ = empty
diff --git a/src/full/Agda/Compiler/JS/Compiler.hs b/src/full/Agda/Compiler/JS/Compiler.hs
--- a/src/full/Agda/Compiler/JS/Compiler.hs
+++ b/src/full/Agda/Compiler/JS/Compiler.hs
@@ -1,13 +1,15 @@
 {-# LANGUAGE CPP            #-}
-{-# LANGUAGE NamedFieldPuns #-}
 
 module Agda.Compiler.JS.Compiler where
 
 import Prelude hiding ( null, writeFile )
+import Control.Applicative
 import Control.Monad.Reader ( liftIO )
+import Control.Monad.Trans
 import Data.List ( intercalate, genericLength, partition )
 import Data.Maybe ( isJust )
 import Data.Set ( Set, null, insert, difference, delete )
+import Data.Traversable (traverse)
 import Data.Map ( fromList, elems )
 import qualified Data.Set as Set
 import qualified Data.Map as Map
@@ -17,7 +19,7 @@
 import Agda.Interaction.FindFile ( findFile, findInterfaceFile )
 import Agda.Interaction.Imports ( isNewerThan )
 import Agda.Interaction.Options ( optCompileDir )
-import Agda.Syntax.Common ( Nat, unArg, namedArg )
+import Agda.Syntax.Common ( Nat, unArg, namedArg, NameId(..) )
 import Agda.Syntax.Concrete.Name ( projectRoot )
 import Agda.Syntax.Abstract.Name
   ( ModuleName(MName), QName,
@@ -25,51 +27,46 @@
     mnameToList, qnameName, qnameModule, isInModule, nameId )
 import Agda.Syntax.Internal
   ( Name, Args, Type,
-    Clause, Pattern, Pattern'(VarP,DotP,LitP,ConP,ProjP),
-    ClauseBodyF(Body,NoBody,Bind),ClauseBody,
-    Term(Var,Lam,Lit,Level,Def,Con,Pi,Sort,MetaV,DontCare,Shared),
-    unSpine, allApplyElims,
     conName,
-    derefPtr,
-    toTopLevelModuleName, clausePats, clauseBody, arity, unEl, unAbs )
-import Agda.Syntax.Internal.Pattern ( unnumberPatVars )
-import Agda.TypeChecking.Substitute ( absBody )
+    toTopLevelModuleName, arity, unEl, unAbs, nameFixity )
 import Agda.Syntax.Literal ( Literal(LitNat,LitFloat,LitString,LitChar,LitQName,LitMeta) )
+import Agda.Syntax.Fixity
+import qualified Agda.Syntax.Treeless as T
+import Agda.TypeChecking.Substitute ( absBody )
 import Agda.TypeChecking.Level ( reallyUnLevelView )
-import Agda.TypeChecking.Monad
-  ( TCM, Definition(Defn), Interface,
-    JSCode, Defn(Record,Datatype,Constructor,Primitive,Function,Axiom),
-    Projection(Projection), projProper, projFromType, projIndex,
-    iModuleName, iImportedModules, theDef, getConstInfo,
-    ignoreAbstractMode, miInterface, getVisitedModules,
-    defName, defType, funClauses, funProjection, projectionArgs,
-    dataPars, dataCons,
-    conPars, conData,
-    recConHead, recFields, recNamedCon,
-    localTCState,
-    typeError, TypeError(NotImplemented),
-    defJSDef )
+import Agda.TypeChecking.Monad hiding (Global, Local)
+import Agda.TypeChecking.Monad.Builtin
 import Agda.TypeChecking.Monad.Options ( setCommandLineOptions, commandLineOptions, reportSLn )
 import Agda.TypeChecking.Reduce ( instantiateFull, normalise )
+import Agda.TypeChecking.Substitute (TelV(..))
+import Agda.TypeChecking.Telescope
+import Agda.TypeChecking.Pretty
 import Agda.Utils.FileName ( filePath )
 import Agda.Utils.Function ( iterate' )
+import Agda.Utils.Maybe
 import Agda.Utils.Monad ( (<$>), (<*>), ifM )
 import Agda.Utils.Pretty (prettyShow)
+import qualified Agda.Utils.Pretty as P
+import Agda.Utils.IO.Directory
 import Agda.Utils.IO.UTF8 ( writeFile )
 import qualified Agda.Utils.HashMap as HMap
+
 import Agda.Compiler.Common
-  ( curDefs, curIF, curMName, setInterface, repl, inCompilerEnv,
-    IsMain (..), doCompile )
+import Agda.Compiler.ToTreeless
+import Agda.Compiler.Treeless.DelayCoinduction
+import Agda.Compiler.Treeless.EliminateLiteralPatterns
+import Agda.Compiler.Treeless.GuardsToPrims
 
 import Agda.Compiler.JS.Syntax
-  ( Exp(Self,Local,Global,Undefined,String,Char,Integer,Double,Lambda,Object,Apply,Lookup),
+  ( Exp(Self,Local,Global,Undefined,String,Char,Integer,Double,Lambda,Object,Apply,Lookup,If,BinOp,PlainJS),
     LocalId(LocalId), GlobalId(GlobalId), MemberId(MemberId), Export(Export), Module(Module),
     modName, expName, uses )
 import Agda.Compiler.JS.Substitution
   ( curriedLambda, curriedApply, emp, subst, apply )
-import Agda.Compiler.JS.Case ( Tag(Tag), Case(Case), Patt(VarPatt,Tagged), lambda )
-import Agda.Compiler.JS.Pretty ( pretty )
+import qualified Agda.Compiler.JS.Pretty as JSPretty
 
+import Paths_Agda
+
 #include "undefined.h"
 import Agda.Utils.Impossible ( Impossible(Impossible), throwImpossible )
 
@@ -79,19 +76,21 @@
 
 compilerMain :: Interface -> TCM ()
 compilerMain mainI = inCompilerEnv mainI $ do
-  doCompile IsMain mainI $ \_ -> compile
+  doCompile IsMain mainI $ do
+    compile
+  copyRTEModules
 
-compile :: Interface -> TCM ()
-compile i = do
+compile :: IsMain -> Interface -> TCM ()
+compile isMain i = do
   ifM uptodate noComp $ do
     yesComp
-    writeModule =<< curModule
+    writeModule =<< curModule isMain
   where
   uptodate = liftIO =<< (isNewerThan <$> outFile_ <*> ifile)
   ifile    = maybe __IMPOSSIBLE__ filePath <$>
                (findInterfaceFile . toTopLevelModuleName =<< curMName)
-  noComp   = reportSLn "" 1 . (++ " : no compilation is needed.") . prettyShow =<< curMName
-  yesComp  = reportSLn "" 1 . (`repl` "Compiling <<0>> in <<1>> to <<2>>") =<<
+  noComp   = reportSLn "compile.js" 2 . (++ " : no compilation is needed.") . prettyShow =<< curMName
+  yesComp  = reportSLn "compile.js" 1 . (`repl` "Compiling <<0>> in <<1>> to <<2>>") =<<
              sequence [prettyShow <$> curMName, ifile, outFile_] :: TCM ()
 
 --------------------------------------------------
@@ -125,17 +124,13 @@
 global' :: QName -> TCM (Exp,[MemberId])
 global' q = do
   i <- iModuleName <$> curIF
-  is <- filter (isInModule q) <$> map (iModuleName . miInterface) <$> elems <$> getVisitedModules
-  case is of
-    [] -> __IMPOSSIBLE__
-    _ -> let
-        seg = maximum (map (length . mnameToList) is)
-        ms = mnameToList (qnameModule q)
-        m = MName (take seg ms)
-        ls = map jsMember (drop seg ms ++ [qnameName q])
-      in case (m == i) of
-        True -> return (Self, ls)
-        False -> return (Global (jsMod m), ls)
+  modNm <- topLevelModuleName (qnameModule q)
+  let
+    qms = mnameToList $ qnameModule q
+    nm = map jsMember (drop (length $ mnameToList modNm) qms ++ [qnameName q])
+  if modNm == i
+    then return (Self, nm)
+    else return (Global (jsMod modNm), nm)
 
 global :: QName -> TCM (Exp,[MemberId])
 global q = do
@@ -174,13 +169,15 @@
     False -> reorder' defs (insertAfter us e es)
 
 isTopLevelValue :: Export -> Bool
-isTopLevelValue (Export _ e) = case e of
+isTopLevelValue (Export _ isCoind e) = case e of
+  _ | isCoind -> False
   Lambda{} -> False
   _        -> True
 
 isEmptyObject :: Export -> Bool
-isEmptyObject (Export _ e) = case e of
+isEmptyObject (Export _ _ e) = case e of
   Object m -> Map.null m
+  Lambda{} -> True
   _        -> False
 
 insertAfter :: Set [MemberId] -> Export -> [Export] -> [Export]
@@ -192,263 +189,196 @@
 -- Main compiling clauses
 --------------------------------------------------
 
-curModule :: TCM Module
-curModule = do
+curModule :: IsMain -> TCM Module
+curModule isMain = do
+  kit <- coinductionKit
   m <- (jsMod <$> curMName)
   is <- map jsMod <$> (map fst . iImportedModules <$> curIF)
-  es <- mapM definition =<< (HMap.toList <$> curDefs)
-  return (Module m (reorder es))
+  es <- catMaybes <$> (mapM (definition kit) =<< (sortDefs <$> curDefs))
+  return $ Module m (reorder es) main
+  where
+    main = case isMain of
+      IsMain -> Just $ Apply (Lookup Self $ MemberId "main") [Lambda 1 emp]
+      NotMain -> Nothing
 
-definition :: (QName,Definition) -> TCM Export
-definition (q,d) = do
+definition :: Maybe CoinductionKit -> (QName,Definition) -> TCM (Maybe Export)
+definition kit (q,d) = do
+  reportSDoc "compile.js" 10 $ text "compiling def:" <+> prettyTCM q
   (_,ls) <- global q
   d <- instantiateFull d
-  e <- defn q ls (defType d) (defJSDef d) (theDef d)
-  return (Export ls e)
 
-defn :: QName -> [MemberId] -> Type -> Maybe JSCode -> Defn -> TCM Exp
-defn q ls t (Just e) Axiom =
-  return e
-defn q ls t Nothing Axiom = do
-  t <- normalise t
-  s <- isSingleton t
-  case s of
-    -- Inline and eta-expand postulates of singleton type
-    Just e ->
-      return (curriedLambda (arity t) e)
-    -- Everything else we leave undefined
-    Nothing ->
-      return Undefined
-defn q ls t (Just e) (Function {}) =
-  return e
-defn q ls t Nothing (Function { funProjection = proj, funClauses = cls }) = do
-  t <- normalise t
-  s <- isSingleton t
-  cs <- mapM clause cls
-  case s of
-    -- Inline and eta-expand expressions of singleton type
-    Just e ->
-      return (curriedLambda (arity t) e)
-    Nothing -> case proj of
-      Just Projection{ projProper, projFromType = p, projIndex = i } -> do
-        -- Andreas, 2013-05-20: whether a projection is proper is now stored.
-        if isJust projProper then
-          -- For projections from records we use a field lookup
-            return (curriedLambda (numPars cls)
-              (Lookup (Local (LocalId 0)) (last ls)))
-         else
-            -- For anything else we generate code, after adding (i-1) dummy lambdas
-            return (dummyLambda (i-1) (lambda cs))
-{- OLD way of finding out whether a projection is proper (ie. from record)
-        d <- getConstInfo p
-        case theDef d of
-          -- For projections from records we use a field lookup
-          Record { recFields = flds } | q `elem` map unArg flds ->
-            return (curriedLambda (numPars cls)
-              (Lookup (Local (LocalId 0)) (last ls)))
-          _ ->
-            -- For anything else we generate code, after adding (i-1) dummy lambdas
-            return (dummyLambda (i-1) (lambda cs))
--}
-      Nothing ->
-        return (lambda cs)
-defn q ls t (Just e) (Primitive {}) =
-  return e
-defn q ls t _ (Primitive {}) =
-  return Undefined
-defn q ls t _ (Datatype {}) =
-  return emp
-defn q ls t (Just e) (Constructor {}) =
-  return e
-defn q ls t _ (Constructor { conData = p, conPars = nc }) = do
-  np <- return (arity t - nc)
-  d <- getConstInfo p
-  case theDef d of
-    Record { recFields = flds } ->
-      return (curriedLambda np (Object (fromList
-        ( (last ls , Lambda 1
-             (Apply (Lookup (Local (LocalId 0)) (last ls))
-               [ Local (LocalId (np - i)) | i <- [0 .. np-1] ]))
-        : (zip [ jsMember (qnameName (unArg fld)) | fld <- flds ]
-             [ Local (LocalId (np - i)) | i <- [1 .. np] ])))))
-    _ ->
-      return (curriedLambda (np + 1)
-        (Apply (Lookup (Local (LocalId 0)) (last ls))
-          [ Local (LocalId (np - i)) | i <- [0 .. np-1] ]))
-defn q ls t _ (Record {}) =
-  return emp
-
--- Number of params in a function declaration
-
-numPars :: [Clause] -> Nat
-numPars []      = 0
-numPars (c : _) = genericLength (clausePats c)
-
--- One clause in a function definition
+  definition' kit q d (defType d) ls
 
-clause :: Clause -> TCM Case
-clause c = do
-  let pats = unnumberPatVars $ clausePats c
-  ps <- mapM (pattern . unArg) pats
-  (av,bv,es) <- return (mapping (map unArg pats))
-  e <- body (clauseBody c)
-  return (Case ps (subst av es e))
+definition' :: Maybe CoinductionKit -> QName -> Definition -> Type -> [MemberId] -> TCM (Maybe Export)
+definition' kit q d t ls =
+  case theDef d of
+    -- coinduction
+    Constructor{} | Just q == (nameOfSharp <$> kit) -> do
+      ret $  Lambda 1 $ local 0
+    Function{} | Just q == (nameOfFlat <$> kit) -> do
+      ret $ Lambda 1 $ Apply (local 0) [Integer 0]
 
--- Mapping from Agda variables to JS variables in a pattern.
--- If mapping ps = (av,bv,es) then av is the number of Agda variables,
--- bv is the number of JS variables, and es is a list of expressions,
--- where es[i] is the JS variable corresponding to Agda variable i.
+    Axiom | Just e <- defJSDef d -> plainJS e
+    Axiom | otherwise -> ret Undefined
 
-mapping :: [Pattern] -> (Nat,Nat,[Exp])
-mapping = foldr mapping' (0,0,[])
+    Function{} | Just e <- defJSDef d -> plainJS e
+    Function{} | otherwise -> do
+      isInfVal <- outputIsInf kit t
 
-mapping' :: Pattern -> (Nat,Nat,[Exp]) -> (Nat,Nat,[Exp])
-mapping' (ProjP _)     (av,bv,es) =
-  __IMPOSSIBLE__
-mapping' (VarP _)      (av,bv,es) = (av+1, bv+1, Local (LocalId bv) : es)
-mapping' (DotP _)      (av,bv,es) = (av+1, bv+1, Local (LocalId bv) : es)
-mapping' (ConP _ _ ps) (av,bv,es) = (av',bv'+1,es') where
-  (av',bv',es') = foldr mapping' (av,bv,es) (map namedArg ps)
-mapping' (LitP _)      (av,bv,es) = (av, bv+1, es)
+      reportSDoc "compile.js" 5 $ text "compiling fun:" <+> prettyTCM q
+      caseMaybeM (toTreeless q) (pure Nothing) $ \ treeless -> do
+        funBody <- eliminateLiteralPatterns $ convertGuards $ treeless
+        funBody' <- delayCoinduction funBody t
+        reportSDoc "compile.js" 30 $ text " compiled treeless fun:" <+> pretty funBody'
+        funBody'' <- compileTerm funBody'
+        reportSDoc "compile.js" 30 $ text " compiled JS fun:" <+> (text . show) funBody''
+        return $ Just $ Export ls isInfVal funBody''
 
--- Not doing literal patterns yet
+    Primitive{primName = p} | p `Set.member` primitives ->
+      plainJS $ "agdaRTS." ++ p
+    Primitive{} | Just e <- defJSDef d -> plainJS e
+    Primitive{} | otherwise -> ret Undefined
 
-pattern :: Pattern -> TCM Patt
-pattern (ProjP _)     = typeError $ NotImplemented $ "Compilation of copatterns"
-pattern (ConP c _ ps) = do
-  l <- tag $ conName c
-  ps <- mapM (pattern . namedArg) ps
-  return (Tagged l ps)
-pattern _             = return VarPatt
+    Datatype{} -> ret emp
+    Record{} -> return Nothing
 
-tag :: QName -> TCM Tag
-tag q = do
-  l <- visitorName q
-  c <- getConstInfo q
-  case theDef c of
-    (Constructor { conData = p }) -> do
+    Constructor{} | Just e <- defJSDef d -> plainJS e
+    Constructor{conData = p, conPars = nc} | otherwise -> do
+      np <- return (arity t - nc)
       d <- getConstInfo p
-      case (defJSDef d, theDef d) of
-        (Just e, Datatype { dataCons = qs }) -> do
-          ls <- mapM visitorName qs
-          return (Tag l ls (\ x xs -> apply e (x:xs)))
-        (Nothing, Datatype { dataCons = qs }) -> do
-          ls <- mapM visitorName qs
-          return (Tag l ls Apply)
-        (Just e, Record {}) -> do
-          return (Tag l [l] (\ x xs -> apply e (x:xs)))
-        (Nothing, Record {}) -> do
-          return (Tag l [l] Apply)
-        _ -> __IMPOSSIBLE__
-    _ -> __IMPOSSIBLE__
+      case theDef d of
+        Record { recFields = flds } ->
+          ret (curriedLambda np (Object (fromList
+            ( (last ls , Lambda 1
+                 (Apply (Lookup (Local (LocalId 0)) (last ls))
+                   [ Local (LocalId (np - i)) | i <- [0 .. np-1] ]))
+            : (zip [ jsMember (qnameName (unArg fld)) | fld <- flds ]
+                 [ Local (LocalId (np - i)) | i <- [1 .. np] ])))))
+        _ ->
+          ret (curriedLambda (np + 1)
+            (Apply (Lookup (Local (LocalId 0)) (last ls))
+              [ Local (LocalId (np - i)) | i <- [0 .. np-1] ]))
 
-visitorName :: QName -> TCM MemberId
-visitorName q = do (m,ls) <- global q; return (last ls)
+    AbstractDefn -> __IMPOSSIBLE__
+  where
+    ret = return . Just . Export ls False
+    plainJS = return . Just . Export ls False . PlainJS
 
-body :: ClauseBody -> TCM Exp
-body (Body e) = term e
-body (Bind b) = body (unAbs b)
-body (NoBody) = return Undefined
 
-term :: Term -> TCM Exp
-term v = do
-  case unSpine v of
-    (Var   i es)         -> do
-      let Just as = allApplyElims es
-      e <- return (Local (LocalId i))
-      es <- args 0 as
-      return (curriedApply e es)
-    (Lam   _ at)         -> Lambda 1 <$> term (absBody at)
-    (Lit   l)            -> return (literal l)
-    (Level l)            -> term =<< reallyUnLevelView l
-    (Shared p)           -> term $ derefPtr p
-    (Def q es)           -> do
-      let Just as = allApplyElims es
+compileTerm :: T.TTerm -> TCM Exp
+compileTerm term = do
+  case term of
+    T.TVar x -> return $ Local $ LocalId x
+    T.TDef q -> do
       d <- getConstInfo q
       case theDef d of
         -- Datatypes and records are erased
         Datatype {} -> return (String "*")
         Record {} -> return (String "*")
-        _ -> case defJSDef d of
-          -- Inline functions with an FFI definition
-          Just e -> do
-            es <- args (projectionArgs $ theDef d) as
-            return (curriedApply e es)
-          Nothing -> do
-            t <- normalise (defType d)
-            s <- isSingleton t
-            case s of
-              -- Inline and eta-expand singleton types
-              Just e ->
-                return (curriedLambda (arity t) e)
-              -- Everything else we leave non-inline
-              Nothing -> do
-                e <- qname q
-                es <- args (projectionArgs $ theDef d) as
-                return (curriedApply e es)
-    (Con con as)         -> do
-      let q = conName con
+        _ -> qname q
+    T.TApp t xs -> curriedApply <$> compileTerm t <*> mapM compileTerm xs
+    T.TLam t -> Lambda 1 <$> compileTerm t
+    -- TODO This is not a lazy let, but it should be...
+    T.TLet t e -> apply <$> (Lambda 1 <$> compileTerm e) <*> traverse compileTerm [t]
+    T.TLit l -> return $ literal l
+    T.TCon q -> do
       d <- getConstInfo q
-      case defJSDef d of
-        -- Inline functions with an FFI definition
-        Just e -> do
-          es <- args 0 as
-          return (curriedApply e es)
-        -- Everything else we leave non-inline
-        Nothing -> do
-          e <- qname q
-          es <- args 0 as
-          return (curriedApply e es)
-    (Pi    _ _)          -> return (String "*")
-    (Sort  _)            -> return (String "*")
-    (MetaV _ _)          -> return (Undefined)
-    (DontCare _)         -> return (Undefined)
+      qname q
+    T.TCase sc (T.CTData dt) def alts -> do
+      dt <- getConstInfo dt
+      alts' <- traverse compileAlt alts
+      let obj = Object $ Map.fromList alts'
+      case (theDef dt, defJSDef dt) of
+        (_, Just e) -> do
+          return $ apply (PlainJS e) [Local (LocalId sc), obj]
+        (Record{}, _) -> do
+          memId <- visitorName $ recCon $ theDef dt
+          return $ apply (Lookup (Local $ LocalId sc) memId) [obj]
+        (Datatype{}, _) -> do
+          return $ curriedApply (Local (LocalId sc)) [obj]
+        _ -> __IMPOSSIBLE__
+    T.TCase _ _ _ _ -> __IMPOSSIBLE__
 
--- Check to see if a type is a singleton, and if so, return its only
--- member.  Singleton types are of the form T1 -> ... -> Tn -> T where
--- T is either a record with no fields, a datatype with one
--- no-argument constructor, a datatype with no constructors,
--- or (since this is a type-erasing translation) Set.
+    T.TPrim p -> return $ compilePrim p
+    T.TUnit -> unit
+    T.TSort -> unit
+    T.TErased -> unit
+    T.TError T.TUnreachable -> return Undefined
 
-isSingleton :: Type -> TCM (Maybe Exp)
-isSingleton t = case unEl t of
-  Pi _ b         -> isSingleton (unAbs b)
-  Sort _         -> return (Just (String "*"))
-  Def q as       -> do
-    d <- getConstInfo q
-    case (theDef d) of
-      Datatype { dataPars = np, dataCons = [] } ->
-        return (Just Undefined)
-      Datatype { dataPars = np, dataCons = [p] } -> do
-        c <- getConstInfo p
-        case (arity (defType c) == np) of
-          True -> Just <$> qname p
-          False -> return (Nothing)
-      Record { recConHead = con, recFields = [] } ->
-        Just <$> qname (conName con)
-      _ -> return (Nothing)
-  _              -> return (Nothing)
+  where
+    unit = return $ Integer 0
 
-args :: Int -> Args -> TCM [Exp]
-args n as = (replicate n Undefined ++) <$>
-  mapM (term . unArg) as
+compilePrim :: T.TPrim -> Exp
+compilePrim p =
+  case p of
+    T.PIf -> curriedLambda 3 $ If (local 2) (local 1) (local 0)
+    T.PEqI -> binOp "agdaRTS.uprimIntegerEqual"
+    T.PEqF -> binOp "agdaRTS.uprimFloatEquality"
+    T.PEqQ -> binOp "agdaRTS.uprimQNameEquality"
+    p | T.isPrimEq p -> curriedLambda 2 $ BinOp (local 1) "===" (local 0)
+    T.PGeq -> binOp "agdaRTS.uprimIntegerGreaterOrEqualThan"
+    T.PLt -> binOp "agdaRTS.uprimIntegerLessThan"
+    T.PAdd -> binOp "agdaRTS.uprimIntegerPlus"
+    T.PSub -> binOp "agdaRTS.uprimIntegerMinus"
+    T.PMul -> binOp "agdaRTS.uprimIntegerMultiply"
+    T.PSeq -> binOp "agdaRTS.primSeq"
+    _ -> __IMPOSSIBLE__
+  where binOp js = curriedLambda 2 $ apply (PlainJS js) [local 1, local 0]
 
+
+compileAlt :: T.TAlt -> TCM (MemberId, Exp)
+compileAlt a = case a of
+  T.TACon con ar body -> do
+    memId <- visitorName con
+    body <- Lambda ar <$> compileTerm body
+    return (memId, body)
+  _ -> __IMPOSSIBLE__
+
+visitorName :: QName -> TCM MemberId
+visitorName q = do (m,ls) <- global q; return (last ls)
+
+local :: Nat -> Exp
+local = Local . LocalId
+
 qname :: QName -> TCM Exp
 qname q = do
   (e,ls) <- global q
   return (foldl Lookup e ls)
 
 literal :: Literal -> Exp
-literal (LitNat    _ x) = Integer x
-literal (LitFloat  _ x) = Double  x
-literal (LitString _ x) = String  x
-literal (LitChar   _ x) = Char    x
-literal (LitQName  _ x) = String  (show x)
-literal LitMeta{}       = __IMPOSSIBLE__
+literal l = case l of
+  (LitNat    _ x) -> Integer x
+  (LitFloat  _ x) -> Double  x
+  (LitString _ x) -> String  x
+  (LitChar   _ x) -> Char    x
+  (LitQName  _ x) -> litqname x
+  LitMeta{}       -> __IMPOSSIBLE__
 
-dummyLambda :: Int -> Exp -> Exp
-dummyLambda n = iterate' n (Lambda 0)
+litqname :: QName -> Exp
+litqname q =
+  Object $ Map.fromList
+    [ (mem "id", Integer $ fromIntegral n)
+    , (mem "moduleId", Integer $ fromIntegral m)
+    , (mem "name", String $ show q)
+    , (mem "fixity", litfixity fx)]
+  where
+    mem = MemberId
+    NameId n m = nameId $ qnameName q
+    fx = theFixity $ nameFixity $ qnameName q
 
+    litfixity :: Fixity -> Exp
+    litfixity fx = Object $ Map.fromList
+      [ (mem "assoc", litAssoc $ fixityAssoc fx)
+      , (mem "prec", litPrec $ fixityLevel fx)]
+
+    -- TODO this will probably not work well together with the necessary FFI bindings
+    litAssoc NonAssoc   = String "NonAssoc"
+    litAssoc LeftAssoc  = String "LeftAssoc"
+    litAssoc RightAssoc = String "RightAssoc"
+
+    litPrec Unrelated   = String "Unrelated"
+    litPrec (Related l) = Integer l
+
 --------------------------------------------------
 -- Writing out an ECMAScript module
 --------------------------------------------------
@@ -456,14 +386,7 @@
 writeModule :: Module -> TCM ()
 writeModule m = do
   out <- outFile (modName m)
-  liftIO (writeFile out (pretty 0 0 m))
-
-compileDir :: TCM FilePath
-compileDir = do
-  mdir <- optCompileDir <$> commandLineOptions
-  case mdir of
-    Just dir -> return dir
-    Nothing  -> __IMPOSSIBLE__
+  liftIO (writeFile out (JSPretty.pretty 0 0 m))
 
 outFile :: GlobalId -> TCM FilePath
 outFile m = do
@@ -478,3 +401,37 @@
 outFile_ = do
   m <- curMName
   outFile (jsMod m)
+
+
+copyRTEModules :: TCM ()
+copyRTEModules = do
+  dataDir <- lift getDataDir
+  let srcDir = dataDir </> "JS"
+  (lift . copyDirContent srcDir) =<< compileDir
+
+-- | Primitives implemented in the JS Agda RTS.
+primitives :: Set String
+primitives = Set.fromList
+  [ "primExp"
+  , "primFloatDiv"
+  , "primFloatEquality"
+  , "primFloatNumericalEquality"
+  , "primFloatNumericalLess"
+  , "primFloatNegate"
+  , "primFloatMinus"
+  , "primFloatPlus"
+  , "primFloatSqrt"
+  , "primFloatTimes"
+  , "primNatMinus"
+  , "primShowFloat"
+  , "primShowInteger"
+  , "primSin"
+  , "primCos"
+  , "primTan"
+  , "primASin"
+  , "primACos"
+  , "primATan"
+  , "primATan2"
+  , "primShowQName"
+  , "primQNameEquality"
+  ]
diff --git a/src/full/Agda/Compiler/JS/Parser.hs b/src/full/Agda/Compiler/JS/Parser.hs
deleted file mode 100644
--- a/src/full/Agda/Compiler/JS/Parser.hs
+++ /dev/null
@@ -1,185 +0,0 @@
-module Agda.Compiler.JS.Parser where
-
--- This is a simple parser for the ECMAScript FFI, which parses a
--- subset of ECMAscript expressions. We do this so that we can
--- optimize code that contains FFI expressions, for example
--- {-# COMPILED_JS _+_ function (x) { return function (y) { return x+y; }; } #-}
--- will generate ECMAScript "1 + 2" from Agda "1 + 2".
-
-import Prelude hiding ( exp, lookup )
-import Data.List ( genericLength )
-import Data.Char ( isLetter, isAlphaNum, isDigit )
-import Data.Map ( Map, fromList, union, empty )
-import qualified Data.Map as M
-
-import Agda.Utils.Parser.ReadP
-  ( ReadP, (+++), (<++), between, char, choice, look, many,
-    munch, munch1, parse', pfail, satisfy, sepBy, string, skipSpaces )
-
-import Agda.Syntax.Common ( Nat )
-import Agda.Compiler.JS.Syntax
-  ( LocalId(LocalId), GlobalId(GlobalId), MemberId(MemberId),
-    Exp(Local,Global,Undefined,String,Integer,Lambda,Apply,Object,Lookup,If,BinOp,PreOp,Const) )
-
-type Parser = ReadP Char
-
-identifier :: Parser String
-identifier = do
-  c <- satisfy isLetter
-  cs <- munch isAlphaNum
-  skipSpaces
-  return (c : cs)
-
-wordBoundary :: Parser ()
-wordBoundary = do
-  cs <- look
-  case cs of
-    (c:_) | isAlphaNum c -> pfail
-    _                    -> return ()
-
-token :: String -> Parser ()
-token s = string s >> wordBoundary >> skipSpaces
-
-punct :: Char -> Parser ()
-punct c = char c >> skipSpaces
-
-parened :: Parser a -> Parser a
-parened = between (punct '(')  (punct ')')
-
-braced :: Parser a -> Parser a
-braced = between (punct '{')  (punct '}')
-
-bracketed :: Parser a -> Parser a
-bracketed = between (punct '[')  (punct ']')
-
-quoted :: Parser a -> Parser a
-quoted = between (char '"') (punct '"')
-
-stringLit :: Parser Exp
-stringLit = do s <- stringStr; return (String s)
-
-stringStr :: Parser String
-stringStr = quoted (many stringChr)
-
-stringChr :: Parser Char
-stringChr = satisfy (`notElem` "\\\"") +++ escChr
-
--- Not handling all escape sequences
-escChr :: Parser Char
-escChr = char '\\' >> (
-  (char 'n' >> return '\n') +++
-  (char 'r' >> return '\r') +++
-  (char 't' >> return '\t') +++
-  (char '"' >> return '"') +++
-  (char '\\' >> return '\\')
- )
-
--- Not handling all integer constants
-intLit :: Parser Exp
-intLit = do s <- munch1 isDigit; skipSpaces; return (Integer (read s))
-
-undef :: Parser Exp
-undef = token "undefined" >> return Undefined
-
-localid :: (Map String Nat) -> Parser Exp
-localid m = do
-  s <- identifier
-  case M.lookup s m of
-    Nothing -> return (Const s)
-    Just i -> return (Local (LocalId i))
-
-globalid :: Parser Exp
-globalid = do
-  token "require"
-  i <- parened (quoted (sepBy (munch1 isAlphaNum) (char '.')))
-  return (Global (GlobalId i))
-
-preop :: Parser String
-preop = do
-  op <- choice (map string [ "+", "-", "!" ])
-  skipSpaces
-  return op
-
-binop :: Parser String
-binop = do
-  op <- choice (map string [
-      "<", ">", "<=", ">=", "==", "===", "<<", ">>",
-      "<<<", ">>>", "!=", "!==", "+", "-", "*", "%", "/",
-      "&", "&&", "|", "||", "^"
-    ])
-  skipSpaces
-  return op
-
-field :: (Map String Nat) -> Parser (MemberId,Exp)
-field m = do
-  l <- stringStr
-  punct ':'
-  e <- exp m
-  return (MemberId l, e)
-
-object :: (Map String Nat) -> Parser Exp
-object m = do
-  o <- braced (sepBy (field m) (punct ','))
-  return (Object (fromList o))
-
-function :: (Map String Nat) -> Parser Exp
-function m = do
-  token "function"
-  xs <- parened (sepBy identifier (punct ','))
-  n <- return (genericLength xs)
-  m' <- return (union (fromList (zip xs [n-1,n-2..0])) (M.map (+n) m))
-  e <- bracedBlock m'
-  return (Lambda n e)
-
-bracedBlock :: (Map String Nat) -> Parser Exp
-bracedBlock m = braced (returnBlock m +++ ifBlock m +++ bracedBlock m)
-
-returnBlock :: (Map String Nat) -> Parser Exp
-returnBlock m = between (token "return") (punct ';') (exp m)
-
-ifBlock :: (Map String Nat) -> Parser Exp
-ifBlock m = do
-  token "if"
-  e <- parened (exp m)
-  f <- bracedBlock m
-  token "else"
-  g <- (ifBlock m +++ bracedBlock m)
-  return (If e f g)
-
-exp0 :: (Map String Nat) -> Parser Exp
-exp0 m = function m <++ undef <++ globalid <++ localid m <++
-         object m <++ stringLit <++ intLit <++ parened (exp m)
-
-exp1 :: (Map String Nat) -> Parser Exp
-exp1 m =
-  (do op <- preop; e <- exp1 m; return (PreOp op e)) <++
-  (exp0 m)
-
-exp2 :: (Map String Nat) -> Parser Exp
-exp2 m = exp1 m >>= exp2' m
-
--- Not handling operator fixity or precedence
-exp2' :: (Map String Nat) -> Exp -> Parser Exp
-exp2' m e =
-  (do es <- parened (sepBy (exp m) (punct ',')); exp2' m (Apply e es)) <++
-  (do i <- bracketed stringStr; exp2' m (Lookup e (MemberId i))) <++
-  (do punct '.'; i <- identifier; exp2' m (Lookup e (MemberId i))) <++
-  (do op <- binop; f <- exp0 m; exp2' m (BinOp e op f)) <++
-  (return e)
-
-exp3 :: (Map String Nat) -> Parser Exp
-exp3 m = exp2 m >>= exp3' m
-
-exp3' :: (Map String Nat) -> Exp -> Parser Exp
-exp3' m e =
-  (do punct '?'; f <- exp2 m; punct ':'; g <- exp2 m; return (If e f g)) <++
-  (return e)
-
-exp :: (Map String Nat) -> Parser Exp
-exp = exp3
-
-topLevel :: Parser Exp
-topLevel = skipSpaces >> exp empty
-
-parse :: String -> Either Exp String
-parse = parse' topLevel
diff --git a/src/full/Agda/Compiler/JS/Pretty.hs b/src/full/Agda/Compiler/JS/Pretty.hs
--- a/src/full/Agda/Compiler/JS/Pretty.hs
+++ b/src/full/Agda/Compiler/JS/Pretty.hs
@@ -7,10 +7,7 @@
 
 import Agda.Syntax.Common ( Nat )
 
-import Agda.Compiler.JS.Syntax
-  ( Exp(Self,Local,Global,Undefined,String,Char,Integer,Double,Lambda,Object,Apply,Lookup,If,BinOp,PreOp,Const),
-    LocalId(LocalId), GlobalId(GlobalId), MemberId(MemberId), Module(Module), Export(Export),
-    globals )
+import Agda.Compiler.JS.Syntax hiding (exports)
 
 -- Pretty-print a lambda-calculus expression as ECMAScript.
 
@@ -73,7 +70,7 @@
   pretty n i (Undefined)            = "undefined"
   pretty n i (String s)             = "\"" ++ unescapes s ++ "\""
   pretty n i (Char c)               = "\"" ++ unescape c ++ "\""
-  pretty n i (Integer x)            = show x
+  pretty n i (Integer x)            = "agdaRTS.primIntegerFromString(\"" ++ show x ++ "\")"
   pretty n i (Double x)             = show x
   pretty n i (Lambda x e)           =
     "function (" ++
@@ -89,6 +86,7 @@
   pretty n i (PreOp op e)           = "(" ++ op ++ " " ++ pretty n i e ++ ")"
   pretty n i (BinOp e op f)         = "(" ++ pretty n i e ++ " " ++ op ++ " " ++ pretty n i f ++ ")"
   pretty n i (Const c)              = c
+  pretty n i (PlainJS js)           = "(" ++ js ++ ")"
 
 block :: Nat -> Int -> Exp -> String
 block n i (If e f g) = "{" ++ br (i+1) ++ block' n (i+1) (If e f g) ++ br i ++ "}"
@@ -103,16 +101,20 @@
 
 exports :: Nat -> Int -> Set [MemberId] -> [Export] -> String
 exports n i lss [] = ""
-exports n i lss (Export ls e : es) | member (init ls) lss =
+exports n i lss (Export ls _ e : es) | member (init ls) lss =
   "exports[" ++ intercalate "][" (pretties n i ls) ++ "] = " ++ pretty n (i+1) e ++ ";" ++ br i ++
   exports n i (insert ls lss) es
-exports n i lss (Export ls e : es) | otherwise =
-  exports n i lss (Export (init ls) (Object empty) : Export ls e : es)
+exports n i lss (Export ls isCoind e : es) | otherwise =
+  exports n i lss (Export (init ls) False (Object empty) : Export ls isCoind e : es)
 
 instance Pretty Module where
-  pretty n i (Module m es) =
-    "define([" ++ intercalate "," ("\"exports\"" : map modname js) ++ "]," ++
-    "function(" ++ intercalate "," ("exports" : pretties n i js) ++ ") {" ++ br (i+1) ++
-    exports n (i+1) (singleton []) es ++
-    "});" ++ br i
-      where js = toList (globals es)
+  pretty n i (Module m es ex) =
+    imports ++ br i
+      ++ exports n i (singleton []) es ++ br i
+      ++ maybe "" (pretty n i) ex
+    where
+      js = toList (globals es)
+      imports = unlines $
+            ["var agdaRTS = require(\"agda-rts\");"] ++
+            ["var " ++ pretty n (i+1) e ++ " = require(" ++ modname e ++ ");"
+            | e <- js]
diff --git a/src/full/Agda/Compiler/JS/Syntax.hs b/src/full/Agda/Compiler/JS/Syntax.hs
--- a/src/full/Agda/Compiler/JS/Syntax.hs
+++ b/src/full/Agda/Compiler/JS/Syntax.hs
@@ -27,7 +27,8 @@
   If Exp Exp Exp |
   BinOp Exp String Exp |
   PreOp String Exp |
-  Const String
+  Const String |
+  PlainJS String -- ^ Arbitrary JS code.
   deriving (Typeable, Show)
 
 -- Local identifiers are named by De Bruijn indices.
@@ -46,10 +47,10 @@
 -- The top-level compilation unit is a module, which names
 -- the GId of its exports, and a list of definitions
 
-data Export = Export { expName :: [MemberId], defn :: Exp }
+data Export = Export { expName :: [MemberId], isCoind :: Bool, defn :: Exp }
   deriving (Typeable, Show)
 
-data Module = Module { modName :: GlobalId, exports :: [Export] }
+data Module = Module { modName :: GlobalId, exports :: [Export], postscript :: Maybe Exp }
   deriving (Typeable, Show)
 
 -- Note that modules are allowed to be recursive, via the Self expression,
@@ -79,7 +80,7 @@
   uses e              = empty
 
 instance Uses Export where
-  uses (Export ls e) = uses e
+  uses (Export _ _ e) = uses e
 
 -- All global ids
 
@@ -104,7 +105,7 @@
   globals _ = empty
 
 instance Globals Export where
-  globals (Export ls e) = globals e
+  globals (Export _ _ e) = globals e
 
 instance Globals Module where
-  globals (Module m es) = globals es
+  globals (Module m es _) = globals es
diff --git a/src/full/Agda/Compiler/MAlonzo/Compiler.hs b/src/full/Agda/Compiler/MAlonzo/Compiler.hs
--- a/src/full/Agda/Compiler/MAlonzo/Compiler.hs
+++ b/src/full/Agda/Compiler/MAlonzo/Compiler.hs
@@ -1,6 +1,4 @@
 {-# LANGUAGE CPP                 #-}
-{-# LANGUAGE FlexibleContexts    #-}
-{-# LANGUAGE PatternGuards       #-}
 {-# LANGUAGE ScopedTypeVariables #-}
 
 module Agda.Compiler.MAlonzo.Compiler where
@@ -14,7 +12,7 @@
 import Control.Monad.State  hiding (mapM_, forM_, mapM, forM, sequence)
 
 import Data.Generics.Geniplate
-import Data.Foldable hiding (any, foldr, sequence_)
+import Data.Foldable hiding (any, all, foldr, sequence_)
 import Data.Function
 import qualified Data.List as List
 import Data.Map (Map)
@@ -24,11 +22,10 @@
 import qualified Data.Set as Set
 import Data.Traversable hiding (for)
 
-import qualified Language.Haskell.Exts.Extension as HS
-import qualified Language.Haskell.Exts.Parser as HS
-import qualified Language.Haskell.Exts.Pretty as HS
-import qualified Language.Haskell.Exts.Syntax as HS
+import Numeric.IEEE
 
+import qualified Agda.Utils.Haskell.Syntax as HS
+
 import System.Directory (createDirectoryIfMissing)
 import System.FilePath hiding (normalise)
 
@@ -39,12 +36,14 @@
 import Agda.Compiler.MAlonzo.Primitives
 import Agda.Compiler.ToTreeless
 import Agda.Compiler.Treeless.Unused
+import Agda.Compiler.Treeless.Erase
 
 import Agda.Interaction.FindFile
 import Agda.Interaction.Imports
 import Agda.Interaction.Options
 
 import Agda.Syntax.Common
+import Agda.Syntax.Fixity
 import qualified Agda.Syntax.Abstract.Name as A
 import qualified Agda.Syntax.Concrete.Name as C
 import Agda.Syntax.Internal as I
@@ -71,7 +70,7 @@
 import Agda.Utils.List
 import Agda.Utils.Maybe
 import Agda.Utils.Monad
-import Agda.Utils.Pretty (prettyShow)
+import Agda.Utils.Pretty (prettyShow, Pretty)
 import qualified Agda.Utils.IO.UTF8 as UTF8
 import qualified Agda.Utils.HashMap as HMap
 import Agda.Utils.Singleton
@@ -96,12 +95,12 @@
     yesComp
     writeModule =<< decl <$> curHsMod <*> (definitions =<< curDefs) <*> imports
   where
-  decl mn ds imp = HS.Module dummy mn [] Nothing Nothing imp (map fakeDecl (reverse $ iHaskellCode i) ++ ds)
+  decl mn ds imp = HS.Module mn [] imp (map fakeDecl (reverse $ iHaskellCode i) ++ ds)
   uptodate = liftIO =<< (isNewerThan <$> outFile_ <*> ifile)
   ifile    = maybe __IMPOSSIBLE__ filePath <$>
                (findInterfaceFile . toTopLevelModuleName =<< curMName)
-  noComp   = reportSLn "" 1 . (++ " : no compilation is needed.") . show . A.mnameToConcrete =<< curMName
-  yesComp  = reportSLn "" 1 . (`repl` "Compiling <<0>> in <<1>> to <<2>>") =<<
+  noComp   = reportSLn "compile.ghc" 2 . (++ " : no compilation is needed.") . show . A.mnameToConcrete =<< curMName
+  yesComp  = reportSLn "compile.ghc" 1 . (`repl` "Compiling <<0>> in <<1>> to <<2>>") =<<
              sequence [show . A.mnameToConcrete <$> curMName, ifile, outFile_] :: TCM ()
 
 --------------------------------------------------
@@ -118,23 +117,20 @@
              getHaskellImports
 
   unqualRTE :: HS.ImportDecl
-  unqualRTE = HS.ImportDecl dummy mazRTE False False False Nothing Nothing $ Just $
-#if MIN_VERSION_haskell_src_exts(1,17,0)
-              (False, [HS.IVar $ HS.Ident x | x <- [mazCoerceName, mazErasedName]])
-#else
-              (False, [HS.IVar HS.NoNamespace $ HS.Ident x | x <- [mazCoerceName, mazErasedName]])
-#endif
+  unqualRTE = HS.ImportDecl mazRTE False $ Just $
+              (False, [ HS.IVar $ HS.Ident x
+                      | x <- [mazCoerceName, mazErasedName] ++
+                             map treelessPrimName [T.PAdd, T.PSub, T.PMul, T.PQuot, T.PRem, T.PGeq, T.PLt, T.PEqI, T.PEqF] ])
 
   imps :: TCM [HS.ImportDecl]
   imps = List.map decl . uniq <$>
            ((++) <$> importsForPrim <*> (List.map mazMod <$> mnames))
 
   decl :: HS.ModuleName -> HS.ImportDecl
-  decl m = HS.ImportDecl dummy m True False False Nothing Nothing Nothing
+  decl m = HS.ImportDecl m True Nothing
 
   mnames :: TCM [ModuleName]
-  mnames = (++) <$> (Set.elems <$> use stImportedModules)
-                <*> (List.map fst . iImportedModules <$> curIF)
+  mnames = Set.elems <$> use stImportedModules
 
   uniq :: [HS.ModuleName] -> [HS.ModuleName]
   uniq = List.map head . List.group . List.sort
@@ -173,11 +169,11 @@
 definition kit (Defn NonStrict _ _  _ _ _ _ _ _) = __IMPOSSIBLE__
 -}
 definition kit Defn{defArgInfo = info, defName = q} | isIrrelevant info = do
-  reportSDoc "malonzo.definition" 10 $
+  reportSDoc "compile.ghc.definition" 10 $
     text "Not compiling" <+> prettyTCM q <> text "."
   return []
 definition kit Defn{defName = q, defType = ty, defCompiledRep = compiled, theDef = d} = do
-  reportSDoc "malonzo.definition" 10 $ vcat
+  reportSDoc "compile.ghc.definition" 10 $ vcat
     [ text "Compiling" <+> prettyTCM q <> text ":"
     , nest 2 $ text (show d)
     ]
@@ -197,11 +193,11 @@
             a    = ihname "a" 0
             b    = ihname "a" 1
             vars = [a, b]
-        return [ HS.TypeDecl dummy infT
+        return [ HS.TypeDecl infT
                              (List.map HS.UnkindedVar vars)
                              (HS.TyVar b)
-               , HS.FunBind [HS.Match dummy infV
-                                      (List.map HS.PVar vars) Nothing
+               , HS.FunBind [HS.Match infV
+                                      (List.map HS.PVar vars)
                                       (HS.UnGuardedRhs HS.unit_con)
                                       emptyBinds]
                ]
@@ -209,11 +205,10 @@
         let sharp = unqhname "d" q
             x     = ihname "x" 0
         return $
-          [ HS.TypeSig dummy [sharp] $ fakeType $
+          [ HS.TypeSig [sharp] $ fakeType $
               "forall a. a -> a"
-          , HS.FunBind [HS.Match dummy sharp
+          , HS.FunBind [HS.Match sharp
                                  [HS.PVar x]
-                                 Nothing
                                  (HS.UnGuardedRhs (HS.Var (HS.UnQual x)))
                                  emptyBinds]
           ]
@@ -221,11 +216,10 @@
         let flat = unqhname "d" q
             x    = ihname "x" 0
         return $
-          [ HS.TypeSig dummy [flat] $ fakeType $
+          [ HS.TypeSig [flat] $ fakeType $
               "forall a. a -> a"
-          , HS.FunBind [HS.Match dummy flat
+          , HS.FunBind [HS.Match flat
                                  [HS.PVar x]
-                                 Nothing
                                  (HS.UnGuardedRhs (HS.Var (HS.UnQual x)))
                                  emptyBinds]
           ]
@@ -239,14 +233,16 @@
         | Just (HsType ty) <- compiledHaskell compiled -> do
         ccscov <- ifM (noCheckCover q) (return []) $ do
             ccs <- List.concat <$> mapM checkConstructorType cs
-            cov <- checkCover q ty np cs
+            cov <- checkCover q ty (np + ni) cs
             return $ ccs ++ cov
         return $ tvaldecl q (dataInduction d) 0 (np + ni) [] (Just __IMPOSSIBLE__) ++ ccscov
       Datatype{ dataPars = np, dataIxs = ni, dataClause = cl, dataCons = cs } -> do
+        computeErasedConstructorArgs q
         (ars, cds) <- unzip <$> mapM condecl cs
         return $ tvaldecl q (dataInduction d) (List.maximum (np:ars) - np) (np + ni) cds cl
       Constructor{} -> return []
       Record{ recClause = cl, recConHead = con, recFields = flds } -> do
+        computeErasedConstructorArgs q
         let c = conName con
         let noFields = length flds
         let ar = I.arity ty
@@ -255,6 +251,7 @@
   --         Nothing -> return $ cdecl q noFields
   --         Just c  -> snd <$> condecl c
         return $ tvaldecl q Inductive noFields ar [cd] cl
+      AbstractDefn -> __IMPOSSIBLE__
   where
   function :: Maybe HaskellExport -> TCM [HS.Decl] -> TCM [HS.Decl]
   function mhe fun = do
@@ -263,10 +260,10 @@
       Nothing -> return ccls
       Just (HsExport t name) -> do
         let tsig :: HS.Decl
-            tsig = HS.TypeSig dummy [HS.Ident name] (fakeType t)
+            tsig = HS.TypeSig [HS.Ident name] (fakeType t)
 
             def :: HS.Decl
-            def = HS.FunBind [HS.Match dummy (HS.Ident name) [] Nothing (HS.UnGuardedRhs (hsVarUQ $ dname q)) emptyBinds]
+            def = HS.FunBind [HS.Match (HS.Ident name) [] (HS.UnGuardedRhs (hsVarUQ $ dname q)) emptyBinds]
         return ([tsig,def] ++ ccls)
 
   functionViaTreeless :: QName -> TCM [HS.Decl]
@@ -280,15 +277,15 @@
     let (ps, b) = lamView e
         lamView e =
           case stripTopCoerce e of
-            HS.Lambda _ ps b -> (ps, b)
+            HS.Lambda ps b -> (ps, b)
             b                -> ([], b)
-        stripTopCoerce (HS.Lambda i ps b) = HS.Lambda i ps $ stripTopCoerce b
+        stripTopCoerce (HS.Lambda ps b) = HS.Lambda ps $ stripTopCoerce b
         stripTopCoerce e =
           case hsAppView e of
             [c,  e] | c == mazCoerce -> e
             _                        -> e
 
-        funbind f ps b = HS.FunBind [HS.Match dummy f ps Nothing (HS.UnGuardedRhs b) emptyBinds]
+        funbind f ps b = HS.FunBind [HS.Match f ps (HS.UnGuardedRhs b) emptyBinds]
 
     -- The definition of the non-stripped function
     (ps0, _) <- lamView <$> closedTerm (foldr ($) T.TErased $ replicate (length used) T.TLam)
@@ -300,25 +297,20 @@
       else [ funbind (dname q) ps b ]
 
   mkwhere :: [HS.Decl] -> [HS.Decl]
-  mkwhere (HS.FunBind [m0, HS.Match _     dn ps mt rhs emptyBinds] :
-           fbs@(_:_)) =
-          [HS.FunBind [m0, HS.Match dummy dn ps mt rhs bindsAux]]
+  mkwhere (HS.FunBind [m0, HS.Match dn ps rhs emptyBinds] : fbs@(_:_)) =
+          [HS.FunBind [m0, HS.Match dn ps rhs bindsAux]]
     where
-#if MIN_VERSION_haskell_src_exts(1,17,0)
     bindsAux :: Maybe HS.Binds
     bindsAux = Just $ HS.BDecls fbs
-#else
-    bindsAux :: HS.Binds
-    bindsAux = HS.BDecls fbs
-#endif
+
   mkwhere fbs = fbs
 
   fbWithType :: HaskellType -> HS.Exp -> [HS.Decl]
   fbWithType ty e =
-    [ HS.TypeSig dummy [unqhname "d" q] $ fakeType ty ] ++ fb e
+    [ HS.TypeSig [unqhname "d" q] $ fakeType ty ] ++ fb e
 
   fb :: HS.Exp -> [HS.Decl]
-  fb e  = [HS.FunBind [HS.Match dummy (unqhname "d" q) [] Nothing
+  fb e  = [HS.FunBind [HS.Match (unqhname "d" q) []
                                 (HS.UnGuardedRhs $ e) emptyBinds]]
 
   axiomErr :: HS.Exp
@@ -367,8 +359,8 @@
 checkConstructorType :: QName -> TCM [HS.Decl]
 checkConstructorType q = do
   Just (HsDefn ty hs) <- compiledHaskell . defCompiledRep <$> getConstInfo q
-  return [ HS.TypeSig dummy [unqhname "check" q] $ fakeType ty
-         , HS.FunBind [HS.Match dummy (unqhname "check" q) [] Nothing
+  return [ HS.TypeSig [unqhname "check" q] $ fakeType ty
+         , HS.FunBind [HS.Match (unqhname "check" q) []
                                 (HS.UnGuardedRhs $ fakeExp hs) emptyBinds]
          ]
 
@@ -376,19 +368,19 @@
 checkCover q ty n cs = do
   let tvs = [ "a" ++ show i | i <- [1..n] ]
       makeClause c = do
-        (a, _) <- conArityAndPars c
+        a <- erasedArity c
         Just (HsDefn _ hsc) <- compiledHaskell . defCompiledRep <$> getConstInfo c
         let pat = HS.PApp (HS.UnQual $ HS.Ident hsc) $ replicate a HS.PWildCard
-        return $ HS.Alt dummy pat (HS.UnGuardedRhs $ HS.unit_con) emptyBinds
+        return $ HS.Alt pat (HS.UnGuardedRhs $ HS.unit_con) emptyBinds
 
   cs <- mapM makeClause cs
   let rhs = case cs of
               [] -> fakeExp "()" -- There is no empty case statement in Haskell
               _  -> HS.Case (HS.Var $ HS.UnQual $ HS.Ident "x") cs
 
-  return [ HS.TypeSig dummy [unqhname "cover" q] $ fakeType $ unwords (ty : tvs) ++ " -> ()"
-         , HS.FunBind [HS.Match dummy (unqhname "cover" q) [HS.PVar $ HS.Ident "x"]
-                                Nothing (HS.UnGuardedRhs rhs) emptyBinds]
+  return [ HS.TypeSig [unqhname "cover" q] $ fakeType $ unwords (ty : tvs) ++ " -> ()"
+         , HS.FunBind [HS.Match (unqhname "cover" q) [HS.PVar $ HS.Ident "x"]
+                                (HS.UnGuardedRhs rhs) emptyBinds]
          ]
 
 closedTerm :: T.TTerm -> TCM HS.Exp
@@ -404,13 +396,32 @@
     return $ hsVarUQ x
   T.TApp (T.TDef f) ts -> do
     used <- lift $ getCompiledArgUse f
-    if any not used && length ts >= length used
-      then do
+    let given   = length ts
+        needed  = length used
+        missing = drop given used
+    if any not used
+      then if any not missing then term (etaExpand (needed - given) tm0) else do
         f <- lift $ HS.Var <$> xhqn "du" f  -- used stripped function
         f `apps` [ t | (t, True) <- zip ts $ used ++ repeat True ]
       else do
         t' <- term (T.TDef f)
         t' `apps` ts
+  T.TApp (T.TCon c) ts -> do
+    kit <- lift coinductionKit
+    if Just c == (nameOfSharp <$> kit)
+      then do
+        t' <- HS.Var <$> lift (xhqn "d" c)
+        apps t' ts
+      else do
+        (ar, _) <- lift $ conArityAndPars c
+        erased  <- lift $ getErasedConArgs c
+        let missing = drop (length ts) erased
+            notErased = not
+        case all notErased missing of
+          False -> term $ etaExpand (length missing) tm0
+          True  -> do
+            f <- lift $ HS.Con <$> conhqn c
+            f `apps` [ t | (t, False) <- zip ts erased ]
   T.TApp t ts -> do
     t' <- term t
     t' `apps` ts
@@ -428,18 +439,14 @@
     sc' <- term (T.TVar sc)
     alts' <- traverse (alt sc) alts
     def' <- term def
-    let defAlt = HS.Alt dummy HS.PWildCard (HS.UnGuardedRhs def') emptyBinds
+    let defAlt = HS.Alt HS.PWildCard (HS.UnGuardedRhs def') emptyBinds
 
     return $ HS.Case (hsCast sc') (alts' ++ [defAlt])
 
-  T.TLit l -> lift $ literal l
+  T.TLit l -> return $ literal l
   T.TDef q -> do
     HS.Var <$> (lift $ xhqn "d" q)
-  T.TCon q -> do
-    kit <- lift coinductionKit
-    if Just q == (nameOfSharp <$> kit)
-      then HS.Var <$> lift (xhqn "d" q)
-      else hsCast' . HS.Con <$> lift (conhqn q)
+  T.TCon q   -> term (T.TApp (T.TCon q) [])
   T.TPrim p  -> return $ compilePrim p
   T.TUnit    -> return HS.unit_con
   T.TSort    -> return HS.unit_con
@@ -447,63 +454,76 @@
   T.TError e -> return $ case e of
     T.TUnreachable ->  rtmUnreachableError
   where apps =  foldM (\ h a -> HS.App h <$> term a)
+        etaExpand n t =
+          foldr (const T.TLam)
+                (T.mkTApp (raise n t) [T.TVar i | i <- [n - 1, n - 2..0]])
+                (replicate n ())
 
+
 compilePrim :: T.TPrim -> HS.Exp
-compilePrim s =
-  case s of
-    T.PQuot -> fakeExp "(Prelude.quot :: Integer -> Integer -> Integer)"
-    T.PRem -> fakeExp "(Prelude.rem :: Integer -> Integer -> Integer)"
-    T.PSub -> fakeExp "((Prelude.-) :: Integer -> Integer -> Integer)"
-    T.PAdd -> fakeExp "((Prelude.+) :: Integer -> Integer -> Integer)"
-    T.PMul -> fakeExp "((Prelude.*) :: Integer -> Integer -> Integer)"
-    T.PGeq -> fakeExp "((Prelude.>=) :: Integer -> Integer -> Bool)"
-    T.PLt  -> fakeExp "((Prelude.<) :: Integer -> Integer -> Bool)"
-    T.PEq  -> fakeExp "((Prelude.==) :: Integer -> Integer -> Bool)"
-    T.PSeq -> HS.Var (hsName "seq")
-    -- primitives only used by GuardsToPrims transformation, which MAlonzo doesn't use
-    T.PIf  -> __IMPOSSIBLE__
+compilePrim s = HS.Var $ hsName $ treelessPrimName s
 
 alt :: Int -> T.TAlt -> CC HS.Alt
 alt sc a = do
   case a of
-    T.TACon {} -> do
-      intros (T.aArity a) $ \xs -> do
-        hConNm <- lift $ conhqn $ T.aCon a
-        mkAlt (HS.PApp hConNm $ map HS.PVar xs)
+    T.TACon {T.aCon = c} -> do
+      intros (T.aArity a) $ \ xs -> do
+        erased <- lift $ getErasedConArgs c
+        hConNm <- lift $ conhqn c
+        mkAlt (HS.PApp hConNm $ map HS.PVar [ x | (x, False) <- zip xs erased ])
     T.TAGuard g b -> do
       g <- term g
       b <- term b
-      return $ HS.Alt dummy HS.PWildCard
-                      (HS.GuardedRhss [HS.GuardedRhs dummy [HS.Qualifier g] b])
+      return $ HS.Alt HS.PWildCard
+                      (HS.GuardedRhss [HS.GuardedRhs [HS.Qualifier g] b])
                       emptyBinds
-    T.TALit { T.aLit = (LitQName _ q) } -> mkAlt (litqnamepat q)
-    T.TALit { T.aLit = (LitString _ s) , T.aBody = b } -> do
-      b <- term b
+    T.TALit { T.aLit = LitQName _ q } -> mkAlt (litqnamepat q)
+    T.TALit { T.aLit = l@LitFloat{},   T.aBody = b } -> mkGuarded (treelessPrimName T.PEqF) (literal l) b
+    T.TALit { T.aLit = LitString _ s , T.aBody = b } -> mkGuarded "(==)" (litString s) b
+    T.TALit {} -> mkAlt (HS.PLit $ hslit $ T.aLit a)
+  where
+    mkGuarded eq lit b = do
+      b  <- term b
       sc <- term (T.TVar sc)
       let guard =
-            HS.Var (HS.UnQual (HS.Ident "(==)")) `HS.App`
-              sc`HS.App`
-              litString s
-      return $ HS.Alt dummy HS.PWildCard
-                      (HS.GuardedRhss [HS.GuardedRhs dummy [HS.Qualifier guard] b])
+            HS.Var (HS.UnQual (HS.Ident eq)) `HS.App`
+              sc `HS.App` lit
+      return $ HS.Alt HS.PWildCard
+                      (HS.GuardedRhss [HS.GuardedRhs [HS.Qualifier guard] b])
                       emptyBinds
-    T.TALit {} -> mkAlt (HS.PLit HS.Signless $ hslit $ T.aLit a)
-  where
+
     mkAlt :: HS.Pat -> CC HS.Alt
     mkAlt pat = do
         body' <- term $ T.aBody a
-        return $ HS.Alt dummy pat (HS.UnGuardedRhs $ hsCast body') emptyBinds
+        return $ HS.Alt pat (HS.UnGuardedRhs $ hsCast body') emptyBinds
 
-literal :: Literal -> TCM HS.Exp
+literal :: Literal -> HS.Exp
 literal l = case l of
-  LitNat    _ _   -> return $ typed "Integer"
-  LitFloat  _ _   -> return $ typed "Double"
-  LitQName  _ x   -> return $ litqname x
-  LitString _ s   -> return $ litString s
-  _               -> return $ l'
-  where l'    = HS.Lit $ hslit l
-        typed = HS.ExpTypeSig dummy l' . HS.TyCon . rtmQual
+  LitNat    _ _   -> typed "Integer"
+  LitFloat  _ x   -> floatExp x "Double"
+  LitQName  _ x   -> litqname x
+  LitString _ s   -> litString s
+  _               -> l'
+  where
+    l'    = HS.Lit $ hslit l
+    typed = HS.ExpTypeSig l' . HS.TyCon . rtmQual
 
+    -- ASR (2016-09-14): See Issue #2169.
+    -- Ulf, 2016-09-28: and #2218.
+    floatExp :: Double -> String -> HS.Exp
+    floatExp x s
+      | isNegativeZero x = rte "negativeZero"
+      | isNegativeInf  x = rte "negativeInfinity"
+      | isInfinite x     = rte "positiveInfinity"
+      | isNegativeNaN x  = rte "negativeNaN"
+      | isNaN x          = rte "positiveNaN"
+      | otherwise        = typed s
+
+    rte = HS.Var . HS.Qual mazRTE . HS.Ident
+
+    isNegativeInf x = isInfinite x && x < 0.0
+    isNegativeNaN x = isNaN x && not (identicalIEEE x (0.0 / 0.0))
+
 hslit :: Literal -> HS.Literal
 hslit l = case l of LitNat    _ x -> HS.Int    x
                     LitFloat  _ x -> HS.Frac   (toRational x)
@@ -519,26 +539,47 @@
 
 litqname :: QName -> HS.Exp
 litqname x =
-  HS.Con (HS.Qual mazRTE $ HS.Ident "QName") `HS.App`
-  hsTypedInt n `HS.App`
-  hsTypedInt m `HS.App`
-  HS.Lit (HS.String $ show x )
+  rteCon "QName" `apps`
+  [ hsTypedInt n
+  , hsTypedInt m
+  , HS.Lit $ HS.String $ show x
+  , rteCon "Fixity" `apps`
+    [ litAssoc (fixityAssoc fx)
+    , litPrec  (fixityLevel fx) ] ]
   where
+    apps = foldl HS.App
+    rteCon name = HS.Con $ HS.Qual mazRTE $ HS.Ident name
     NameId n m = nameId $ qnameName x
+    fx = theFixity $ nameFixity $ qnameName x
 
+    litAssoc NonAssoc   = rteCon "NonAssoc"
+    litAssoc LeftAssoc  = rteCon "LeftAssoc"
+    litAssoc RightAssoc = rteCon "RightAssoc"
+
+    litPrec Unrelated   = rteCon "Unrelated"
+    litPrec (Related l) = rteCon "Related" `HS.App` hsTypedInt l
+
 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.PLit (HS.Int $ fromIntegral n)
+          , HS.PLit (HS.Int $ fromIntegral m)
+          , HS.PWildCard, HS.PWildCard ]
   where
     NameId n m = nameId $ qnameName x
 
+erasedArity :: QName -> TCM Nat
+erasedArity q = do
+  (ar, _) <- conArityAndPars q
+  erased  <- length . filter id <$> getErasedConArgs q
+  return (ar - erased)
+
 condecl :: QName -> TCM (Nat, HS.ConDecl)
 condecl q = do
   (ar, np) <- conArityAndPars q
-  return $ (ar + np, cdecl q ar)
+  erased   <- length . filter id <$> getErasedConArgs q
+  let ar' = ar - erased
+  return $ (ar' + np, cdecl q ar')
 
 cdecl :: QName -> Nat -> HS.ConDecl
 cdecl q n = HS.ConDecl (unqhname "C" q)
@@ -549,10 +590,8 @@
             -- ^ Is the type inductive or coinductive?
          -> Nat -> Nat -> [HS.ConDecl] -> Maybe Clause -> [HS.Decl]
 tvaldecl q ind ntv npar cds cl =
-  HS.FunBind [HS.Match dummy vn pvs Nothing
-                       (HS.UnGuardedRhs HS.unit_con) emptyBinds] :
-  maybe [HS.DataDecl dummy kind [] tn tvs
-                     (List.map (HS.QualConDecl dummy [] []) cds) []]
+  HS.FunBind [HS.Match vn pvs (HS.UnGuardedRhs HS.unit_con) emptyBinds] :
+  maybe [HS.DataDecl kind tn tvs cds []]
         (const []) cl
   where
   (tn, vn) = (unqhname "T" q, unqhname "d" q)
@@ -563,7 +602,6 @@
   -- single argument are translated into newtypes.
   kind = case (ind, cds) of
     (Inductive, [HS.ConDecl _ [_]]) -> HS.NewType
-    (Inductive, [HS.RecDecl _ [_]]) -> HS.NewType
     _                               -> HS.DataType
 
 infodecl :: QName -> [HS.Decl] -> [HS.Decl]
@@ -581,7 +619,7 @@
   addcast es = foldl HS.App mazCoerce es
   -- this need to be extended if you generate other kinds of exps.
   go (HS.App e1 e2    ) = go e1 ++ [hsCast e2]
-  go (HS.Lambda _ ps e) = [ HS.Lambda dummy ps (hsCast e) ]
+  go (HS.Lambda _ ps e) = [ HS.Lambda ps (hsCast e) ]
   go e = [e]
 -}
 
@@ -590,7 +628,7 @@
 
 hsCast' :: HS.Exp -> HS.Exp
 hsCast' (HS.InfixApp e1 op e2) = hsCoerce $ HS.InfixApp (hsCast' e1) op (hsCast' e2)
-hsCast' (HS.Lambda _ ps e)     = HS.Lambda dummy ps $ hsCast' e
+hsCast' (HS.Lambda ps e)       = HS.Lambda ps $ hsCast' e
 hsCast' (HS.Let bs e)          = HS.Let bs $ hsCast' e
 hsCast' (HS.Case sc alts)      = HS.Case (hsCast' sc) (map (hsMapAlt hsCast') alts)
 hsCast' e =
@@ -601,7 +639,7 @@
 -- We still have to coerce function applications in arguments to coerced
 -- functions.
 hsCastApp :: HS.Exp -> HS.Exp
-hsCastApp (HS.Lambda i ps b) = HS.Lambda i ps (hsCastApp b)
+hsCastApp (HS.Lambda ps b) = HS.Lambda ps (hsCastApp b)
 hsCastApp (HS.Case sc bs) = HS.Case (hsCastApp sc) (map (hsMapAlt hsCastApp) bs)
 hsCastApp (HS.InfixApp e1 op e2) = HS.InfixApp (hsCastApp e1) op (hsCastApp e2)
 hsCastApp e =
@@ -611,7 +649,7 @@
 
 -- No coercion for literal integers
 hsCoerce :: HS.Exp -> HS.Exp
-hsCoerce e@(HS.ExpTypeSig _ (HS.Lit (HS.Int{})) _) = e
+hsCoerce e@(HS.ExpTypeSig (HS.Lit (HS.Int{})) _) = e
 hsCoerce (HS.Case sc alts) = HS.Case sc (map (hsMapAlt hsCoerce) alts)
 hsCoerce (HS.Let bs e) = HS.Let bs $ hsCoerce e
 hsCoerce e =
@@ -630,13 +668,13 @@
   (lift . copyDirContent srcDir) =<< compileDir
 
 writeModule :: HS.Module -> TCM ()
-writeModule (HS.Module l m ps w ex imp ds) = do
+writeModule (HS.Module m ps imp ds) = do
   -- Note that GHC assumes that sources use ASCII or UTF-8.
   out <- outFile m
   liftIO $ UTF8.writeFile out $ prettyPrint $
-    HS.Module l m (p : ps) w ex imp ds
+    HS.Module m (p : ps) imp ds
   where
-  p = HS.LanguagePragma dummy $ List.map HS.Ident $
+  p = HS.LanguagePragma $ List.map HS.Ident $
         [ "EmptyDataDecls"
         , "ExistentialQuantification"
         , "ScopedTypeVariables"
@@ -645,8 +683,7 @@
         ]
 
 
-outFile' :: (HS.Pretty a, TransformBi HS.ModuleName (Wrap a)) =>
-            a -> TCM (FilePath, FilePath)
+outFile' :: Pretty a => a -> TCM (FilePath, FilePath)
 outFile' m = do
   mdir <- compileDir
   let (fdir, fn) = splitFileName $ repldot pathSeparator $
diff --git a/src/full/Agda/Compiler/MAlonzo/Compiler.hs-boot b/src/full/Agda/Compiler/MAlonzo/Compiler.hs-boot
--- a/src/full/Agda/Compiler/MAlonzo/Compiler.hs-boot
+++ b/src/full/Agda/Compiler/MAlonzo/Compiler.hs-boot
@@ -1,6 +1,6 @@
 module Agda.Compiler.MAlonzo.Compiler where
 
-import qualified Language.Haskell.Exts.Syntax as HS
+import qualified Agda.Utils.Haskell.Syntax as HS
 
 import Agda.Syntax.Treeless (TTerm)
 import Agda.TypeChecking.Monad (TCM)
diff --git a/src/full/Agda/Compiler/MAlonzo/Encode.hs b/src/full/Agda/Compiler/MAlonzo/Encode.hs
--- a/src/full/Agda/Compiler/MAlonzo/Encode.hs
+++ b/src/full/Agda/Compiler/MAlonzo/Encode.hs
@@ -4,28 +4,15 @@
 
 module Agda.Compiler.MAlonzo.Encode
   ( encodeModuleName
-  , tests
   ) where
 
 import Data.Char
 import Data.Function
 import Data.List
-import qualified Language.Haskell.Exts.Syntax as HS
-import Test.QuickCheck
+import qualified Agda.Utils.Haskell.Syntax as HS
 
 import Agda.Compiler.MAlonzo.Misc
 
-import Agda.Utils.QuickCheck
-import Agda.Utils.TestHelpers
-
--- | Can the character be used in a Haskell module name part
--- (@conid@)? This function is more restrictive than what the Haskell
--- report allows.
-
-isModChar :: Char -> Bool
-isModChar c =
-  isLower c || isUpper c || isDigit c || c == '_' || c == '\''
-
 -- | Haskell module names have to satisfy the Haskell (including the
 -- hierarchical module namespace extension) lexical syntax:
 --
@@ -80,65 +67,3 @@
   enc c r | isOK c    = c : r
           | otherwise = escapeChar : shows (fromEnum c) (escapeChar : r)
 
-
--- Note: This injectivity test is quite weak. A better, dedicated
--- generator could strengthen it.
-
-prop_encodeModuleName_injective :: M -> M -> Bool
-prop_encodeModuleName_injective (M s1) (M s2) =
-  if encodeModuleName (HS.ModuleName s1) ==
-     encodeModuleName (HS.ModuleName s2) then
-    s1 == s2
-   else
-    True
-
-prop_encodeModuleName_OK :: M -> Bool
-prop_encodeModuleName_OK (M s') =
-  s ~= unM (encodeModuleName (HS.ModuleName s))
-  where
-  s = mazstr ++ "." ++ s'
-
-  ""        ~= ""         = True
-  ('.' : s) ~= ('.' : s') = s ~= s'
-  s         ~= (c : s')   = isUpper c && all isModChar s1' &&
-                            dropWhile (/= '.') s ~= s2'
-                              where (s1', s2') = span (/= '.') s'
-  _         ~= _          = False
-
-  unM (HS.ModuleName s) = s
-
-prop_encodeModuleName_preserved :: M -> Property
-prop_encodeModuleName_preserved (M m) =
-  shouldBePreserved m ==>
-    encodeModuleName (HS.ModuleName m) == HS.ModuleName m
-  where
-  shouldBePreserved m =
-    not (m == mazstr || (mazstr ++ ".") `isPrefixOf` m)
-
--- | Agda module names. Used to test 'encodeModuleName'.
-
-newtype M = M String deriving (Show)
-
-instance Arbitrary M where
-  arbitrary = do
-    ms <- choose (0, 2)
-    m <- vectorOf ms namePart
-    return $ M (intercalate "." m)
-    where
-    namePart =
-      oneof [ return mazstr
-            , do cs <- choose (1, 2)
-                 vectorOf cs (elements "a_AQZ0'-∀")
-            ]
-
-------------------------------------------------------------------------
--- All tests
-
--- | All the properties.
-
-tests :: IO Bool
-tests = runTests "Agda.Compiler.MAlonzo.Encode"
-  [ quickCheck' prop_encodeModuleName_injective
-  , quickCheck' prop_encodeModuleName_OK
-  , quickCheck' prop_encodeModuleName_preserved
-  ]
diff --git a/src/full/Agda/Compiler/MAlonzo/Misc.hs b/src/full/Agda/Compiler/MAlonzo/Misc.hs
--- a/src/full/Agda/Compiler/MAlonzo/Misc.hs
+++ b/src/full/Agda/Compiler/MAlonzo/Misc.hs
@@ -3,12 +3,13 @@
 module Agda.Compiler.MAlonzo.Misc where
 
 import Control.Monad.State (gets)
+import Data.Char
 import Data.List as List
 import Data.Map as Map
 import Data.Set as Set
 import Data.Function
 
-import qualified Language.Haskell.Exts.Syntax as HS
+import qualified Agda.Utils.Haskell.Syntax as HS
 
 import Agda.Compiler.Common
 
@@ -81,9 +82,11 @@
 conhqn q = do
     cq  <- canonicalName q
     def <- getConstInfo cq
+    cname <- xhqn "C" cq  -- Do this even if it has custom compiledHaskell code
+                          -- to make sure we get the import.
     case (compiledHaskell (defCompiledRep def), theDef def) of
       (Just (HsDefn _ hs), Constructor{}) -> return $ hsName hs
-      _                                   -> xhqn "C" cq
+      _                                   -> return cname
 
 -- qualify name s by the module of builtin b
 bltQual :: String -> String -> TCM HS.QName
@@ -107,16 +110,12 @@
 hsInt :: Integer -> HS.Exp
 hsInt n = HS.Lit (HS.Int n)
 
-hsTypedInt :: Integer -> HS.Exp
-hsTypedInt n = HS.ExpTypeSig dummy (HS.Lit (HS.Int n)) (HS.TyCon (hsName "Integer"))
-
-hspLet :: HS.Pat -> HS.Exp -> HS.Exp -> HS.Exp
-hspLet p e b =
-  HS.Let (HS.BDecls [HS.PatBind dummy p (HS.UnGuardedRhs e) emptyBinds]) b
+hsTypedInt :: Integral a => a -> HS.Exp
+hsTypedInt n = HS.ExpTypeSig (HS.Lit (HS.Int $ fromIntegral n)) (HS.TyCon (hsName "Integer"))
 
 hsLet :: HS.Name -> HS.Exp -> HS.Exp -> HS.Exp
 hsLet x e b =
-  HS.Let (HS.BDecls [HS.FunBind [HS.Match dummy x [] Nothing (HS.UnGuardedRhs e) emptyBinds]]) b
+  HS.Let (HS.BDecls [HS.FunBind [HS.Match x [] (HS.UnGuardedRhs e) emptyBinds]]) b
 
 hsVarUQ :: HS.Name -> HS.Exp
 hsVarUQ = HS.Var . HS.UnQual
@@ -130,18 +129,17 @@
 
 hsOpToExp :: HS.QOp -> HS.Exp
 hsOpToExp (HS.QVarOp x) = HS.Var x
-hsOpToExp (HS.QConOp x) = HS.Con x
 
 hsLambda :: [HS.Pat] -> HS.Exp -> HS.Exp
-hsLambda ps (HS.Lambda i ps1 e) = HS.Lambda i (ps ++ ps1) e
-hsLambda ps e = HS.Lambda dummy ps e
+hsLambda ps (HS.Lambda ps1 e) = HS.Lambda (ps ++ ps1) e
+hsLambda ps e = HS.Lambda ps e
 
 hsMapAlt :: (HS.Exp -> HS.Exp) -> HS.Alt -> HS.Alt
-hsMapAlt f (HS.Alt i p rhs wh) = HS.Alt i p (hsMapRHS f rhs) wh
+hsMapAlt f (HS.Alt p rhs wh) = HS.Alt p (hsMapRHS f rhs) wh
 
 hsMapRHS :: (HS.Exp -> HS.Exp) -> HS.Rhs -> HS.Rhs
 hsMapRHS f (HS.UnGuardedRhs def) = HS.UnGuardedRhs (f def)
-hsMapRHS f (HS.GuardedRhss es)   = HS.GuardedRhss [ HS.GuardedRhs i g (f e) | HS.GuardedRhs i g e <- es ]
+hsMapRHS f (HS.GuardedRhss es)   = HS.GuardedRhss [ HS.GuardedRhs g (f e) | HS.GuardedRhs g e <- es ]
 
 --------------------------------------------------
 -- Hard coded module names
@@ -151,7 +149,7 @@
 mazstr = "MAlonzo.Code"
 
 mazName :: Name
-mazName = mkName_ dummy mazstr
+mazName = mkName_ __IMPOSSIBLE__ mazstr
 
 mazMod' :: String -> HS.ModuleName
 mazMod' s = HS.ModuleName $ mazstr ++ "." ++ s
@@ -207,10 +205,7 @@
 --------------------------------------------------
 
 fakeD :: HS.Name -> String -> HS.Decl
-fakeD v s = HS.FunBind [ HS.Match dummy v [] Nothing
-                           (HS.UnGuardedRhs $ hsVarUQ $ HS.Ident $ s)
-                           emptyBinds
-                       ]
+fakeD v s = HS.FunBind [HS.Match v [] (HS.UnGuardedRhs $ fakeExp s) emptyBinds]
 
 fakeDS :: String -> String -> HS.Decl
 fakeDS = fakeD . HS.Ident
@@ -219,25 +214,29 @@
 fakeDQ = fakeD . unqhname "d"
 
 fakeType :: String -> HS.Type
-fakeType = HS.TyVar . HS.Ident
+fakeType = HS.FakeType
 
 fakeExp :: String -> HS.Exp
-fakeExp = HS.Var . HS.UnQual . HS.Ident
+fakeExp = HS.FakeExp
 
 fakeDecl :: String -> HS.Decl
-fakeDecl s = HS.TypeSig dummy [HS.Ident (s ++ " {- OMG hack")] (HS.TyVar $ HS.Ident "-}")
-
-dummy :: a
-dummy = error "MAlonzo : this dummy value should not have been eval'ed."
+fakeDecl = HS.FakeDecl
 
 --------------------------------------------------
 -- Auxiliary definitions
 --------------------------------------------------
 
-#if MIN_VERSION_haskell_src_exts(1,17,0)
 emptyBinds :: Maybe HS.Binds
 emptyBinds = Nothing
-#else
-emptyBinds :: HS.Binds
-emptyBinds = HS.BDecls []
-#endif
+
+--------------------------------------------------
+-- Utilities for Haskell modules names
+--------------------------------------------------
+
+-- | Can the character be used in a Haskell module name part
+-- (@conid@)? This function is more restrictive than what the Haskell
+-- report allows.
+
+isModChar :: Char -> Bool
+isModChar c =
+  isLower c || isUpper c || isDigit c || c == '_' || c == '\''
diff --git a/src/full/Agda/Compiler/MAlonzo/Pretty.hs b/src/full/Agda/Compiler/MAlonzo/Pretty.hs
--- a/src/full/Agda/Compiler/MAlonzo/Pretty.hs
+++ b/src/full/Agda/Compiler/MAlonzo/Pretty.hs
@@ -1,7 +1,4 @@
-{-# LANGUAGE FlexibleContexts      #-}
-{-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE TemplateHaskell       #-}
+{-# LANGUAGE CPP #-}
 
 ------------------------------------------------------------------------
 -- Pretty-printing of Haskell modules
@@ -10,27 +7,208 @@
 module Agda.Compiler.MAlonzo.Pretty where
 
 import Data.Generics.Geniplate
-import qualified Language.Haskell.Exts.Pretty as Pretty
-import qualified Language.Haskell.Exts.Syntax as HS
+import qualified Agda.Utils.Haskell.Syntax as HS
+import Text.PrettyPrint (empty)
 
 import Agda.Compiler.MAlonzo.Encode
+import Agda.Utils.Pretty
+import Agda.Utils.Impossible
 
--- | Encodes module names just before pretty-printing.
+#include "undefined.h"
 
-prettyPrint :: (Pretty.Pretty a, TransformBi HS.ModuleName (Wrap a)) =>
-               a -> String
-prettyPrint = Pretty.prettyPrint .
-              unwrap .
-              transformBi encodeModuleName .
-              Wrap
+prettyPrint :: Pretty a => a -> String
+prettyPrint = show . pretty
 
--- | A wrapper type used to avoid orphan instances.
+instance Pretty HS.Module where
+  pretty (HS.Module m pragmas imps decls) =
+    vcat [ vcat $ map pretty pragmas
+         , text "module" <+> pretty m <+> text "where"
+         , text ""
+         , vcat $ map pretty imps
+         , text ""
+         , vcat $ map pretty decls ]
 
-newtype Wrap a = Wrap { unwrap :: a }
+instance Pretty HS.ModulePragma where
+  pretty (HS.LanguagePragma ps) =
+    text "{-#" <+> text "LANGUAGE" <+> fsep (punctuate comma $ map pretty ps) <+> text "#-}"
 
--- Some TransformBiT instances.
+instance Pretty HS.ImportDecl where
+  pretty HS.ImportDecl{ HS.importModule    = m
+                      , HS.importQualified = q
+                      , HS.importSpecs     = specs } =
+      hsep [ text "import"
+           , if q then text "qualified" else empty
+           , pretty m
+           , maybe empty prSpecs specs ]
+    where prSpecs (hide, specs) =
+            hsep [ if hide then text "hiding" else empty
+                 , parens $ fsep $ punctuate comma $ map pretty specs ]
 
-instanceTransformBiT [ [t| String |] ] [t| (HS.ModuleName, Wrap HS.Exp)        |]
-instanceTransformBiT [ [t| String |] ] [t| (HS.ModuleName, Wrap HS.Module)     |]
-instanceTransformBiT [ [t| String |] ] [t| (HS.ModuleName, Wrap HS.ModuleName) |]
-instanceTransformBiT [ [t| String |] ] [t| (HS.ModuleName, Wrap HS.QName)      |]
+instance Pretty HS.ImportSpec where
+  pretty (HS.IVar x) = pretty x
+
+instance Pretty HS.Decl where
+  pretty d = case d of
+    HS.TypeDecl f xs t ->
+      sep [ text "type" <+> pretty f <+> fsep (map pretty xs) <+> text "="
+          , nest 2 $ pretty t ]
+    HS.DataDecl newt d xs cons derv ->
+      sep [ pretty newt <+> pretty d <+> fsep (map pretty xs)
+          , nest 2 $ if null cons then empty
+                     else text "=" <+> fsep (punctuate (text " |") $ map pretty cons)
+          , nest 2 $ prDeriving derv ]
+      where
+        prDeriving [] = empty
+        prDeriving ds = text "deriving" <+> parens (fsep $ punctuate comma $ map prDer ds)
+        prDer (d, ts) = pretty (foldl HS.TyApp (HS.TyCon d) ts)
+    HS.TypeSig fs t ->
+      sep [ hsep (punctuate comma (map pretty fs)) <+> text "::"
+          , nest 2 $ pretty t ]
+    HS.FunBind ms -> vcat $ map pretty ms
+    HS.FakeDecl s -> text s
+
+instance Pretty HS.ConDecl where
+  pretty (HS.ConDecl c ts) = pretty c <+> fsep (map (prettyPrec 10) ts)
+
+instance Pretty HS.Match where
+  pretty (HS.Match f ps rhs wh) =
+    prettyWhere wh $
+      sep [ pretty f <+> fsep (map (prettyPrec 10) ps)
+          , nest 2 $ prettyRhs "=" rhs ]
+
+prettyWhere :: Maybe HS.Binds -> Doc -> Doc
+prettyWhere Nothing  doc = doc
+prettyWhere (Just b) doc =
+  vcat [ doc, nest 2 $ sep [ text "where", nest 2 $ pretty b ] ]
+
+instance Pretty HS.Pat where
+  prettyPrec pr pat =
+    case pat of
+      HS.PVar x         -> pretty x
+      HS.PLit l         -> pretty l
+      HS.PAsPat x p     -> mparens (pr > 10) $ pretty x <> text "@" <> prettyPrec 11 p
+      HS.PWildCard      -> text "_"
+      HS.PBangPat p     -> text "!" <> prettyPrec 11 p
+      HS.PApp c ps      -> mparens (pr > 9) $ pretty c <+> hsep (map (prettyPrec 10) ps)
+      HS.PatTypeSig p t -> mparens (pr > 0) $ sep [ pretty p <+> text "::", nest 2 $ pretty t ]
+      HS.PIrrPat p      -> mparens (pr > 10) $ text "~" <> prettyPrec 11 p
+
+prettyRhs :: String -> HS.Rhs -> Doc
+prettyRhs eq (HS.UnGuardedRhs e)   = text eq <+> pretty e
+prettyRhs eq (HS.GuardedRhss rhss) = vcat $ map (prettyGuardedRhs eq) rhss
+
+prettyGuardedRhs :: String -> HS.GuardedRhs -> Doc
+prettyGuardedRhs eq (HS.GuardedRhs ss e) =
+    sep [ text "|" <+> sep (punctuate comma $ map pretty ss) <+> text eq
+        , nest 2 $ pretty e ]
+
+instance Pretty HS.Binds where
+  pretty (HS.BDecls ds) = vcat $ map pretty ds
+
+instance Pretty HS.DataOrNew where
+  pretty HS.DataType = text "data"
+  pretty HS.NewType  = text "newtype"
+
+instance Pretty HS.TyVarBind where
+  pretty (HS.UnkindedVar x) = pretty x
+
+instance Pretty HS.Type where
+  prettyPrec pr t =
+    case t of
+      HS.TyForall xs t ->
+        mparens (pr > 0) $
+          sep [ text "forall" <+> fsep (map pretty xs) <> text "."
+              , nest 2 $ pretty t ]
+      HS.TyFun a b ->
+        mparens (pr > 4) $
+          sep [ prettyPrec 5 a <+> text "->", prettyPrec 4 b ]
+      HS.TyCon c -> pretty c
+      HS.TyVar x -> pretty x
+      t@HS.TyApp{} ->
+          sep [ prettyPrec 9 f
+              , nest 2 $ fsep $ map (prettyPrec 10) ts ]
+        where
+          f : ts = appView t []
+          appView (HS.TyApp a b) as = appView a (b : as)
+          appView t as = t : as
+      HS.FakeType s -> text s
+
+instance Pretty HS.Stmt where
+  pretty (HS.Qualifier e) = pretty e
+  pretty (HS.Generator p e) = sep [ pretty p <+> text "<-", nest 2 $ pretty e ]
+
+instance Pretty HS.Literal where
+  pretty (HS.Int n)    = integer n
+  pretty (HS.Frac x)   = double (fromRational x)
+  pretty (HS.Char c)   = text (show c)
+  pretty (HS.String s) = text (show s)
+
+instance Pretty HS.Exp where
+  prettyPrec pr e =
+    case e of
+      HS.Var x -> pretty x
+      HS.Con c -> pretty c
+      HS.Lit l -> pretty l
+      HS.InfixApp a qop b -> mparens (pr > 0) $
+        sep [ prettyPrec 1 a
+            , pretty qop <+> prettyPrec 1 b ]
+      HS.App{} -> mparens (pr > 9) $
+        sep [ prettyPrec 9 f
+            , nest 2 $ fsep $ map (prettyPrec 10) es ]
+        where
+          f : es = appView e []
+          appView (HS.App f e) es = appView f (e : es)
+          appView f es = f : es
+      HS.Lambda ps e -> mparens (pr > 0) $
+        sep [ text "\\" <+> fsep (map (prettyPrec 10) ps) <+> text "->"
+            , nest 2 $ pretty e ]
+      HS.Let bs e -> mparens (pr > 0) $
+        sep [ text "let" <+> pretty bs <+> text "in"
+            , pretty e ]
+      HS.If a b c -> mparens (pr > 0) $
+        sep [ text "if" <+> pretty a
+            , nest 2 $ text "then" <+> pretty b
+            , nest 2 $ text "else" <+> prettyPrec 1 c ]
+      HS.Case e bs -> mparens (pr > 0) $
+        vcat [ text "case" <+> pretty e <+> text "of"
+             , nest 2 $ vcat $ map pretty bs ]
+      HS.ExpTypeSig e t -> mparens (pr > 0) $
+        sep [ pretty e <+> text "::"
+            , nest 2 $ pretty t ]
+      HS.NegApp exp -> parens $ text "-" <> pretty exp
+      HS.FakeExp s -> text s
+
+instance Pretty HS.Alt where
+  pretty (HS.Alt pat rhs wh) =
+    prettyWhere wh $
+      sep [ pretty pat, nest 2 $ prettyRhs "->" rhs ]
+
+instance Pretty HS.ModuleName where
+  pretty m = text s
+    where HS.ModuleName s = encodeModuleName m
+
+instance Pretty HS.QName where
+  pretty q = mparens (isOperator q) (prettyQName q)
+
+instance Pretty HS.Name where
+  pretty (HS.Ident  s) = text s
+  pretty (HS.Symbol s) = text s
+
+instance Pretty HS.QOp where
+  pretty (HS.QVarOp x)
+    | isOperator x = prettyQName x
+    | otherwise    = text "`" <> prettyQName x <> text "`"
+
+isOperator :: HS.QName -> Bool
+isOperator q =
+  case q of
+    HS.Qual _ x           -> isOp x
+    HS.UnQual x           -> isOp x
+  where
+    isOp HS.Symbol{} = True
+    isOp HS.Ident{}  = False
+
+prettyQName :: HS.QName -> Doc
+prettyQName (HS.Qual m x)           = pretty m <> text "." <> pretty x
+prettyQName (HS.UnQual x)           = pretty x
+
diff --git a/src/full/Agda/Compiler/MAlonzo/Primitives.hs b/src/full/Agda/Compiler/MAlonzo/Primitives.hs
--- a/src/full/Agda/Compiler/MAlonzo/Primitives.hs
+++ b/src/full/Agda/Compiler/MAlonzo/Primitives.hs
@@ -6,7 +6,7 @@
 import Data.Char
 import Data.List as L
 import Data.Map as M
-import qualified Language.Haskell.Exts.Syntax as HS
+import qualified Agda.Utils.Haskell.Syntax as HS
 
 import Agda.Compiler.Common
 import Agda.Compiler.ToTreeless
@@ -15,6 +15,7 @@
 import Agda.Compiler.MAlonzo.Pretty
 import Agda.Syntax.Common
 import Agda.Syntax.Internal
+import Agda.Syntax.Treeless
 import Agda.TypeChecking.Monad
 import Agda.TypeChecking.Monad.Builtin
 import Agda.TypeChecking.Primitive
@@ -59,28 +60,47 @@
           [prettyTCM io] ++ pwords " A, for some A. The given type is" ++ [prettyTCM ty]
         typeError $ GenericError $ show err
   where
-    mainAlias = HS.FunBind [HS.Match dummy mainLHS [] Nothing mainRHS emptyBinds ]
+    mainAlias = HS.FunBind [HS.Match mainLHS [] mainRHS emptyBinds ]
     mainLHS   = HS.Ident "main"
     mainRHS   = HS.UnGuardedRhs $ HS.Var $ HS.UnQual $ unqhname "d" q
 
+treelessPrimName :: TPrim -> String
+treelessPrimName p =
+  case p of
+    PQuot -> "quotInt"
+    PRem  -> "remInt"
+    PSub  -> "subInt"
+    PAdd  -> "addInt"
+    PMul  -> "mulInt"
+    PGeq  -> "geqInt"
+    PLt   -> "ltInt"
+    PEqI  -> "eqInt"
+    PEqF  -> "eqFloat"
+    -- MAlonzo uses literal patterns, so we don't need equality for the other primitive types
+    PEqC  -> __IMPOSSIBLE__
+    PEqS  -> __IMPOSSIBLE__
+    PEqQ  -> __IMPOSSIBLE__
+    PSeq  -> "seq"
+    -- primitives only used by GuardsToPrims transformation, which MAlonzo doesn't use
+    PIf   -> __IMPOSSIBLE__
+
 -- Haskell modules to be imported for BUILT-INs
 importsForPrim :: TCM [HS.ModuleName]
 importsForPrim =
   fmap (++ [HS.ModuleName "Data.Text"]) $
   xForPrim $
   L.map (\(s, ms) -> (s, return (L.map HS.ModuleName ms))) $
-  [ "CHAR"           |-> ["Data.Char"]
-  , "primIsDigit"    |-> ["Data.Char"]
-  , "primIsLower"    |-> ["Data.Char"]
-  , "primIsDigit"    |-> ["Data.Char"]
-  , "primIsAlpha"    |-> ["Data.Char"]
-  , "primIsSpace"    |-> ["Data.Char"]
-  , "primIsAscii"    |-> ["Data.Char"]
-  , "primIsLatin1"   |-> ["Data.Char"]
-  , "primIsPrint"    |-> ["Data.Char"]
-  , "primIsHexDigit" |-> ["Data.Char"]
-  , "primToUpper"    |-> ["Data.Char"]
-  , "primToLower"    |-> ["Data.Char"]
+  [ "CHAR"              |-> ["Data.Char"]
+  , "primIsAlpha"       |-> ["Data.Char"]
+  , "primIsAscii"       |-> ["Data.Char"]
+  , "primIsDigit"       |-> ["Data.Char"]
+  , "primIsHexDigit"    |-> ["Data.Char"]
+  , "primIsLatin1"      |-> ["Data.Char"]
+  , "primIsLower"       |-> ["Data.Char"]
+  , "primIsPrint"       |-> ["Data.Char"]
+  , "primIsSpace"       |-> ["Data.Char"]
+  , "primToLower"       |-> ["Data.Char"]
+  , "primToUpper"       |-> ["Data.Char"]
   ]
   where (|->) = (,)
 
@@ -91,8 +111,9 @@
   qs <- HMap.keys <$> curDefs
   bs <- toList <$> gets stBuiltinThings
   let getName (Builtin (Def q _))    = q
-      getName (Builtin (Con q _))    = conName q
+      getName (Builtin (Con q _ _))  = conName q
       getName (Builtin (Shared p))   = getName (Builtin $ derefPtr p)
+      getName (Builtin (Lam _ b))    = getName (Builtin $ unAbs b)
       getName (Builtin _)            = __IMPOSSIBLE__
       getName (Prim (PrimFun q _ _)) = q
   concat <$> sequence [ maybe (return []) id $ L.lookup s table
@@ -132,18 +153,17 @@
 
   -- Floating point functions
   , "primNatToFloat"        |-> return "(fromIntegral :: Integer -> Double)"
-  , "primFloatPlus"         |-> return "((+) :: Double -> Double -> Double)"
-  , "primFloatMinus"        |-> return "((-) :: Double -> Double -> Double)"
-  , "primFloatTimes"        |-> return "((*) :: Double -> Double -> Double)"
-  , "primFloatDiv"          |-> return "((/) :: Double -> Double -> Double)"
-  , "primFloatEquality"     |-> return "((\\ x y -> if isNaN x && isNaN y then True else x == y) :: Double -> Double -> Bool)"
-  , "primFloatLess"         |-> return (unwords
-                                  [ "((\\ x y ->"
-                                  , "let isNegInf z = z < 0 && isInfinite z in"
-                                  , "if isNegInf y then False else"
-                                  , "if isNegInf x then True  else"
-                                  , "if isNaN x    then True  else"
-                                  , "x < y) :: Double -> Double -> Bool)" ])
+  , "primFloatPlus"         |-> return "((+)          :: Double -> Double -> Double)"
+  , "primFloatMinus"        |-> return "((-)          :: Double -> Double -> Double)"
+  , "primFloatTimes"        |-> return "((*)          :: Double -> Double -> Double)"
+  , "primFloatNegate"       |-> return "(negate       :: Double -> Double)"
+  , "primFloatDiv"          |-> return "((/)          :: Double -> Double -> Double)"
+  -- ASR (2016-09-14). We use bitwise equality for comparing Double
+  -- because Haskell's Eq, which equates 0.0 and -0.0, allows to prove
+  -- a contradiction (see Issue #2169).
+  , "primFloatEquality"     |-> return "MAlonzo.RTE.eqFloat"
+  , "primFloatNumericalEquality" |-> return "MAlonzo.RTE.eqNumFloat"
+  , "primFloatNumericalLess" |-> return "MAlonzo.RTE.ltNumFloat"
   , "primFloatSqrt"         |-> return "(sqrt :: Double -> Double)"
   , "primRound"             |-> return "(round :: Double -> Integer)"
   , "primFloor"             |-> return "(floor :: Double -> Integer)"
@@ -151,7 +171,13 @@
   , "primExp"               |-> return "(exp :: Double -> Double)"
   , "primLog"               |-> return "(log :: Double -> Double)"
   , "primSin"               |-> return "(sin :: Double -> Double)"
-  , "primShowFloat"         |-> return "(Data.Text.pack . (\\ x -> if isNegativeZero x then \"0.0\" else show x) :: Double -> Data.Text.Text)"
+  , "primCos"               |-> return "(cos :: Double -> Double)"
+  , "primTan"               |-> return "(tan :: Double -> Double)"
+  , "primASin"              |-> return "(asin :: Double -> Double)"
+  , "primACos"              |-> return "(acos :: Double -> Double)"
+  , "primATan"              |-> return "(atan :: Double -> Double)"
+  , "primATan2"             |-> return "(atan2 :: Double -> Double -> Double)"
+  , "primShowFloat"         |-> return "(Data.Text.pack . show :: Double -> Data.Text.Text)"
 
   -- Character functions
   , "primCharEquality"   |-> rel "(==)" "Char"
@@ -174,12 +200,13 @@
   , "primStringFromList" |-> return "Data.Text.pack"
   , "primStringAppend"   |-> binAsis "Data.Text.append" "Data.Text.Text"
   , "primStringEquality" |-> rel "(==)" "Data.Text.Text"
-  , "primShowString"     |-> return "Data.Text.unpack"
+  , "primShowString"     |-> return "id"
 
   -- Reflection
   , "primQNameEquality"   |-> rel "(==)" "MAlonzo.RTE.QName"
   , "primQNameLess"       |-> rel "(<)" "MAlonzo.RTE.QName"
   , "primShowQName"       |-> return "Data.Text.pack . MAlonzo.RTE.qnameString"
+  , "primQNameFixity"     |-> return "MAlonzo.RTE.qnameFixity"
   , "primMetaEquality"    |-> rel "(==)" "Integer"
   , "primMetaLess"        |-> rel "(<)" "Integer"
   , "primShowMeta"        |-> return "\\ x -> Data.Text.pack (\"_\" ++ show (x :: Integer))"
@@ -223,7 +250,7 @@
 
 pconName :: String -> TCM String
 pconName s = toS . ignoreSharing =<< getBuiltin s where
-  toS (Con q _) = prettyPrint <$> conhqn (conName q)
+  toS (Con q _ _) = prettyPrint <$> conhqn (conName q)
   toS (Lam _ t) = toS (unAbs t)
   toS _ = mazerror $ "pconName" ++ s
 
diff --git a/src/full/Agda/Compiler/ToTreeless.hs b/src/full/Agda/Compiler/ToTreeless.hs
--- a/src/full/Agda/Compiler/ToTreeless.hs
+++ b/src/full/Agda/Compiler/ToTreeless.hs
@@ -1,7 +1,5 @@
 {-# LANGUAGE CPP                 #-}
-{-# LANGUAGE DoAndIfThenElse     #-}
 {-# LANGUAGE ScopedTypeVariables #-}
-{-# LANGUAGE PatternGuards       #-}
 
 module Agda.Compiler.ToTreeless
   ( toTreeless
@@ -32,6 +30,8 @@
 import Agda.Compiler.Treeless.Uncase
 import Agda.Compiler.Treeless.Pretty
 import Agda.Compiler.Treeless.Unused
+import Agda.Compiler.Treeless.AsPatterns
+import Agda.Compiler.Treeless.Identity
 
 import Agda.Syntax.Common
 import Agda.TypeChecking.Monad as TCM
@@ -43,6 +43,7 @@
 import Agda.Utils.List
 import Agda.Utils.Maybe
 import Agda.Utils.Monad
+import Agda.Utils.Lens
 import qualified Agda.Utils.Pretty as P
 
 #include "undefined.h"
@@ -69,6 +70,14 @@
       -- functions, since that would risk inlining to fail.
     ccToTreeless q cc
 
+-- | Does not require the name to refer to a function.
+cacheTreeless :: QName -> TCM ()
+cacheTreeless q = do
+  def <- theDef <$> getConstInfo q
+  case def of
+    Function{} -> () <$ toTreeless' q
+    _          -> return ()
+
 ccToTreeless :: QName -> CC.CompiledClauses -> TCM C.TTerm
 ccToTreeless q cc = do
   let pbody b = pbody' "" b
@@ -87,6 +96,10 @@
   reportSDoc "treeless.opt.erase" (30 + v) $ text "-- after erasure"  $$ pbody body
   body <- caseToSeq body
   reportSDoc "treeless.opt.uncase" (30 + v) $ text "-- after uncase"  $$ pbody body
+  body <- recoverAsPatterns body
+  reportSDoc "treeless.opt.aspat" (30 + v) $ text "-- after @-pattern recovery"  $$ pbody body
+  body <- detectIdentityFunctions q body
+  reportSDoc "treeless.opt.id" (30 + v) $ text "-- after identity function detection"  $$ pbody body
   body <- simplifyTTerm body
   reportSDoc "treeless.opt.simpl" (30 + v) $ text "-- after third simplification"  $$ pbody body
   body <- eraseTerms q body
@@ -158,13 +171,17 @@
     CC.Done xs v -> lambdasUpTo (length xs) $ do
         v <- lift $ putAllowedReductions [ProjectionReductions, CopatternReductions] $ normalise v
         substTerm v
-    CC.Case (Arg _ n) (CC.Branches True conBrs _ _) -> lambdasUpTo n $ do
+    CC.Case _ (CC.Branches True _ _ Just{}) -> __IMPOSSIBLE__
+      -- Andreas, 2016-06-03, issue #1986: Ulf: "no catch-all for copatterns!"
+      -- lift $ do
+      --   typeError . GenericDocError =<< do
+      --     text "Not yet implemented: compilation of copattern matching with catch-all clause"
+    CC.Case (Arg _ n) (CC.Branches True conBrs _ Nothing) -> lambdasUpTo n $ do
       mkRecord =<< traverse casetree (CC.content <$> conBrs)
     CC.Case (Arg _ n) (CC.Branches False conBrs litBrs catchAll) -> lambdasUpTo (n + 1) $ do
       if Map.null conBrs && Map.null litBrs then do
         -- there are no branches, just return default
-        fromMaybe C.tUnreachable
-          <$> (fmap C.TVar <$> asks ccCatchAll)
+        fromCatchAll
       else do
         caseTy <- case (Map.keys conBrs, Map.keys litBrs) of
               ((c:_), []) -> do
@@ -173,18 +190,21 @@
                 return $ C.CTData dtNm
               ([], (LitChar _ _):_)  -> return C.CTChar
               ([], (LitString _ _):_) -> return C.CTString
+              ([], (LitFloat _ _):_) -> return C.CTFloat
               ([], (LitQName _ _):_) -> return C.CTQName
               _ -> __IMPOSSIBLE__
         updateCatchAll catchAll $ do
           x <- lookupLevel n <$> asks ccCxt
-          -- normally, Agda should make sure that a pattern match is total,
-          -- so we set the default to unreachable if no default has been provided.
-          def <- fromMaybe C.tUnreachable
-            <$> (fmap C.TVar <$> asks ccCatchAll)
+          def <- fromCatchAll
           C.TCase x caseTy def <$> do
             br1 <- conAlts n conBrs
             br2 <- litAlts n litBrs
             return (br1 ++ br2)
+  where
+    -- normally, Agda should make sure that a pattern match is total,
+    -- so we set the default to unreachable if no default has been provided.
+    fromCatchAll :: CC C.TTerm
+    fromCatchAll = maybe C.tUnreachable C.TVar <$> asks ccCatchAll
 
 commonArity :: CC.CompiledClauses -> Int
 commonArity cc =
@@ -283,7 +303,7 @@
 recConFromProj :: QName -> TCM I.ConHead
 recConFromProj q = do
   caseMaybeM (isProjection q) __IMPOSSIBLE__ $ \ proj -> do
-    let d = projFromType proj
+    let d = unArg $ projFromType proj
     getRecordConstructor d
 
 
@@ -308,7 +328,7 @@
     I.Def q es -> do
       let args = fromMaybe __IMPOSSIBLE__ $ I.allApplyElims es
       maybeInlineDef q args
-    I.Con c args -> do
+    I.Con c ci args -> do
         c' <- lift $ canonicalName $ I.conName c
         C.mkTApp (C.TCon c') <$> substArgs args
     I.Shared _ -> __IMPOSSIBLE__ -- the ignoreSharing fun should already take care of this
@@ -326,12 +346,12 @@
 maybeInlineDef :: I.QName -> I.Args -> CC C.TTerm
 maybeInlineDef q vs =
   ifM (lift $ alwaysInline q) doinline $ do
+    lift $ cacheTreeless q
     def <- lift $ getConstInfo q
     case theDef def of
-      Function{ funInline = inline }
-        | inline    -> doinline
+      fun@Function{}
+        | fun ^. funInline -> doinline
         | otherwise -> do
-        _ <- lift $ toTreeless' q
         used <- lift $ getCompiledArgUse q
         let substUsed False _   = pure C.TErased
             substUsed True  arg = substArg arg
@@ -345,5 +365,13 @@
 substArgs = traverse substArg
 
 substArg :: Arg I.Term -> CC C.TTerm
-substArg x | isIrrelevant x = return C.TErased
-           | otherwise      = substTerm (unArg x)
+substArg x | erasable x = return C.TErased
+           | otherwise  = substTerm (unArg x)
+  where
+    erasable x =
+      case getRelevance x of
+        Irrelevant -> True
+        NonStrict  -> True
+        UnusedArg  -> True
+        Forced{}   -> False -- TODO: would like this to be True
+        Relevant   -> False
diff --git a/src/full/Agda/Compiler/Treeless/AsPatterns.hs b/src/full/Agda/Compiler/Treeless/AsPatterns.hs
new file mode 100644
--- /dev/null
+++ b/src/full/Agda/Compiler/Treeless/AsPatterns.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE CPP #-}
+module Agda.Compiler.Treeless.AsPatterns (recoverAsPatterns) where
+
+import Control.Applicative
+import Control.Monad.Reader
+import Data.Monoid
+
+import Agda.Syntax.Treeless
+import Agda.Syntax.Literal
+import Agda.TypeChecking.Substitute
+import Agda.Compiler.Treeless.Subst
+import Agda.Compiler.Treeless.Compare
+
+import Agda.Utils.Impossible
+#include "undefined.h"
+
+data AsPat = AsPat Int QName [Int]  -- x@(c ys)
+  deriving (Show)
+
+wk :: Int -> AsPat -> AsPat
+wk n (AsPat x c ys) = AsPat (n + x) c (map (n +) ys)
+
+type S = Reader [AsPat]
+
+runS :: S a -> a
+runS m = runReader m []
+
+underBinds :: Int -> S a -> S a
+underBinds 0 = id
+underBinds n = local (map $ wk n)
+
+bindAsPattern :: AsPat -> S a -> S a
+bindAsPattern p = local (p :)
+
+lookupAsPattern :: QName -> [TTerm] -> S TTerm
+lookupAsPattern c vs
+  | Just xs <- allVars vs = do
+    ps <- ask
+    case [ x | AsPat x c' ys <- ps, c == c', xs == ys ] of
+      x : _ -> pure $ TVar x
+      _     -> pure $ mkTApp (TCon c) vs
+  | otherwise = pure $ mkTApp (TCon c) vs
+  where
+    allVars = mapM getVar
+    getVar (TVar x) = Just x
+    getVar _        = Nothing   -- what about erased?
+
+-- | We lose track of @-patterns in the internal syntax. This pass puts them
+--   back.
+recoverAsPatterns :: Monad m => TTerm -> m TTerm
+recoverAsPatterns t = return $ runS (recover t)
+
+recover :: TTerm -> S TTerm
+recover t =
+  case t of
+    TApp f vs -> do
+      f  <- recover f
+      vs <- mapM recover vs
+      tApp f vs
+    TLam b -> TLam <$> underBinds 1 (recover b)
+    TCon{} -> tApp t []   -- need to recover nullary constructors as well (to make deep @-patterns work)
+    TLet v b -> TLet <$> recover v <*> underBinds 1 (recover b)
+    TCase x ct d bs -> TCase x ct <$> recover d <*> mapM (recoverAlt x) bs
+    TLit{}    -> pure t
+    TVar{}    -> pure t
+    TPrim{}   -> pure t
+    TDef{}    -> pure t
+    TUnit{}   -> pure t
+    TSort{}   -> pure t
+    TErased{} -> pure t
+    TError{}  -> pure t
+
+recoverAlt :: Int -> TAlt -> S TAlt
+recoverAlt x b =
+  case b of
+    TACon c n b -> TACon c n <$> underBinds n (bindAsPattern (AsPat (x + n) c [n - 1, n - 2..0]) $ recover b)
+    TAGuard g b -> TAGuard <$> recover g <*> recover b
+    TALit l b   -> TALit l <$> recover b
+
+tApp :: TTerm -> [TTerm] -> S TTerm
+tApp (TCon c) vs = lookupAsPattern c vs
+tApp f vs        = pure $ mkTApp f vs
+
diff --git a/src/full/Agda/Compiler/Treeless/Builtin.hs b/src/full/Agda/Compiler/Treeless/Builtin.hs
--- a/src/full/Agda/Compiler/Treeless/Builtin.hs
+++ b/src/full/Agda/Compiler/Treeless/Builtin.hs
@@ -15,9 +15,6 @@
 --
 -- Ulf, 2015-10-30: Guards are actually a better primitive. Fixed that.
 {-# LANGUAGE CPP #-}
-{-# LANGUAGE PatternGuards #-}
-{-# LANGUAGE RecordWildCards #-}
-{-# LANGUAGE FlexibleContexts #-}
 module Agda.Compiler.Treeless.Builtin (translateBuiltins) where
 
 import Control.Applicative
@@ -64,7 +61,7 @@
              <*> isB def builtinNatEquals
              <*> isP pf  "primForce"
   where
-    con (I.Con c _) = pure $ I.conName c
+    con (I.Con c _ _) = pure $ I.conName c
     con _           = Nothing
     def (I.Def d _) = pure d
     def _           = Nothing
@@ -93,7 +90,7 @@
       TDef f | isPlus f   -> TPrim PAdd
              | isTimes f  -> TPrim PMul
              | isLess f   -> TPrim PLt
-             | isEqual f  -> TPrim PEq
+             | isEqual f  -> TPrim PEqI
         -- Note: Don't do this for builtinNatMinus! PSub is integer minus and
         --       builtin minus is monus. The simplifier will do it if it can see
         --       that it won't underflow.
@@ -115,7 +112,7 @@
           e | Just (i, e) <- plusKView e -> tNegPlusK (i + 1) e
           e -> tNegPlusK 1 e
 
-      TCase e t d bs -> TCase e t (tr d) $ concatMap trAlt bs
+      TCase e t d bs -> TCase e (caseType t bs) (tr d) $ concatMap trAlt bs
         where
           trAlt b = case b of
             TACon c 0 b | isZero c -> [TALit (LitNat noRange 0) (tr b)]
@@ -125,8 +122,10 @@
                 TCase 0 _ d bs' -> map sucBranch bs' ++ [nPlusKAlt 1 d]
                 b -> [nPlusKAlt 1 b]
               where
-                sucBranch (TALit (LitNat r i) b) = TALit (LitNat r (i + 1)) $ applySubst (str __IMPOSSIBLE__) b
-                sucBranch alt | Just (k, b) <- nPlusKView alt = nPlusKAlt (k + 1) $ applySubst (liftS 1 $ str __IMPOSSIBLE__) b
+                sucBranch (TALit (LitNat r i) b) = TALit (LitNat r (i + 1)) $ TLet (tInt i) b
+                sucBranch alt | Just (k, b) <- nPlusKView alt =
+                  nPlusKAlt (k + 1) $ TLet (tOp PAdd (TVar 0) (tInt 1)) $
+                    applySubst ([TVar 1, TVar 0] ++# wkS 2 idS) b
                 sucBranch _ = __IMPOSSIBLE__
 
                 nPlusKAlt k b = TAGuard (tOp PGeq (TVar e) (tInt k)) $
@@ -179,8 +178,15 @@
       TLam b                  -> TLam (tr b)
       TApp a bs               -> TApp (tr a) (map tr bs)
       TLet e b                -> TLet (tr e) (tr b)
+
+    caseType t (TACon c _ _ : _)
+      | isZero c   = CTNat
+      | isSuc c    = CTNat
+      | isPos c    = CTInt
+      | isNegSuc c = CTInt
+    caseType t _ = t
+
     nPlusKView (TAGuard (TApp (TPrim PGeq) [TVar 0, (TLit (LitNat _ k))])
                         (TLet (TApp (TPrim PSub) [TVar 0, (TLit (LitNat _ j))]) b))
       | k == j = Just (k, b)
     nPlusKView _ = Nothing
-
diff --git a/src/full/Agda/Compiler/Treeless/Compare.hs b/src/full/Agda/Compiler/Treeless/Compare.hs
--- a/src/full/Agda/Compiler/Treeless/Compare.hs
+++ b/src/full/Agda/Compiler/Treeless/Compare.hs
@@ -1,4 +1,3 @@
-{-# LANGUAGE PatternGuards #-}
 module Agda.Compiler.Treeless.Compare (equalTerms) where
 
 import Agda.Syntax.Treeless
@@ -46,7 +45,11 @@
                    | otherwise = Nothing
 applyPrim PGeq _ _ = Nothing
 applyPrim PLt  _ _ = Nothing
-applyPrim PEq  _ _ = Nothing
+applyPrim PEqI _ _ = Nothing
+applyPrim PEqF _ _ = Nothing
+applyPrim PEqC _ _ = Nothing
+applyPrim PEqS _ _ = Nothing
+applyPrim PEqQ _ _ = Nothing
 applyPrim PIf  _ _ = Nothing
 applyPrim PSeq _ _ = Nothing
 
diff --git a/src/full/Agda/Compiler/Treeless/DelayCoinduction.hs b/src/full/Agda/Compiler/Treeless/DelayCoinduction.hs
new file mode 100644
--- /dev/null
+++ b/src/full/Agda/Compiler/Treeless/DelayCoinduction.hs
@@ -0,0 +1,69 @@
+{-# LANGUAGE CPP #-}
+-- | Inserts an additional lambda into all coinductive auxiliary definitions (== target type Inf XX). E.g.:
+--
+--   f : A -> B -> C -> Inf A
+--   f = \a b c -> body
+-- is converted to
+--   f = \a b c _ -> body
+--
+-- Assumes that flat/sharp are implemented as follows:
+--
+-- flat = \x -> x
+-- sharp = \x -> x ()
+
+module Agda.Compiler.Treeless.DelayCoinduction where
+
+import Control.Applicative
+
+import Agda.Syntax.Internal (Type)
+import Agda.Syntax.Abstract.Name (QName)
+import Agda.Syntax.Treeless
+
+import Agda.TypeChecking.Monad
+import Agda.TypeChecking.Monad.Builtin
+import Agda.TypeChecking.Primitive
+import Agda.TypeChecking.Reduce ( instantiateFull, normalise )
+import Agda.TypeChecking.Substitute hiding (underLambdas)
+import Agda.TypeChecking.Telescope
+
+import Agda.Compiler.Treeless.Subst
+
+import Agda.Utils.Impossible
+
+#include "undefined.h"
+
+delayCoinduction :: TTerm -> Type -> TCM TTerm
+delayCoinduction t ty = do
+  kit <- coinductionKit
+  case kit of
+    Just kit -> transform kit t ty
+    Nothing -> return t
+
+
+transform :: CoinductionKit -> TTerm -> Type -> TCM TTerm
+transform kit t ty = do
+  isInf <- outputIsInf (Just kit) ty
+  if isInf then do
+      ty <- normalise ty
+      TelV tel _ <- telView ty
+      -- insert additional lambda
+      return $ underLambdas (length $ telToList tel) (TLam . raise 1) t
+    else
+      return t
+
+
+outputIsInf :: Maybe CoinductionKit -> Type -> TCM Bool
+outputIsInf kit ty = do
+  ty <- normalise ty
+  tn <- getOutputTypeName ty
+  case tn of
+    OutputTypeName tn -> return $ Just tn == (nameOfInf <$> kit)
+    _ -> return False
+
+
+underLambdas :: Int -> (TTerm -> TTerm) -> TTerm -> TTerm
+underLambdas n cont v = loop n v where
+  loop 0 v = cont v
+  loop n v = case v of
+    TLam b -> TLam $ loop (n-1) b
+    _       -> __IMPOSSIBLE__
diff --git a/src/full/Agda/Compiler/Treeless/EliminateLiteralPatterns.hs b/src/full/Agda/Compiler/Treeless/EliminateLiteralPatterns.hs
new file mode 100644
--- /dev/null
+++ b/src/full/Agda/Compiler/Treeless/EliminateLiteralPatterns.hs
@@ -0,0 +1,79 @@
+{-# LANGUAGE CPP #-}
+-- | Converts case matches on literals to if cascades with equality comparisons.
+module Agda.Compiler.Treeless.EliminateLiteralPatterns where
+
+import Control.Applicative
+import Data.List
+import Data.Maybe
+
+import Agda.Syntax.Abstract.Name (QName)
+import Agda.Syntax.Treeless
+import Agda.Syntax.Literal
+import qualified Agda.Syntax.Internal as I
+
+import Agda.TypeChecking.Monad
+import Agda.TypeChecking.Monad.Builtin
+import Agda.TypeChecking.Primitive
+import Agda.TypeChecking.Substitute
+
+import Agda.Compiler.Treeless.Subst
+
+import Agda.Utils.Impossible
+
+#include "undefined.h"
+
+eliminateLiteralPatterns :: TTerm -> TCM TTerm
+eliminateLiteralPatterns t = do
+  kit <- BuiltinKit <$> getBuiltinName builtinNat <*> getBuiltinName builtinInteger
+  return $ transform kit t
+
+data BuiltinKit = BuiltinKit
+  { nat :: Maybe QName
+  , int :: Maybe QName
+  }
+
+transform :: BuiltinKit -> TTerm -> TTerm
+transform kit = tr
+  where
+    tr :: TTerm -> TTerm
+    tr t = case t of
+      TCase sc t def alts | t `elem` [CTChar, CTString, CTQName, CTNat, CTInt, CTFloat] ->
+        foldr litAlt (tr def) alts
+        where
+          litAlt :: TAlt -> TTerm -> TTerm
+          litAlt (TALit l body) cont =
+            tIfThenElse
+              (tOp (eqFromLit l) (TLit l) (TVar sc))
+              (tr body)
+              cont
+          litAlt _ _ = __IMPOSSIBLE__
+      TCase sc t@(CTData dt) def alts -> TCase sc t (tr def) (map trAlt alts)
+        where
+          trAlt a = a { aBody = tr (aBody a) }
+      TCase _ _ _ _ -> __IMPOSSIBLE__
+
+      TVar{}    -> t
+      TDef{}    -> t
+      TCon{}    -> t
+      TPrim{}   -> t
+      TLit{}    -> t
+      TUnit{}   -> t
+      TSort{}   -> t
+      TErased{} -> t
+      TError{}  -> t
+
+      TLam b                  -> TLam (tr b)
+      TApp a bs               -> TApp (tr a) (map tr bs)
+      TLet e b                -> TLet (tr e) (tr b)
+
+    isCaseOn (CTData dt) xs = dt `elem` catMaybes (map ($ kit) xs)
+    isCaseOn _ _ = False
+
+    eqFromLit :: Literal -> TPrim
+    eqFromLit x = case x of
+      LitNat _ _     -> PEqI
+      LitFloat _ _   -> PEqF
+      LitString _ _  -> PEqS
+      LitChar _ _    -> PEqC
+      LitQName _ _   -> PEqQ
+      _              -> __IMPOSSIBLE__
diff --git a/src/full/Agda/Compiler/Treeless/Erase.hs b/src/full/Agda/Compiler/Treeless/Erase.hs
--- a/src/full/Agda/Compiler/Treeless/Erase.hs
+++ b/src/full/Agda/Compiler/Treeless/Erase.hs
@@ -1,6 +1,6 @@
 {-# LANGUAGE CPP #-}
 
-module Agda.Compiler.Treeless.Erase (eraseTerms) where
+module Agda.Compiler.Treeless.Erase (eraseTerms, computeErasedConstructorArgs) where
 
 import Control.Arrow ((&&&), (***), first, second)
 import Control.Applicative
@@ -33,6 +33,7 @@
 import Agda.Utils.Functor
 import Agda.Utils.Lens
 import Agda.Utils.Memo
+import qualified Agda.Utils.Pretty as P
 
 #include "undefined.h"
 
@@ -50,6 +51,12 @@
 runE :: E a -> TCM a
 runE m = evalStateT m (ESt Map.empty Map.empty)
 
+-- | Takes the name of the data/record type.
+computeErasedConstructorArgs :: QName -> TCM ()
+computeErasedConstructorArgs d = do
+  cs <- getConstructors d
+  runE $ mapM_ getFunInfo cs
+
 eraseTerms :: QName -> TTerm -> TCM TTerm
 eraseTerms q = runE . eraseTop q
   where
@@ -93,7 +100,7 @@
                    _             -> erase $ subst 0 TErased b
             else tLet e <$> erase b
         TCase x t d bs -> do
-          d  <- erase d
+          d  <- ifM (isComplete t bs) (pure tUnreachable) (erase d)
           bs <- mapM eraseAlt bs
           tCase x t d bs
 
@@ -135,12 +142,32 @@
 
     eraseAlt a = case a of
       TALit l b   -> TALit l   <$> erase b
-      TACon c a b -> TACon c a <$> erase b
+      TACon c a b -> do
+        rs <- map erasableR . fst <$> getFunInfo c
+        let sub = foldr (\ e -> if e then (TErased :#) . wkS 1 else liftS 1) idS $ reverse rs
+        TACon c a <$> erase (applySubst sub b)
       TAGuard g b -> TAGuard   <$> erase g <*> erase b
 
+-- | Doesn't have any type information (other than the name of the data type),
+--   so we can't do better than checking if all constructors are present.
+isComplete :: CaseType -> [TAlt] -> E Bool
+isComplete (CTData d) bs = do
+  cs <- lift $ getConstructors d
+  return $ length cs == length [ b | b@TACon{} <- bs ]
+isComplete _ _ = pure False
+
 data TypeInfo = Empty | Erasable | NotErasable
   deriving (Eq, Show)
 
+sumTypeInfo :: [TypeInfo] -> TypeInfo
+sumTypeInfo is = foldr plus Empty is
+  where
+    plus Empty       r           = r
+    plus r           Empty       = r
+    plus Erasable    r           = r
+    plus r           Erasable    = r
+    plus NotErasable NotErasable = NotErasable
+
 erasableR :: Relevance -> Bool
 erasableR Relevant   = False
 erasableR Forced{}   = False    -- TODO: should be True but need to transform clauses
@@ -159,13 +186,22 @@
 getFunInfo q = memo (funMap . key q) $ getInfo q
   where
     getInfo q = do
-      (rs, t) <- lift $ do
-        (tel, t) <- typeWithoutParams q
-        return (map getRelevance tel, t)
+      (rs, t) <- do
+        (tel, t) <- lift $ typeWithoutParams q
+        is <- mapM (getTypeInfo . snd . dget) tel
+        return (zipWith (mkR . getRelevance) tel is, t)
       h <- if isAbsurdLambdaName q then pure Erasable else getTypeInfo t
       lift $ reportSLn "treeless.opt.erase.info" 50 $ "type info for " ++ show q ++ ": " ++ show rs ++ " -> " ++ show h
+      lift $ setErasedConArgs q $ map erasableR rs
       return (rs, h)
 
+    -- Treat empty or erasable arguments as NonStrict (and thus erasable)
+    mkR :: Relevance -> TypeInfo -> Relevance
+    mkR Irrelevant _ = Irrelevant
+    mkR r NotErasable = r
+    mkR _ Empty       = NonStrict
+    mkR _ Erasable    = NonStrict
+
 telListView :: Type -> TCM (ListTel, Type)
 telListView t = do
   TelV tel t <- telView t
@@ -181,17 +217,18 @@
   first (drop d) <$> telListView (defType def)
 
 getTypeInfo :: Type -> E TypeInfo
-getTypeInfo t = do
-  (tel, t) <- lift $ telListView t
+getTypeInfo t0 = do
+  (tel, t) <- lift $ telListView t0
   et <- case ignoreSharing $ I.unEl t of
     I.Def d _ -> typeInfo d
     Sort{}    -> return Erasable
     _         -> return NotErasable
   is <- mapM (getTypeInfo . snd . dget) tel
-  let e | et == Empty       = Empty
-        | any (== Empty) is = Erasable
+  let e | any (== Empty) is = Erasable
+        | null is           = et        -- TODO: guard should really be "all inhabited is"
+        | et == Empty       = Erasable
         | otherwise         = et
-  lift $ reportSDoc "treeless.opt.erase.type" 50 $ prettyTCM t <+> text ("is " ++ show e)
+  lift $ reportSDoc "treeless.opt.erase.type" 50 $ prettyTCM t0 <+> text ("is " ++ show e)
   return e
   where
     typeInfo :: QName -> E TypeInfo
@@ -208,6 +245,11 @@
           is <- mapM (getTypeInfo . snd . dget) ts
           let er = and [ erasable i || erasableR r | (i, r) <- zip is rs ]
           return $ if er then Erasable else NotErasable
-        Just [] -> return Empty
-        _       -> return NotErasable
+        Just []      -> return Empty
+        Just (_:_:_) -> return NotErasable
+        Nothing ->
+          case I.theDef def of
+            I.Function{ funClauses = cs } ->
+              sumTypeInfo <$> mapM (maybe (return Empty) (getTypeInfo . El Prop) . clauseBody) cs
+            _ -> return NotErasable
 
diff --git a/src/full/Agda/Compiler/Treeless/GuardsToPrims.hs b/src/full/Agda/Compiler/Treeless/GuardsToPrims.hs
--- a/src/full/Agda/Compiler/Treeless/GuardsToPrims.hs
+++ b/src/full/Agda/Compiler/Treeless/GuardsToPrims.hs
@@ -25,13 +25,17 @@
 convertGuards = tr
   where
     tr t = case t of
-      TCase sc t def alts -> TCase sc t def' (fmap trAlt otherAlts)
+      TCase sc t def alts ->
+        if null otherAlts
+          then
+            def'
+          else
+            TCase sc t def' (fmap trAlt otherAlts)
         where
           (plusAlts, otherAlts) = splitAlts alts
 
           guardedAlt :: TAlt -> TTerm -> TTerm
-          guardedAlt (TAGuard g body) cont =
-            TApp (TPrim PIf) [tr g, tr body, cont]
+          guardedAlt (TAGuard g body) cont = tIfThenElse (tr g) (tr body) (tr cont)
           guardedAlt _ _ = __IMPOSSIBLE__
 
           def' = foldr guardedAlt (tr def) plusAlts
diff --git a/src/full/Agda/Compiler/Treeless/Identity.hs b/src/full/Agda/Compiler/Treeless/Identity.hs
new file mode 100644
--- /dev/null
+++ b/src/full/Agda/Compiler/Treeless/Identity.hs
@@ -0,0 +1,102 @@
+
+module Agda.Compiler.Treeless.Identity
+  ( detectIdentityFunctions ) where
+
+import Control.Applicative
+import Data.Foldable (foldMap)
+import Data.Semigroup
+import Data.List.NonEmpty (NonEmpty(..))
+import Data.List
+
+import Agda.Syntax.Treeless
+import Agda.TypeChecking.Substitute
+import Agda.TypeChecking.Monad
+import Agda.Utils.Lens
+
+detectIdentityFunctions :: QName -> TTerm -> TCM TTerm
+detectIdentityFunctions q t =
+  case isIdentity q t of
+    Nothing     -> return t
+    Just (n, k) -> do
+      markInline q
+      def <- theDef <$> getConstInfo q
+      return $ mkTLam n $ TVar k
+
+-- If isIdentity f t = Just (n, k) then
+-- f = t is equivalent to f = λ xₙ₋₁ .. x₀ → xk
+isIdentity :: QName -> TTerm -> Maybe (Int, Int)
+isIdentity q t =
+  trivialIdentity q t <|> recursiveIdentity q t
+
+-- Does the function recurse on an argument, rebuilding the same value again.
+recursiveIdentity :: QName -> TTerm -> Maybe (Int, Int)
+recursiveIdentity q t =
+  case b of
+    TCase x _ (TError TUnreachable) bs
+      | all (identityBranch x) bs -> pure (n, x)
+    _ -> empty -- TODO: lets?
+  where
+    (n, b) = tLamView t
+
+    identityBranch _ TALit{}   = False
+    identityBranch _ TAGuard{} = False
+    identityBranch x (TACon c a b) =
+      case b of
+        TApp (TCon c') args -> c == c' && identityArgs a args
+        TVar y              -> y == x + a  -- from @-pattern recovery
+        _                   -> False -- TODO: nested cases
+      where
+        identityArgs a args =
+          length args == a && and (zipWith match (reverse args) [0..])
+
+        proj x args = reverse args !! x
+
+        match TErased              _  = True
+        match (TVar z)             y = z == y
+        match (TApp (TDef f) args) y = f == q && length args == n && match (proj x args) y
+        match _                    _ = False
+
+data IdentityIn = IdIn [Int]
+
+notId :: IdentityIn
+notId = IdIn []
+
+instance Semigroup IdentityIn where
+  IdIn xs <> IdIn ys = IdIn $ intersect xs ys
+
+-- Does the function always return one of its arguments unchanged (possibly
+-- through recursive calls).
+trivialIdentity :: QName -> TTerm -> Maybe (Int, Int)
+trivialIdentity q t =
+  case go 0 b of
+    IdIn [x]     -> pure (n, x)
+    IdIn []      -> Nothing
+    IdIn (_:_:_) -> Nothing  -- only happens for empty functions (which will never be called)
+  where
+    (n, b) = tLamView t
+
+    go :: Int -> TTerm -> IdentityIn
+    go k t =
+      case t of
+        TVar x | x >= k    -> IdIn [x - k]
+               | otherwise -> notId
+        TLet _ b           -> go (k + 1) b
+        TCase _ _ d bs     -> sconcat (go k d :| map (goAlt k) bs)
+        TApp (TDef f) args
+          | f == q         -> IdIn [ y | (TVar x, y) <- zip (reverse args) [0..], y + k == x ]
+        TApp{}             -> notId
+        TLam{}             -> notId
+        TLit{}             -> notId
+        TDef{}             -> notId
+        TCon{}             -> notId
+        TPrim{}            -> notId
+        TUnit{}            -> notId
+        TSort{}            -> notId
+        TErased{}          -> notId
+        TError{}           -> notId
+
+    goAlt :: Int -> TAlt -> IdentityIn
+    goAlt k (TALit _ b)   = go k b
+    goAlt k (TAGuard _ b) = go k b
+    goAlt k (TACon _ n b) = go (k + n) b
+
diff --git a/src/full/Agda/Compiler/Treeless/Pretty.hs b/src/full/Agda/Compiler/Treeless/Pretty.hs
--- a/src/full/Agda/Compiler/Treeless/Pretty.hs
+++ b/src/full/Agda/Compiler/Treeless/Pretty.hs
@@ -1,5 +1,3 @@
-{-# LANGUAGE PatternGuards #-}
-{-# LANGUAGE TupleSections #-}
 
 {-# OPTIONS_GHC -fno-warn-orphans #-}
 
@@ -60,7 +58,11 @@
 opName PRem = "rem"
 opName PGeq = ">="
 opName PLt  = "<"
-opName PEq  = "=="
+opName PEqI = "==I"
+opName PEqF = "==F"
+opName PEqS = "==S"
+opName PEqC = "==C"
+opName PEqQ = "==Q"
 opName PIf  = "if_then_else_"
 opName PSeq = "seq"
 
@@ -72,7 +74,7 @@
     PSub -> l 6
     PGeq -> non 4
     PLt  -> non 4
-    PEq  -> non 4
+    p | isPrimEq p -> non 4
     _    -> Nothing
   where
     l n   = Just (n, n, n + 1)
@@ -128,9 +130,9 @@
         first ((x, e) :) <$> bindName x (pLets bs b)
 
   TCase x _ def alts -> paren 0 $
-    (\ sc alts def ->
+    (\ sc alts defd ->
       sep [ text "case" <+> sc <+> text "of"
-          , nest 2 $ vcat (alts ++ [ text "_ →" <+> def ]) ]
+          , nest 2 $ vcat (alts ++ [ text "_ →" <+> defd | null alts || def /= TError TUnreachable ]) ]
     ) <$> pTerm' 0 (TVar x)
       <*> mapM pAlt alts
       <*> pTerm' 0 def
diff --git a/src/full/Agda/Compiler/Treeless/Simplify.hs b/src/full/Agda/Compiler/Treeless/Simplify.hs
--- a/src/full/Agda/Compiler/Treeless/Simplify.hs
+++ b/src/full/Agda/Compiler/Treeless/Simplify.hs
@@ -1,6 +1,4 @@
 {-# LANGUAGE CPP #-}
-{-# LANGUAGE RecordWildCards #-}
-{-# LANGUAGE PatternGuards #-}
 module Agda.Compiler.Treeless.Simplify (simplifyTTerm) where
 
 import Control.Arrow (first, second, (***))
@@ -79,7 +77,7 @@
 simplify :: FunctionKit -> TTerm -> S TTerm
 simplify FunctionKit{..} = simpl
   where
-    simpl t = rewrite' t >>= \ t -> case t of
+    simpl = rewrite' >=> unchainCase >=> \ t -> case t of
 
       TDef{}         -> pure t
       TPrim{}        -> pure t
@@ -108,9 +106,10 @@
 
       TCase x t d bs -> do
         v <- lookupVar x
-        let (lets, u) = letView v
+        let (lets, u) = tLetView v
         case u of                          -- TODO: also for literals
-          _ | Just (c, as) <- conView u -> simpl $ matchCon lets c as d bs
+          _ | Just (c, as)     <- conView u   -> simpl $ matchCon lets c as d bs
+            | Just (k, TVar y) <- plusKView u -> simpl . mkLets lets . TCase y t d =<< mapM (matchPlusK y x k) bs
           TCase y t1 d1 bs1 -> simpl $ mkLets lets $ TCase y t1 (distrDef case1 d1) $
                                        map (distrCase case1) bs1
             where
@@ -142,9 +141,19 @@
     conView (TApp (TCon c) as) = Just (c, as)
     conView e                  = Nothing
 
-    letView (TLet e b) = first (e :) $ letView b
-    letView e          = ([], e)
+    -- Collapse chained cases (case x of bs -> vs; _ -> case x of bs' -> vs'  ==>
+    --                         case x of bs -> vs; bs' -> vs')
+    unchainCase :: TTerm -> S TTerm
+    unchainCase e@(TCase x t d bs) = do
+      let (lets, u) = tLetView d
+          k = length lets
+      return $ case u of
+        TCase y _ d' bs' | x + k == y ->
+          mkLets lets $ TCase y t d' $ raise k bs ++ bs'
+        _ -> e
+    unchainCase e = return e
 
+
     mkLets es b = foldr TLet b es
 
     matchCon _ _ _ d [] = d
@@ -157,6 +166,14 @@
         mkLet _ []       b = b
         mkLet i (a : as) b = TLet (raise i a) $ mkLet (i + 1) as b
 
+    -- Simplify let y = x + k in case y of j     -> u; _ | g[y]     -> v
+    -- to       let y = x + k in case x of j - k -> u; _ | g[x + k] -> v
+    matchPlusK :: Int -> Int -> Integer -> TAlt -> S TAlt
+    matchPlusK x y k (TALit (LitNat r j) b) = return $ TALit (LitNat r (j - k)) b
+    matchPlusK x y k (TAGuard g b) = flip TAGuard b <$> simpl (applySubst (inplaceS y (tPlusK k (TVar x))) g)
+    matchPlusK x y k TACon{} = __IMPOSSIBLE__
+    matchPlusK x y k TALit{} = __IMPOSSIBLE__
+
     simplPrim (TApp f@TPrim{} args) = do
         args    <- mapM simpl args
         inlined <- mapM inline args
@@ -178,11 +195,15 @@
       | Just (PAdd, k, u) <- constArithView u,
         Just (PAdd, j, v) <- constArithView v,
         k == j = tOp PLt u v
-    simplPrim' (TApp (TPrim PEq) [u, v])
+    simplPrim' (TApp (TPrim op) [u, v])
+      | elem op [PGeq, PLt, PEqI]
+      , Just (PAdd, k, u) <- constArithView u
+      , Just j <- intView v = TApp (TPrim op) [u, tInt (j - k)]
+    simplPrim' (TApp (TPrim PEqI) [u, v])
       | Just (op1, k, u) <- constArithView u,
         Just (op2, j, v) <- constArithView v,
         op1 == op2, k == j,
-        elem op1 [PAdd, PSub] = tOp PEq u v
+        elem op1 [PAdd, PSub] = tOp PEqI u v
     simplPrim' (TApp (TPrim PMul) [u, v])
       | Just 0 <- intView u = tInt 0
       | Just 0 <- intView v = tInt 0
@@ -254,22 +275,54 @@
     maybeMinusToPrim f es = tApp f es
 
     tLet (TVar x) b = subst 0 (TVar x) b
+    tLet e (TVar 0) = e
     tLet e b        = TLet e b
 
     tCase :: Int -> CaseType -> TTerm -> [TAlt] -> S TTerm
+    tCase x t d [] = pure d
     tCase x t d bs
       | isUnreachable d =
         case reverse bs' of
           [] -> pure d
-          TALit _ b   : as  -> pure $ tCase' x t b (reverse as)
-          TAGuard _ b : as  -> pure $ tCase' x t b (reverse as)
-          TACon c a b : _   -> pure $ tCase' x t d bs'
-      | otherwise = pure $ TCase x t d bs'
+          TALit _ b   : as  -> tCase x t b (reverse as)
+          TAGuard _ b : as  -> tCase x t b (reverse as)
+          TACon c a b : _   -> tCase' x t d bs'
+      | otherwise = do
+        d' <- lookupIfVar d
+        case d' of
+          TCase y _ d bs'' | x == y ->
+            tCase x t d (bs' ++ filter noOverlap bs'')
+          _ -> tCase' x t d bs'
       where
         bs' = filter (not . isUnreachable) bs
 
-        tCase' x t d [] = d
-        tCase' x t d bs = TCase x t d bs
+        lookupIfVar (TVar i) = lookupVar i
+        lookupIfVar t = pure t
+
+        noOverlap b = not $ any (overlapped b) bs'
+        overlapped (TACon c _ _)  (TACon c' _ _) = c == c'
+        overlapped (TALit l _)    (TALit l' _)   = l == l'
+        overlapped _              _              = False
+
+    -- | Drop unreachable cases for Nat and Int cases.
+    pruneLitCases :: Int -> CaseType -> TTerm -> [TAlt] -> S TTerm
+    pruneLitCases x CTNat d bs =
+      case complete bs [] Nothing of
+        Just bs' -> tCase x CTNat tUnreachable bs'
+        Nothing  -> return $ TCase x CTNat d bs
+      where
+        complete bs small (Just upper)
+          | null $ [0..upper - 1] \\ small = Just []
+        complete (b@(TALit (LitNat _ n) _) : bs) small upper =
+          (b :) <$> complete bs (n : small) upper
+        complete (b@(TAGuard (TApp (TPrim PGeq) [TVar y, TLit (LitNat _ j)]) _) : bs) small upper | x == y =
+          (b :) <$> complete bs small (Just $ maybe j (min j) upper)
+        complete _ _ _ = Nothing
+    pruneLitCases x CTInt d bs = return $ TCase x CTInt d bs -- TODO
+    pruneLitCases x t d bs = return $ TCase x t d bs
+
+    tCase' x t d [] = return d
+    tCase' x t d bs = pruneLitCases x t d bs
 
     tApp :: TTerm -> [TTerm] -> S TTerm
     tApp (TLet e b) es = TLet e <$> underLet e (tApp b (raise 1 es))
diff --git a/src/full/Agda/Compiler/Treeless/Subst.hs b/src/full/Agda/Compiler/Treeless/Subst.hs
--- a/src/full/Agda/Compiler/Treeless/Subst.hs
+++ b/src/full/Agda/Compiler/Treeless/Subst.hs
@@ -1,4 +1,3 @@
-{-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# OPTIONS_GHC -fno-warn-orphans #-}
 
@@ -7,7 +6,7 @@
 import Control.Applicative
 import qualified Data.Map as Map
 import Data.Map (Map)
-import Data.Monoid
+import Data.Semigroup (Semigroup, Monoid, (<>), mempty, mappend, All(..), Any(..))
 import Data.Maybe
 
 import Agda.Syntax.Treeless
@@ -15,9 +14,9 @@
 import Agda.TypeChecking.Substitute
 
 instance DeBruijn TTerm where
-  debruijnVar = TVar
-  debruijnView (TVar i) = Just i
-  debruijnView _ = Nothing
+  deBruijnVar = TVar
+  deBruijnView (TVar i) = Just i
+  deBruijnView _ = Nothing
 
 instance Subst TTerm TTerm where
   applySubst IdS t = t
@@ -49,10 +48,10 @@
   applySubst rho (TAGuard g b) = TAGuard (applySubst rho g) (applySubst rho b)
 
 newtype UnderLambda = UnderLambda Any
-  deriving (Eq, Ord, Show, Monoid)
+  deriving (Eq, Ord, Show, Semigroup, Monoid)
 
 newtype SeqArg = SeqArg All
-  deriving (Eq, Ord, Show, Monoid)
+  deriving (Eq, Ord, Show, Semigroup, Monoid)
 
 data Occurs = Occurs Int UnderLambda SeqArg
   deriving (Eq, Ord, Show)
@@ -66,9 +65,12 @@
 underLambda :: Occurs -> Occurs
 underLambda o = o <> Occurs 0 (UnderLambda $ Any True) mempty
 
+instance Semigroup Occurs where
+  Occurs a k s <> Occurs b l t = Occurs (a + b) (k <> l) (s <> t)
+
 instance Monoid Occurs where
   mempty = Occurs 0 mempty mempty
-  mappend (Occurs a k s) (Occurs b l t) = Occurs (a + b) (k <> l) (s <> t)
+  mappend = (<>)
 
 class HasFree a where
   freeVars :: a -> Map Int Occurs
@@ -121,4 +123,3 @@
     TACon _ i b -> freeVars (Binder i b)
     TALit _ b   -> freeVars b
     TAGuard g b -> freeVars (g, b)
-
diff --git a/src/full/Agda/Compiler/Treeless/Uncase.hs b/src/full/Agda/Compiler/Treeless/Uncase.hs
--- a/src/full/Agda/Compiler/Treeless/Uncase.hs
+++ b/src/full/Agda/Compiler/Treeless/Uncase.hs
@@ -1,5 +1,4 @@
 {-# LANGUAGE CPP #-}
-{-# LANGUAGE PatternGuards #-}
 module Agda.Compiler.Treeless.Uncase (caseToSeq) where
 
 import Control.Applicative
@@ -65,5 +64,5 @@
 
     -- Primitive operations are already strict
     tApp (TPrim PSeq) [_, b@(TApp (TPrim op) _)]
-      | op `elem` [PAdd, PSub, PMul, PLt, PEq, PGeq, PRem, PQuot] = b
+      | op `elem` [PAdd, PSub, PMul, PLt, PGeq, PRem, PQuot] || isPrimEq op = b
     tApp f es = TApp f es
diff --git a/src/full/Agda/Compiler/Treeless/Unused.hs b/src/full/Agda/Compiler/Treeless/Unused.hs
--- a/src/full/Agda/Compiler/Treeless/Unused.hs
+++ b/src/full/Agda/Compiler/Treeless/Unused.hs
@@ -18,7 +18,7 @@
 
 usedArguments :: QName -> TTerm -> TCM [Bool]
 usedArguments q t = computeUnused q b (replicate n False)
-  where (n, b) = lamView t
+  where (n, b) = tLamView t
 
 computeUnused :: QName -> TTerm -> [Bool] -> TCM [Bool]
 computeUnused q t used = do
@@ -59,9 +59,9 @@
     underBinders n = Set.filter (>= 0) . Set.mapMonotonic (subtract n)
 
 stripUnusedArguments :: [Bool] -> TTerm -> TTerm
-stripUnusedArguments used t = unlamView m $ applySubst rho b
+stripUnusedArguments used t = mkTLam m $ applySubst rho b
   where
-    (n, b) = lamView t
+    (n, b) = tLamView t
     m      = length $ filter id used'
     used'  = reverse $ take n $ used ++ repeat True
     rho = computeSubst used'
@@ -69,10 +69,3 @@
     computeSubst (True  : bs) = liftS 1 $ computeSubst bs
     computeSubst []           = idS
 
-lamView :: TTerm -> (Int, TTerm)
-lamView (TLam b) = first succ $ lamView b
-lamView t        = (0, t)
-
-unlamView :: Int -> TTerm -> TTerm
-unlamView 0 t = t
-unlamView n t = TLam $ unlamView (n - 1) t
diff --git a/src/full/Agda/Compiler/UHC/Bridge.hs b/src/full/Agda/Compiler/UHC/Bridge.hs
--- a/src/full/Agda/Compiler/UHC/Bridge.hs
+++ b/src/full/Agda/Compiler/UHC/Bridge.hs
@@ -1,6 +1,4 @@
 {-# LANGUAGE CPP                #-}
-{-# LANGUAGE EmptyDataDecls     #-}
-{-# LANGUAGE StandaloneDeriving #-}
 {-# LANGUAGE DeriveDataTypeable #-}
 
 -- | Exports the UHC API, and provides dummy
diff --git a/src/full/Agda/Compiler/UHC/CompileState.hs b/src/full/Agda/Compiler/UHC/CompileState.hs
--- a/src/full/Agda/Compiler/UHC/CompileState.hs
+++ b/src/full/Agda/Compiler/UHC/CompileState.hs
@@ -1,7 +1,5 @@
 {-# LANGUAGE CPP                        #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
-{-# LANGUAGE FlexibleInstances          #-}
-{-# LANGUAGE MultiParamTypeClasses      #-}
 {-# LANGUAGE UndecidableInstances       #-}
 
 -- | Contains the state monad that the compiler works in and some functions
@@ -40,8 +38,8 @@
 
 #if __GLASGOW_HASKELL__ <= 708
 import Control.Applicative
-import Data.Monoid
 #endif
+import Data.Semigroup (Semigroup, Monoid, (<>), mempty, mappend)
 
 import Agda.Compiler.UHC.MagicTypes
 import Agda.Syntax.Internal
@@ -71,10 +69,13 @@
   , coreExports :: [CExport] -- ^ UHC core exports
   }
 
+instance Semigroup CoreMeta where
+  CoreMeta a b c <> CoreMeta r s t =
+    CoreMeta (Map.union a r) (Map.unionWith (++) b s) (c ++ t)
+
 instance Monoid CoreMeta where
   mempty = CoreMeta mempty mempty []
-  mappend (CoreMeta a b c) (CoreMeta r s t) =
-    CoreMeta (Map.union a r) (Map.unionWith (++) b s) (c ++ t)
+  mappend = (<>)
 
 -- | Stuff we need in our compiler
 data CompileState = CompileState
diff --git a/src/full/Agda/Compiler/UHC/Compiler.hs b/src/full/Agda/Compiler/UHC/Compiler.hs
--- a/src/full/Agda/Compiler/UHC/Compiler.hs
+++ b/src/full/Agda/Compiler/UHC/Compiler.hs
@@ -1,12 +1,15 @@
 {-# LANGUAGE CPP             #-}
-{-# LANGUAGE DoAndIfThenElse #-}
 
 -- | UHC compiler backend, main entry point.
 
--- In the long term, it would be nice if we could use e.g. shake to build individual Agda modules. The problem with that is that
--- some parts need to be in the TCM Monad, which doesn't easily work in shake. We would need a way to extract the information
--- out of the TCM monad, so that we can pass it to the compilation function without pulling in the TCM Monad. Another minor
--- problem might be error reporting?
+-- In the long term, it would be nice if we could use e.g. shake to
+-- build individual Agda modules. The problem with that is that some
+-- parts need to be in the TCM Monad, which doesn't easily work in
+-- shake. We would need a way to extract the information out of the
+-- TCM monad, so that we can pass it to the compilation function
+-- without pulling in the TCM Monad. Another minor problem might be
+-- error reporting?
+
 module Agda.Compiler.UHC.Compiler(compilerMain) where
 
 #if __GLASGOW_HASKELL__ <= 708
@@ -118,7 +121,7 @@
                      then imports
                      else agdaPrimInter : imports
 
-    reportSLn "" 1 $
+    reportSLn "compile.uhc" 1 $
       "Compiling: " ++ show (iModuleName i)
     code <- compileDefns modNm (map iModuleName imports') i
     crFile <- corePath modNm
@@ -155,7 +158,7 @@
 
     crMod <- FAgda.fromAgdaModule modNm curModImps iface
 
-    reportSLn "uhc" 10 $ "Done generating Core for \"" ++ show modNm ++ "\"."
+    reportSLn "compile.uhc" 10 $ "Done generating Core for \"" ++ show modNm ++ "\"."
     return crMod
 
 writeCoreFile :: String -> UB.CModule -> TCM ()
@@ -165,11 +168,11 @@
   -- dump textual core, useful for debugging.
   when useTextual (do
     let f' = replaceExtension f ".dbg.tcr"
-    reportSLn "uhc" 10 $ "Writing textual core to \"" ++ show f' ++ "\"."
+    reportSLn "compile.uhc" 10 $ "Writing textual core to \"" ++ show f' ++ "\"."
     liftIO $ putPPFile f' (UB.printModule defaultEHCOpts cmod) 200
     )
 
-  reportSLn "uhc" 10 $ "Writing binary core to \"" ++ show f ++ "\"."
+  reportSLn "compile.uhc" 10 $ "Writing binary core to \"" ++ show f ++ "\"."
   liftIO $ putSerializeFile f cmod
 
 -- | Create the UHC Core main file, which calls the Agda main function
@@ -194,8 +197,12 @@
 
     liftIO . setCurrentDirectory =<< compileDir
 
-    -- TODO drop the RTS args as soon as we don't need the additional memory anymore
-    callUHC1 $  ["--pkg-hide-all", "--pkg-expose=uhcbase", "--pkg-expose=base"
+    -- TODO drop the RTS args as soon as we don't need the additional
+    -- memory anymore
+    callUHC1 $  [ "--pkg-hide-all"
+                , "--pkg-expose=uhcbase"
+                , "--pkg-expose=base"
+                , "UHC/Agda/double.c"
                 ] ++ extraOpts ++ allFps ++ ["+RTS", "-K50m", "-RTS"]
 
 callUHC1 :: [String] -> TCM ()
diff --git a/src/full/Agda/Compiler/UHC/FromAgda.hs b/src/full/Agda/Compiler/UHC/FromAgda.hs
--- a/src/full/Agda/Compiler/UHC/FromAgda.hs
+++ b/src/full/Agda/Compiler/UHC/FromAgda.hs
@@ -1,6 +1,4 @@
 {-# LANGUAGE CPP             #-}
-{-# LANGUAGE DoAndIfThenElse #-}
-{-# LANGUAGE PatternGuards   #-}
 
 -- | Convert from Agda's internal representation to UHC Core via Treeless.
 --
@@ -77,7 +75,7 @@
   let defs = sortDefs $ iSignature iface ^. sigDefinitions
 
   runCompileT modNm (do
-    lift $ reportSLn "uhc" 10 "Translate datatypes..."
+    lift $ reportSLn "compile.uhc" 10 "Translate datatypes..."
 
     funs' <- concat <$> mapM translateDefn defs
     let funs = mkLetRec funs' (mkInt opts 0)
@@ -119,14 +117,14 @@
         (\x -> [x]) <$> mkIdentityFun n "coind-flat" 0
     f@(Function{}) | otherwise -> do
         let ty    = (defType defini)
-        lift $ reportSDoc "uhc.fromagda" 5 $ text "compiling fun:" <+> prettyTCM n
-        lift $ reportSDoc "uhc.fromagda" 15 $ text "type:" <+> (text . show) ty
+        lift $ reportSDoc "compile.uhc.fromagda" 5 $ text "compiling fun:" <+> prettyTCM n
+        lift $ reportSDoc "compile.uhc.fromagda" 15 $ text "type:" <+> (text . show) ty
 
         caseMaybeM (lift $ toTreeless n) (pure []) $ \ treeless -> do
           funBody <- convertGuards <$> lift (normalizeNames treeless)
-          lift $ reportSDoc "uhc.fromagda" 30 $ text " compiled treeless fun:" <+> (text . show) funBody
+          lift $ reportSDoc "compile.uhc.fromagda" 30 $ text " compiled treeless fun:" <+> (text . show) funBody
           funBody' <- runTT $ compileTerm funBody
-          lift $ reportSDoc "uhc.fromagda" 30 $ text " compiled UHC Core fun:" <+> (text . show) funBody'
+          lift $ reportSDoc "compile.uhc.fromagda" 30 $ text " compiled UHC Core fun:" <+> (text . show) funBody'
 
           addExports [crName]
           return [mkBind1 crName funBody']
@@ -181,6 +179,7 @@
         (Just expr) -> do
                 expr' <- expr
                 return [mkBind1 crName expr']
+    AbstractDefn -> __IMPOSSIBLE__
   where
     -- | Produces an identity function, optionally ignoring the first n arguments.
     mkIdentityFun :: QName
@@ -279,8 +278,9 @@
           C.CTChar -> mkVar $ primFunNm "primCharEquality"
           C.CTString -> mkVar $ primFunNm "primStringEquality"
           C.CTQName -> mkVar $ primFunNm "primQNameEquality"
-          C.CTData nm | isNat builtinKit' nm -> mkVar $ primFunNm "primIntegerEquality"
-          C.CTData nm | isInt builtinKit' nm -> mkVar $ primFunNm "primIntegerEquality"
+          C.CTFloat -> mkVar $ primFunNm "primFloatEquality"
+          C.CTNat -> mkVar $ primFunNm "primIntegerEquality"
+          C.CTInt -> mkVar $ primFunNm "primIntegerEquality"
           _ -> __IMPOSSIBLE__
 
     C.TUnit -> unit
@@ -344,7 +344,8 @@
 -- we have the same semantics as MAlonzo.
 litToCore (LitFloat _ f) = mkApp (mkVar $ primFunNm "primMkFloat") [mkString opts (show f)]
 litToCore (LitQName _ q) = mkApp (mkVar $ primFunNm "primMkQName")
-                             [mkInteger opts n, mkInteger opts m, mkString opts $ P.prettyShow q]
+                             [mkInteger opts $ fromIntegral n, mkInteger opts $ fromIntegral m,
+                              mkString opts $ P.prettyShow q]
   where NameId n m = nameId $ qnameName q
 litToCore LitMeta{} = __IMPOSSIBLE__
 
@@ -365,8 +366,9 @@
 compilePrim C.PIf  = mkVar $ primFunNm "primIfThenElse"
 compilePrim C.PGeq = mkVar $ primFunNm "primIntegerGreaterOrEqual"
 compilePrim C.PLt  = mkVar $ primFunNm "primIntegerLess"
-compilePrim C.PEq  = mkVar $ primFunNm "primIntegerEquality"
+compilePrim p | C.isPrimEq p = mkVar $ primFunNm "primIntegerEquality"
 compilePrim C.PSeq = mkVar $ primFunNm "primSeq"
+compilePrim _ = __IMPOSSIBLE__
 
 
 createMainModule :: ModuleName -> HsName -> CModule
diff --git a/src/full/Agda/Compiler/UHC/Primitives.hs b/src/full/Agda/Compiler/UHC/Primitives.hs
--- a/src/full/Agda/Compiler/UHC/Primitives.hs
+++ b/src/full/Agda/Compiler/UHC/Primitives.hs
@@ -74,11 +74,13 @@
         -- Float
         , "primShowFloat"
         , "primFloatEquality"
-        , "primFloatLess"
+        , "primFloatNumericalEquality"
+        , "primFloatNumericalLess"
         , "primNatToFloat"
         , "primFloatPlus"
         , "primFloatMinus"
         , "primFloatTimes"
+        , "primFloatNegate"
         , "primFloatDiv"
         , "primFloatSqrt"
         , "primRound"
@@ -87,10 +89,18 @@
         , "primExp"
         , "primLog"
         , "primSin"
+        , "primCos"
+        , "primTan"
+        , "primASin"
+        , "primACos"
+        , "primATan"
+        , "primATan"
+        , "primATan2"
         -- Reflection
         , "primQNameEquality"
         , "primQNameLess"
         , "primShowQName"
+        , "primQNameFixity"
         , "primMetaEquality"
         , "primMetaLess"
         , "primShowMeta"
@@ -102,7 +112,7 @@
             -- lookup refl constructor
             bt <- fromMaybe __IMPOSSIBLE__ <$> (lift $ getBuiltin' builtinRefl)
             let reflNm = case T.ignoreSharing bt of
-                    (T.Con conHd []) -> T.conName conHd
+                    (T.Con conHd _ []) -> T.conName conHd
                     _                -> __IMPOSSIBLE__
 
             mkVar <$> getConstrFun reflNm
diff --git a/src/full/Agda/Compiler/UHC/Smashing.hs b/src/full/Agda/Compiler/UHC/Smashing.hs
deleted file mode 100644
--- a/src/full/Agda/Compiler/UHC/Smashing.hs
+++ /dev/null
@@ -1,164 +0,0 @@
-
-
-{-# LANGUAGE CPP #-}
-
--- DISABLED - NOT USED ANYMORE
-
--- | Smash functions which return something that can be inferred
---   (something of a type with only one element)
-
-module Agda.Compiler.UHC.Smashing where
-
-import Control.Monad.State
-import Control.Monad.Trans.Maybe
-
-import Data.List
-import Data.Maybe
-
-import Data.Set (Set)
-import qualified Data.Set as Set
-
-import Agda.Syntax.Common
-import Agda.Syntax.Internal as SI
-import Agda.TypeChecking.Monad
-import Agda.TypeChecking.Substitute
-import Agda.TypeChecking.Telescope
-import Agda.TypeChecking.Pretty
-import Agda.TypeChecking.Reduce
-
---import Agda.Compiler.UHC.AuxAST as AA
---import Agda.Compiler.UHC.Transform
---import Agda.Compiler.UHC.Naming
-
-import Agda.Utils.Lens
-
-#if __GLASGOW_HASKELL__ <= 708
-import Agda.Utils.Monad
-#endif
-
-import Agda.Utils.Size
-import qualified Agda.Utils.HashMap as HM
-
-#include "undefined.h"
-import Agda.Utils.Impossible
-
-{-
-type SmashT m = FreshNameT (TransformT m)
-
-defnPars :: Integral n => Defn -> n
-defnPars (Record      {recPars = p}) = fromIntegral p
-defnPars (Constructor {conPars = p}) = fromIntegral p
-defnPars _                           = 0
-
-smash'em :: Transform
-smash'em amod = do
-  fs' <- smashFuns (xmodFunDefs amod)
-  return $ (amod { xmodFunDefs = fs' })
-
--- | Main function, smash as much as possible
-smashFuns :: [Fun] -> TransformT TCM [Fun]
-smashFuns funs = do
-    defs <- (sigDefinitions <$> use stImports)
-    funs' <- evalFreshNameT "nl.uu.agda.smashing" $ forM funs $ \f -> case f of
-      AA.Fun{} -> case xfunQName f >>= flip HM.lookup defs of
-
-          Just (def@(Defn {theDef = (Function { funSmashable = True })})) -> do
-              reportSLn "uhc.smashing" 10 $ "running on:" ++ (show (xfunQName f))
-              minfered <- runMaybeT $ smashable (length (xfunArgs f) + defnPars (theDef def)) (defType def)
-              case minfered of
-                  Just infered -> do
-                      reportSDoc "smashing" 5 $ vcat
-                        [ prettyTCM (defName def) <+> text "is smashable"]
-                      return f { xfunExpr = infered
-                               , xfunInline = True
-                               , xfunComment = xfunComment f ++ " [SMASHED]"
-                               }
-                  Nothing -> return f
-          _ -> do
-              reportSDoc "uhc.smashing" 10 $ vcat
-                [ (text . show) f <+> text " was not found or is not eligible for smashing."]
-              return f
-      _ -> do
-        reportSLn "uhc.smashing" 10 $ "smashing!"
-        return f
-    return funs'
-
-fail' :: Monad m => MaybeT m a
-fail' = fail ""
-
-(+++) :: Telescope -> Telescope -> Telescope
-xs +++ ys = unflattenTel names $ map (raise (size ys)) (flattenTel xs) ++ flattenTel ys
-  where names = teleNames xs ++ teleNames ys
-
--- | Can a datatype be inferred? If so, return the only possible value.
-inferable :: Set QName -> QName -> [SI.Arg Term] ->  MaybeT (SmashT TCM) Expr
-inferable visited dat _    | dat `Set.member` visited = fail'
-inferable visited dat args = do
-  reportSLn "uhc.smashing" 10 $ "  inferring:" ++ (show dat)
-  defs <- sigDefinitions <$> use stImports
-  let def = fromMaybe __IMPOSSIBLE__ $ HM.lookup dat defs
-  case theDef def of
-      d@Datatype{} -> do
-          case dataCons d of
-            [c] -> inferableArgs c (dataPars d)
-            _   -> fail'
-      r@Record{}   -> inferableArgs (recCon r) (recPars r)
-      (Function{ funSmashable = True }) -> do
-        term <- liftTCM $ normalise $ Def dat $ map SI.Apply args
-        inferableTerm visited' term
-      d -> do
-        reportSLn "uhc.smashing" 10 $ "  failed (inferable): " ++ (show d)
-        fail'
-  where
-    inferableArgs :: QName -> Nat -> MaybeT (SmashT TCM) Expr
-    inferableArgs c pars = do
-        reportSLn "uhc.smashing" 10 $ "  inferring args for: " ++ show c
-        defs <- sigDefinitions <$> use stImports
-        let def = fromMaybe __IMPOSSIBLE__ $ HM.lookup c defs
-        TelV tel _ <- liftTCM $ telView (defType def `apply` genericTake pars args)
-        reportSDoc "uhc.smashing" 10 $ nest 2 $ vcat
-          [ text "inferableArgs!"
-          , text "tele" <+> prettyTCM tel
-          , text "constr:" <+> prettyTCM c
-          ]
-        conFun <- lift $ lift $ getConstrFun c
-        (apps1 conFun <$>) $ forM (flattenTel tel) (inferableTerm visited' . unEl . unDom)
-    visited' = Set.insert dat visited
-
-inferableTerm :: Set QName -> Term -> MaybeT (SmashT TCM) Expr
-inferableTerm visited t = do
-  case ignoreSharing t of
-    Def q es    ->
-      case allApplyElims es of
-        Just vs -> inferable visited q vs
-        Nothing -> fail'
-    Pi _   b    -> do
-        t' <- inferableTerm visited (unEl $ unAbs b)
-        lift $ buildLambda 1 t'
-    Sort {}     -> return AA.UNIT
-    t'          -> do
-      reportSLn "uhc.smashing" 10 $ "  failed to infer: " ++ show t'
-      fail'
-
--- | Find the only possible value for a certain type. If we fail return Nothing
-smashable :: Int -> Type -> MaybeT (SmashT TCM) Expr
-smashable origArity typ = do
-    TelV tele retType <- liftTCM $ telView typ
-    retType' <- return retType
-
-    inf <- inferableTerm Set.empty (unEl retType')
-    reportSDoc "uhc.smashing" 10 $ nest 2 $ vcat
-      [ text "Result is"
-      , text "inf: " <+> (text . show) inf
-      , text "type: " <+> prettyTCM retType'
-      ]
-    lift $ buildLambda (size tele - origArity) inf
-
-buildLambda :: Int -> Expr -> SmashT TCM Expr
-buildLambda n e | n <= 0    = return e
-buildLambda n e | otherwise = do
-  v <- freshLocalName
-  e' <- buildLambda (n - 1) e
-  return $ AA.Lam v e'
-
--}
diff --git a/src/full/Agda/Interaction/BasicOps.hs b/src/full/Agda/Interaction/BasicOps.hs
--- a/src/full/Agda/Interaction/BasicOps.hs
+++ b/src/full/Agda/Interaction/BasicOps.hs
@@ -1,10 +1,5 @@
 {-# LANGUAGE CPP                   #-}
-{-# LANGUAGE DeriveFunctor         #-}
-{-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE FlexibleContexts      #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE ScopedTypeVariables   #-}
-{-# LANGUAGE TupleSections         #-}
 {-# LANGUAGE UndecidableInstances  #-}
 
 {-# OPTIONS_GHC -fno-warn-orphans #-}
@@ -29,10 +24,12 @@
 import Agda.Syntax.Position
 import Agda.Syntax.Abstract as A hiding (Open, Apply, Assign)
 import Agda.Syntax.Abstract.Views as A
+import Agda.Syntax.Abstract.Pretty
 import Agda.Syntax.Common
 import Agda.Syntax.Info (ExprInfo(..),MetaInfo(..),emptyMetaInfo,exprNoRange)
 import qualified Agda.Syntax.Info as Info
 import Agda.Syntax.Internal as I
+import Agda.Syntax.Literal
 import Agda.Syntax.Translation.InternalToAbstract
 import Agda.Syntax.Translation.AbstractToConcrete
 import Agda.Syntax.Translation.ConcreteToAbstract
@@ -42,6 +39,7 @@
 import Agda.Syntax.Parser
 
 import Agda.TheTypeChecker
+import Agda.TypeChecking.Constraints
 import Agda.TypeChecking.Conversion
 import Agda.TypeChecking.Monad as M hiding (MetaInfo)
 import Agda.TypeChecking.MetaVars
@@ -55,8 +53,11 @@
 import Agda.TypeChecking.Pretty (prettyTCM)
 import Agda.TypeChecking.Free
 import Agda.TypeChecking.CheckInternal
+import Agda.TypeChecking.SizedTypes.Solve
 import qualified Agda.TypeChecking.Pretty as TP
 
+import Agda.Termination.TermCheck (termMutual)
+
 import Agda.Utils.Except ( Error(strMsg), MonadError(catchError, throwError) )
 import Agda.Utils.Functor
 import Agda.Utils.Lens
@@ -75,7 +76,7 @@
 
 parseExpr :: Range -> String -> TCM C.Expr
 parseExpr rng s = do
-  C.ExprWhere e wh <- liftIO $ parsePosString exprWhereParser pos s
+  C.ExprWhere e wh <- runPM $ parsePosString exprWhereParser pos s
   unless (null wh) $ typeError $ GenericError $
     "where clauses are not supported in holes"
   return e
@@ -89,10 +90,10 @@
     e   <- parseExpr rng s
     concreteToAbstract (clScope mi) e
 
-giveExpr :: MetaId -> Expr -> TCM Expr
+giveExpr :: Maybe InteractionId -> MetaId -> Expr -> TCM ()
 -- When translator from internal to abstract is given, this function might return
 -- the expression returned by the type checker.
-giveExpr mi e = do
+giveExpr mii mi e = do
     mv <- lookupMeta mi
     -- In the context (incl. signature) of the meta variable,
     -- type check expression and assign meta
@@ -112,6 +113,7 @@
           TP.text "give: instantiated meta type =" TP.<+> prettyTCM t'
         v <- checkExpr e t'
         case mvInstantiation mv of
+
           InstV xs v' -> unlessM ((Irrelevant ==) <$> asks envRelevance) $ do
             reportSDoc "interaction.give" 20 $ TP.sep
               [ TP.text "meta was already set to value v' = " TP.<+> prettyTCM v'
@@ -130,9 +132,35 @@
               [ TP.text "in meta context, v' = " TP.<+> prettyTCM v'
               ]
             equalTerm t' v v'  -- Note: v' now lives in context of meta
-          _ -> updateMeta mi v
-        reify v
 
+          _ -> do -- updateMeta mi v
+            reportSLn "interaction.give" 20 "give: meta unassigned, assigning..."
+            args <- getContextArgs
+            nowSolvingConstraints $ assign DirEq mi args v
+
+        reportSDoc "interaction.give" 20 $ TP.text "give: meta variable updated!"
+        redoChecks mii
+        wakeupConstraints mi
+        solveSizeConstraints DontDefaultToInfty
+        -- Double check.
+        vfull <- instantiateFull v
+        checkInternal vfull t'
+
+-- | After a give, redo termination etc. checks for function which was complemented.
+redoChecks :: Maybe InteractionId -> TCM ()
+redoChecks Nothing = return ()
+redoChecks (Just ii) = do
+  reportSLn "interaction.give" 20 $
+    "give: redoing termination check for function surrounding " ++ show ii
+  ip <- lookupInteractionPoint ii
+  case ipClause ip of
+    IPNoClause -> return ()
+    IPClause f _ _ -> do
+      mb <- mutualBlockOf f
+      terErrs <- local (\ e -> e { envMutualBlock = Just mb }) $ termMutual []
+      unless (null terErrs) $ typeError $ TerminationCheckFailed terErrs
+  -- TODO redo positivity check!
+
 -- | Try to fill hole by expression.
 --
 --   Returns the given expression unchanged
@@ -149,11 +177,10 @@
   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
-  _ <- catchError (giveExpr mi e) $ \ err -> case err of
+  catchError (giveExpr (Just ii) mi e) $ \ err -> case err of
     -- Turn PatternErr into proper error:
-    PatternErr{} -> do
-      err <- withInteractionId ii $ TP.text "Failed to give" TP.<+> prettyTCM e
-      typeError $ GenericError $ show err
+    PatternErr{} -> typeError . GenericDocError =<< do
+      withInteractionId ii $ TP.text "Failed to give" TP.<+> prettyTCM e
     _ -> throwError err
   removeInteractionPoint ii
   return e
@@ -192,7 +219,7 @@
         appMeta e = do
           let rng = rightMargin r -- Andreas, 2013-05-01 conflate range to its right margin to ensure that appended metas are last in numbering.  This fixes issue 841.
           -- Make new interaction point
-          ii <- registerInteractionPoint rng Nothing
+          ii <- registerInteractionPoint False rng Nothing
           let info = Info.MetaInfo
                 { Info.metaRange = rng
                 , Info.metaScope = scope { scopePrecedence = ArgumentCtx }
@@ -241,15 +268,35 @@
 data Rewrite =  AsIs | Instantiated | HeadNormal | Simplified | Normalised
     deriving (Read)
 
-normalForm :: Rewrite -> Type -> TCM Type
+normalForm :: (Reduce t, Simplify t, Normalise t) => Rewrite -> t -> TCM t
 normalForm AsIs         t = return t
 normalForm Instantiated t = return t   -- reify does instantiation
 normalForm HeadNormal   t = {- etaContract =<< -} reduce t
 normalForm Simplified   t = {- etaContract =<< -} simplify t
 normalForm Normalised   t = {- etaContract =<< -} normalise t
 
+data ComputeMode = DefaultCompute | IgnoreAbstract | UseShowInstance
+  deriving (Read, Eq)
 
-data OutputForm a b = OutputForm Range ProblemId (OutputConstraint a b)
+computeIgnoreAbstract :: ComputeMode -> Bool
+computeIgnoreAbstract DefaultCompute  = False
+computeIgnoreAbstract IgnoreAbstract  = True
+computeIgnoreAbstract UseShowInstance = True
+  -- UseShowInstance requires the result to be a string literal so respecting
+  -- abstract can only ever break things.
+
+computeWrapInput :: ComputeMode -> String -> String
+computeWrapInput UseShowInstance s = "show (" ++ s ++ ")"
+computeWrapInput _               s = s
+
+showComputed :: ComputeMode -> Expr -> TCM Doc
+showComputed UseShowInstance e =
+  case e of
+    A.Lit (LitString _ s) -> pure (text s)
+    _                     -> (text "Not a string:" $$) <$> prettyATop e
+showComputed _ e = prettyATop e
+
+data OutputForm a b = OutputForm Range [ProblemId] (OutputConstraint a b)
   deriving (Functor)
 
 data OutputConstraint a b
@@ -295,13 +342,21 @@
       FindInScopeOF _ _ _        -> __IMPOSSIBLE__
 
 instance Reify ProblemConstraint (Closure (OutputForm Expr Expr)) where
-  reify (PConstr pids cl) = enterClosure cl $ \c -> buildClosure =<< (OutputForm (getRange c) (last pids) <$> reify c)
+  reify (PConstr pids cl) = enterClosure cl $ \c -> buildClosure =<< (OutputForm (getRange c) pids <$> reify c)
 
+reifyElimToExpr :: I.Elim -> TCM Expr
+reifyElimToExpr e = case e of
+    I.Apply v -> appl "apply" <$> reify v
+    I.Proj _o f -> appl "proj" <$> reify ((defaultArg $ I.Def f []) :: Arg Term)
+  where
+    appl :: String -> Arg Expr -> Expr
+    appl s v = A.App exprNoRange (A.Lit (LitString noRange s)) $ fmap unnamed v
+
 instance Reify Constraint (OutputConstraint Expr Expr) where
     reify (ValueCmp cmp t u v)   = CmpInType cmp <$> reify t <*> reify u <*> reify v
     reify (ElimCmp cmp t v es1 es2) =
-      CmpElim cmp <$> reify t <*> reify es1
-                              <*> reify es2
+      CmpElim cmp <$> reify t <*> mapM reifyElimToExpr es1
+                              <*> mapM reifyElimToExpr es2
     reify (LevelCmp cmp t t')    = CmpLevels cmp <$> reify t <*> reify t'
     reify (TypeCmp cmp t t')     = CmpTypes cmp <$> reify t <*> reify t'
     reify (TelCmp a b cmp t t')  = CmpTeles cmp <$> (ETel <$> reify t) <*> (ETel <$> reify t')
@@ -336,12 +391,11 @@
               OfType tac <$> reify goal
           Open{}  -> __IMPOSSIBLE__
           OpenIFS{}  -> __IMPOSSIBLE__
-          InstS{} -> __IMPOSSIBLE__
           InstV{} -> __IMPOSSIBLE__
     reify (FindInScope m _b mcands) = FindInScopeOF
       <$> (reify $ MetaV m [])
       <*> (reify =<< getMetaType m)
-      <*> (forM (fromMaybe [] mcands) $ \ (Candidate tm ty eti) -> do
+      <*> (forM (fromMaybe [] mcands) $ \ (Candidate tm ty eti _) -> do
             (,) <$> reify tm <*> reify ty)
     reify (IsEmpty r a) = IsEmptyType <$> reify a
     reify (CheckSizeLtSat a) = SizeLtSat  <$> reify a
@@ -355,8 +409,8 @@
 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 -> "[" ++ prettyShow pid ++ "] " ++ show c ++ range r
+      OutputForm r []   c -> show c ++ range r
+      OutputForm r pids c -> show pids ++ " " ++ show c ++ range r
     where
       range r | null s    = ""
               | otherwise = " [ at " ++ s ++ " ]"
@@ -433,14 +487,14 @@
     cs <- forM cs $ \c -> do
             cl <- reify c
             enterClosure cl abstractToConcrete_
-    ss <- mapM toOutputForm =<< getSolvedInteractionPoints True -- get all
+    ss <- mapM toOutputForm =<< getSolvedInteractionPoints True AsIs -- get all
     return $ ss ++ cs
   where
     toOutputForm (ii, mi, e) = do
       mv <- getMetaInfo <$> lookupMeta mi
       withMetaInfo mv $ do
         let m = QuestionMark emptyMetaInfo{ metaNumber = Just $ fromIntegral ii } ii
-        abstractToConcrete_ $ OutputForm noRange 0 $ Assign m e
+        abstractToConcrete_ $ OutputForm noRange [] $ Assign m e
 
 -- | @getSolvedInteractionPoints True@ returns all solutions,
 --   even if just solved by another, non-interaction meta.
@@ -448,8 +502,8 @@
 --   @getSolvedInteractionPoints False@ only returns metas that
 --   are solved by a non-meta.
 
-getSolvedInteractionPoints :: Bool -> TCM [(InteractionId, MetaId, Expr)]
-getSolvedInteractionPoints all = concat <$> do
+getSolvedInteractionPoints :: Bool -> Rewrite -> TCM [(InteractionId, MetaId, Expr)]
+getSolvedInteractionPoints all norm = concat <$> do
   mapM solution =<< getInteractionIdsAndMetas
   where
     solution (i, m) = do
@@ -462,12 +516,11 @@
               v <- ignoreSharing <$> instantiate v
               let isMeta = case v of MetaV{} -> True; _ -> False
               if isMeta && not all then return [] else do
-                e <- reify v
+                e <- reify =<< normalForm norm v
                 return [(i, m, ScopedExpr scope e)]
             unsol = return []
         case mvInstantiation mv of
           InstV{}                        -> sol (MetaV m $ map Apply args)
-          InstS{}                        -> sol (Level $ Max [Plus 0 $ MetaLevel m $ map Apply args])
           Open{}                         -> unsol
           OpenIFS{}                      -> unsol
           BlockedConst{}                 -> unsol
@@ -522,7 +575,6 @@
   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
@@ -530,8 +582,9 @@
 
 metaHelperType :: Rewrite -> InteractionId -> Range -> String -> TCM (OutputConstraint' Expr Expr)
 metaHelperType norm ii rng s = case words s of
-  []    -> fail "C-c C-h expects an argument of the form f e1 e2 .. en"
+  []    -> failure
   f : _ -> do
+    ensureName f
     A.Application h args <- A.appView . getBody . deepUnscope <$> parseExprIn ii rng ("let " ++ f ++ " = _ in " ++ s)
     withInteractionId ii $ do
       cxtArgs  <- getContextArgs
@@ -546,8 +599,29 @@
           (delta1, delta2, _, a', as', vs') = splitTelForWith tel a (map OtherType as) vs
       a <- local (\e -> e { envPrintDomainFreePi = True }) $ do
         reify =<< cleanupType arity args =<< normalForm norm =<< fst <$> withFunctionType delta1 vs' as' delta2 a'
+      reportSDoc "interaction.helper" 10 $ TP.vcat
+        [ TP.text "generating helper function"
+        , TP.nest 2 $ TP.text "tel    = " TP.<+> inTopContext (prettyTCM tel)
+        , TP.nest 2 $ TP.text "a      = " TP.<+> prettyTCM a
+        , TP.nest 2 $ TP.text "vs     = " TP.<+> prettyTCM vs
+        , TP.nest 2 $ TP.text "as     = " TP.<+> prettyTCM as
+        , TP.nest 2 $ TP.text "delta1 = " TP.<+> inTopContext (prettyTCM delta1)
+        , TP.nest 2 $ TP.text "delta2 = " TP.<+> inTopContext (addContext delta1 $ prettyTCM delta2)
+        , TP.nest 2 $ TP.text "a'     = " TP.<+> inTopContext (addContext delta1 $ addContext delta2 $ prettyTCM a')
+        , TP.nest 2 $ TP.text "as'    = " TP.<+> inTopContext (addContext delta1 $ prettyTCM as')
+        , TP.nest 2 $ TP.text "vs'    = " TP.<+> inTopContext (addContext delta1 $ prettyTCM vs')
+        ]
       return (OfType' h a)
   where
+    failure = typeError $ GenericError $ "Expected an argument of the form f e1 e2 .. en"
+    ensureName f = do
+      ce <- parseExpr rng f
+      case ce of
+        C.Ident{} -> return ()
+        C.RawApp _ [C.Ident{}] -> return ()
+        _ -> do
+         reportSLn "interaction.helper" 10 $ "ce = " ++ show ce
+         failure
     cleanupType arity args t = do
       -- Get the arity of t
       TelV ttel _ <- telView t
@@ -593,7 +667,7 @@
     onNamesTm f v = case v of
       I.Var x es   -> I.Var x <$> onNamesElims f es
       I.Def q es   -> I.Def q <$> onNamesElims f es
-      I.Con c args -> I.Con c <$> onNamesArgs f args
+      I.Con c ci args -> I.Con c ci <$> onNamesArgs f args
       I.Lam i b    -> I.Lam i <$> onNamesAbs f onNamesTm b
       I.Pi a b     -> I.Pi <$> traverse (onNames f) a <*> onNamesAbs f onNames b
       I.DontCare v -> I.DontCare <$> onNamesTm f v
@@ -706,10 +780,10 @@
           I.Def d _ -> do
             def <- getConstInfo d
             case theDef def of
-              Datatype{}    -> addCtxTel tel' $ introData t
+              Datatype{}    -> addContext tel' $ introData t
               Record{ recNamedCon = name }
-                | name      -> addCtxTel tel' $ introData t
-                | otherwise -> addCtxTel tel' $ introRec d
+                | name      -> addContext tel' $ introData t
+                | otherwise -> addContext tel' $ introRec d
               _ -> fallback
           _ -> fallback
      `catchError` \_ -> return []
@@ -720,7 +794,7 @@
 
     showTCM v = show <$> prettyTCM v
 
-    introFun tel = addCtxTel tel' $ do
+    introFun tel = addContext tel' $ do
         reportSDoc "interaction.intro" 10 $ do TP.text "introFun" TP.<+> prettyTCM (telFromList tel)
         imp <- showImplicitArguments
         let okHiding0 h = imp || h == NotHidden
@@ -746,7 +820,7 @@
 
     introData t = do
       let tel  = telFromList [defaultDom ("_", t)]
-          pat  = [defaultArg $ unnamed $ I.VarP (0,"c")]
+          pat  = [defaultArg $ unnamed $ debruijnNamedVar "c" 0]
       r <- splitLast CoInductive tel pat
       case r of
         Left err -> return []
diff --git a/src/full/Agda/Interaction/CommandLine.hs b/src/full/Agda/Interaction/CommandLine.hs
--- a/src/full/Agda/Interaction/CommandLine.hs
+++ b/src/full/Agda/Interaction/CommandLine.hs
@@ -159,8 +159,8 @@
         mapM_ (liftIO . putStrLn) =<< mapM showII interactionMetas
         mapM_ print' hiddenMetas
     where
-        showII o = withInteractionId (outputFormId $ OutputForm noRange 0 o) $ showA o
-        showM  o = withMetaId (nmid $ outputFormId $ OutputForm noRange 0 o) $ showA o
+        showII o = withInteractionId (outputFormId $ OutputForm noRange [] o) $ showA o
+        showM  o = withMetaId (nmid $ outputFormId $ OutputForm noRange [] o) $ showA o
 
         metaId (OfType i _) = i
         metaId (JustType i) = i
@@ -188,7 +188,7 @@
         let pos = case rStart r of
                     Nothing  -> __IMPOSSIBLE__
                     Just pos -> pos
-        e <- liftIO $ parsePosString exprParser pos s
+        e <- runPM $ parsePosString exprParser pos s
         concreteToAbstract scope e
 
 actOnMeta :: [String] -> (InteractionId -> A.Expr -> TCM a) -> TCM a
@@ -228,7 +228,7 @@
 
 parseExpr :: String -> TCM A.Expr
 parseExpr s = do
-    e <- liftIO $ parse exprParser s
+    e <- runPM $ parse exprParser s
     localToAbstract e return
 
 evalTerm :: String -> TCM (ExitCode a)
diff --git a/src/full/Agda/Interaction/EmacsCommand.hs b/src/full/Agda/Interaction/EmacsCommand.hs
--- a/src/full/Agda/Interaction/EmacsCommand.hs
+++ b/src/full/Agda/Interaction/EmacsCommand.hs
@@ -1,4 +1,3 @@
-{-# LANGUAGE FlexibleInstances #-}
 
 ------------------------------------------------------------------------
 -- | Code for instructing Emacs to do things
@@ -9,7 +8,9 @@
   , response
   , putResponse
   , display_info'
+  , display_warning
   , clearRunningInfo
+  , clearWarning
   , displayRunningInfo
   ) where
 
@@ -60,19 +61,25 @@
 putResponse :: Lisp String -> IO ()
 putResponse = putStr . response
 
--- | @display_info' append header content@ displays @content@ (with
--- header @header@) in some suitable way. If @append@ is @True@, then
--- the content is appended to previous content (if any), otherwise any
--- previous content is deleted.
+-- | @displayInBuffer buffername append header content@ displays @content@
+-- (with header @header@) in some suitable way in the buffer @buffername@.
+-- If @append@ is @True@, then the content is appended to previous content
+-- (if any), otherwise any previous content is deleted.
 
-display_info' :: Bool -> String -> String -> Lisp String
-display_info' append bufname content =
-    L [ A "agda2-info-action"
-      , A (quote bufname)
+displayInBuffer :: String -> Bool -> String -> String -> Lisp String
+displayInBuffer buffername append header content =
+    L [ A buffername
+      , A (quote header)
       , A (quote content)
       , A (if append then "t" else "nil")
       ]
 
+display_info' :: Bool -> String -> String -> Lisp String
+display_info' = displayInBuffer "agda2-info-action"
+
+display_warning :: String -> String -> Lisp String
+display_warning = displayInBuffer "agda2-warning-action" False
+
 ------------------------------------------------------------------------
 -- Running info
 
@@ -86,6 +93,10 @@
 clearRunningInfo :: Lisp String
 clearRunningInfo =
     display_info' False runningInfoBufferName ""
+
+-- | Clear the warning buffer
+clearWarning :: Lisp String
+clearWarning = L [ A "agda2-close-warning" ]
 
 -- | Display running information about what the type-checker is up to.
 
diff --git a/src/full/Agda/Interaction/EmacsTop.hs b/src/full/Agda/Interaction/EmacsTop.hs
--- a/src/full/Agda/Interaction/EmacsTop.hs
+++ b/src/full/Agda/Interaction/EmacsTop.hs
@@ -1,5 +1,4 @@
 -- {-# LANGUAGE CPP #-}
-{-# LANGUAGE FlexibleInstances #-}
 
 module Agda.Interaction.EmacsTop
     ( mimicGHCi
@@ -28,7 +27,7 @@
 import Agda.Interaction.Highlighting.Emacs
 import Agda.Interaction.Options
 
-import Agda.Version
+import Agda.VersionCommit
 
 ----------------------------------
 
@@ -88,9 +87,34 @@
 lispifyResponse (Resp_DisplayInfo info) = return $ case info of
     Info_CompilationOk -> f "The module was successfully compiled." "*Compilation result*"
     Info_Constraints s -> f s "*Constraints*"
-    Info_AllGoals s -> f s "*All Goals*"
+    Info_AllGoalsWarnings g  w e -> f body ("*All" ++ title ++ "*")
+      where
+        isG = not $ null g
+        isW = not $ null w
+        isE = not $ null e
+        title = intercalate "," $ catMaybes
+                  [ " Goals"    <$ guard isG
+                  , " Warnings" <$ guard isW
+                  , " Errors"   <$ guard isE
+                  , " Done"     <$ guard (not (isG || isW || isE))
+                  ]
+        delimiter s = concat [ replicate 4 '\x2014'
+                             , " ", s, " "
+                             , replicate (54 - length s) '\x2014'
+                             ]
+
+        body = intercalate "\n" $ catMaybes
+                 [ g                    <$ guard isG
+                 , delimiter "Warnings" <$ guard (isW && (isG || isE))
+                 , w                    <$ guard isW
+                 , delimiter "Errors"   <$ guard (isE && (isG || isW))
+                 , e                    <$ guard isE
+                 ]
     Info_Auto s -> f s "*Auto*"
     Info_Error s -> f s "*Error*"
+    -- FNF: if Info_Warning comes back into use, the above should be
+    -- clearWarning : f s "*Error*"
+    --Info_Warning s -> [ display_warning "*Errors*" s ] -- FNF: currently unused
     Info_Time s -> f (render s) "*Time*"
     Info_NormalForm s -> f (render s) "*Normal Form*"   -- show?
     Info_InferredType s -> f (render s) "*Inferred Type*"
@@ -107,10 +131,12 @@
                                  ]
                              ]
     Info_Intro s -> f (render s) "*Intro*"
-    Info_Version -> f ("Agda version " ++ version) "*Agda Version*"
+    Info_Version -> f ("Agda version " ++ versionWithCommitInfo) "*Agda Version*"
   where f content bufname = [ display_info' False bufname content ]
 lispifyResponse Resp_ClearHighlighting = return [ L [ A "agda2-highlight-clear" ] ]
 lispifyResponse Resp_ClearRunningInfo = return [ clearRunningInfo ]
+-- FNF: if Info_Warning comes back into use, the above should be
+-- return [ clearRunningInfo, clearWarning ]
 lispifyResponse (Resp_RunningInfo n s)
   | n <= 1    = return [ displayRunningInfo s ]
   | otherwise = return [ L [A "agda2-verbose", A (quote s)] ]
diff --git a/src/full/Agda/Interaction/Exceptions.hs b/src/full/Agda/Interaction/Exceptions.hs
deleted file mode 100644
--- a/src/full/Agda/Interaction/Exceptions.hs
+++ /dev/null
@@ -1,21 +0,0 @@
-{-| This module defines the exception handler.
--}
-module Agda.Interaction.Exceptions where
-
-import Prelude
-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 -> Doc -> IO a) -> IO a -> IO a
-failOnException h m = m `E.catch` handleParseException handler
-    where
-        handler x = h (getRange x) (pretty x)
diff --git a/src/full/Agda/Interaction/FindFile.hs b/src/full/Agda/Interaction/FindFile.hs
--- a/src/full/Agda/Interaction/FindFile.hs
+++ b/src/full/Agda/Interaction/FindFile.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 ------------------------------------------------------------------------
 -- | Functions which map between module names and file names.
 --
@@ -13,32 +14,50 @@
   , findInterfaceFile
   , checkModuleName
   , moduleName', moduleName
-  , tests
+  , rootNameModule
+  , replaceModuleExtension
   ) where
 
-import Control.Applicative
+import Prelude hiding (null)
+
+import Control.Applicative hiding (empty)
 import Control.Monad
 import Control.Monad.Trans
-import Data.List
+import Data.List hiding (null)
+import Data.Maybe (catMaybes)
 import qualified Data.Map as Map
 import System.FilePath
 
+import Agda.Syntax.Common
 import Agda.Syntax.Concrete
 import Agda.Syntax.Parser
+import Agda.Syntax.Parser.Literate (literateExts, literateExtsShortList)
+import Agda.Syntax.Position
+
 import Agda.TypeChecking.Monad.Base
+import Agda.TypeChecking.Monad.Trace
 import Agda.TypeChecking.Monad.Benchmark (billTo)
 import qualified Agda.TypeChecking.Monad.Benchmark as Bench
 import {-# SOURCE #-} Agda.TypeChecking.Monad.Options (getIncludeDirs)
+
 import Agda.Utils.Except
 import Agda.Utils.FileName
 import Agda.Utils.Lens
+import Agda.Utils.Null
 
+#include "undefined.h"
+import Agda.Utils.Impossible
+
 -- | Converts an Agda file name to the corresponding interface file
 -- name.
 
 toIFile :: AbsolutePath -> AbsolutePath
-toIFile f = mkAbsolute (replaceExtension (filePath f) ".agdai")
+toIFile = replaceModuleExtension ".agdai"
 
+replaceModuleExtension :: String -> AbsolutePath -> AbsolutePath
+replaceModuleExtension ext@('.':_) = mkAbsolute . (++ ext) .  dropAgdaExtension . filePath
+replaceModuleExtension ext = replaceModuleExtension ('.':ext)
+
 -- | Errors which can arise when trying to find a source file.
 --
 -- Invariant: All paths are absolute.
@@ -98,18 +117,20 @@
   case Map.lookup m modFile of
     Just f  -> return (Right f, modFile)
     Nothing -> do
-      files <- mapM absolute
-                    [ filePath dir </> file
-                    | dir  <- dirs
-                    , file <- map (moduleNameToFileName m)
-                                  [".agda", ".lagda"]
-                    ]
+      files <- fileList sourceFileExts
+      filesShortList <- fileList sourceFileExtsShortList
       existingFiles <-
         liftIO $ filterM (doesFileExistCaseSensitive . filePath) files
       return $ case nub existingFiles of
-        []     -> (Left (NotFound files), modFile)
+        []     -> (Left (NotFound filesShortList), modFile)
         [file] -> (Right file, Map.insert m file modFile)
-        files  -> (Left (Ambiguous files), modFile)
+        files  -> (Left (Ambiguous existingFiles), modFile)
+  where
+    fileList exts = mapM absolute
+                    [ filePath dir </> file
+                    | dir  <- dirs
+                    , file <- map (moduleNameToFileName m) exts
+                    ]
 
 -- | Finds the interface file corresponding to a given top-level
 -- module name. The returned paths are absolute.
@@ -128,18 +149,25 @@
 -- corresponding to the module name (according to the include path)
 -- has to be the same as the given file name.
 
-checkModuleName :: TopLevelModuleName
-                   -- ^ The name of the module.
-                -> AbsolutePath
-                   -- ^ The file from which it was loaded.
-                -> TCM ()
-checkModuleName name file = do
-  moduleShouldBeIn <- findFile' name
-  case moduleShouldBeIn of
+checkModuleName
+  :: TopLevelModuleName
+     -- ^ The name of the module.
+  -> AbsolutePath
+     -- ^ The file from which it was loaded.
+  -> Maybe TopLevelModuleName
+     -- ^ The expected name, coming from an import statement.
+  -> TCM ()
+checkModuleName name file mexpected = do
+  findFile' name >>= \case
+
     Left (NotFound files)  -> typeError $
-                                ModuleNameDoesntMatchFileName name files
+      case mexpected of
+        Nothing       -> ModuleNameDoesntMatchFileName name files
+        Just expected -> ModuleNameUnexpected name expected
+
     Left (Ambiguous files) -> typeError $
-                                AmbiguousTopLevelModuleName name files
+      AmbiguousTopLevelModuleName name files
+
     Right file' -> do
       file <- liftIO $ absolute (filePath file)
       if file === file' then
@@ -151,21 +179,43 @@
 --
 --   Warning! Parses the whole file to get the module name out.
 --   Use wisely!
+--
+--   No side effects!  Only in 'TCM' to raise errors.
 
-moduleName' :: AbsolutePath -> TCM TopLevelModuleName
+moduleName' :: AbsolutePath -> TCM (Ranged TopLevelModuleName)
 moduleName' file = billTo [Bench.ModuleName] $ do
-  name <- topLevelModuleName <$> liftIO (parseFile' moduleParser file)
+  q <- runPM (parseFile' moduleParser file)
+  let name = topLevelModuleName q
   case name of
     TopLevelModuleName ["_"] -> do
-      _ <- liftIO (parse moduleNameParser defaultName)
+      q <- runPM (parse moduleNameParser defaultName)
              `catchError` \_ ->
            typeError $
-             GenericError $ "Invalid file name: " ++ show file ++ "."
-      return $ TopLevelModuleName [defaultName]
-    _ -> return name
+             GenericError $ "File name " ++ show file ++
+               " is invalid as it does not correspond to a valid module name."
+      return $ Ranged (getRange q) $ TopLevelModuleName [defaultName]
+    _ -> return $ Ranged (getRange q) name
   where
-    defaultName = rootName file
+    defaultName = rootNameModule file
 
+sourceFileExts :: [String]
+sourceFileExts = [".agda"] ++ literateExts
+
+sourceFileExtsShortList :: [String]
+sourceFileExtsShortList = [".agda"] ++ literateExtsShortList
+
+dropAgdaExtension :: String -> String
+dropAgdaExtension s = case catMaybes [ stripExtension ext s
+                                     | ext <- sourceFileExts ] of
+    [name] -> name
+    _      -> __IMPOSSIBLE__
+  where
+    stripExtension :: String -> String -> Maybe String
+    stripExtension e = fmap reverse . stripPrefix (reverse e) . reverse
+
+rootNameModule :: AbsolutePath -> String
+rootNameModule = dropAgdaExtension . snd . splitFileName . filePath
+
 -- | A variant of 'moduleName'' which raises an error if the file name
 -- does not match the module name.
 --
@@ -174,6 +224,10 @@
 
 moduleName :: AbsolutePath -> TCM TopLevelModuleName
 moduleName file = do
-  m <- moduleName' file
-  checkModuleName m file
+  Ranged r m <- moduleName' file
+  -- Andreas, 2016-07-11, issue 2092
+  -- The error range should be set to the file with the wrong module name
+  -- not the importing one (which would be the default).
+  (if null r then id else traceCall (SetRange r)) $
+    checkModuleName m file Nothing
   return m
diff --git a/src/full/Agda/Interaction/FindFile.hs-boot b/src/full/Agda/Interaction/FindFile.hs-boot
--- a/src/full/Agda/Interaction/FindFile.hs-boot
+++ b/src/full/Agda/Interaction/FindFile.hs-boot
@@ -1,7 +1,10 @@
 module Agda.Interaction.FindFile where
 
-import Data.Map (Map)
+import Agda.Syntax.Common (Ranged)
 import Agda.Syntax.Concrete.Name (TopLevelModuleName)
+import Agda.TypeChecking.Monad.Base (TCM)
 import Agda.Utils.FileName (AbsolutePath)
 
-type ModuleToSource = Map TopLevelModuleName AbsolutePath
+moduleName :: AbsolutePath -> TCM TopLevelModuleName
+moduleName' :: AbsolutePath -> TCM (Ranged TopLevelModuleName)
+checkModuleName :: TopLevelModuleName -> AbsolutePath -> Maybe TopLevelModuleName -> TCM ()
diff --git a/src/full/Agda/Interaction/Highlighting/Emacs.hs b/src/full/Agda/Interaction/Highlighting/Emacs.hs
--- a/src/full/Agda/Interaction/Highlighting/Emacs.hs
+++ b/src/full/Agda/Interaction/Highlighting/Emacs.hs
@@ -4,7 +4,6 @@
 
 module Agda.Interaction.Highlighting.Emacs
   ( lispifyHighlightingInfo
-  , Agda.Interaction.Highlighting.Emacs.tests
   ) where
 
 import Agda.Interaction.Highlighting.Precise
@@ -16,7 +15,6 @@
 import Agda.Utils.FileName
 import qualified Agda.Utils.IO.UTF8 as UTF8
 import Agda.Utils.String
-import Agda.Utils.TestHelpers
 
 import Control.Applicative
 import qualified Control.Exception as E
@@ -110,13 +108,3 @@
     return $ L [ A "agda2-highlight-load-and-delete-action"
                , A (quote f)
                ]
-
-------------------------------------------------------------------------
--- All tests
-
--- TODO: One could check that the show functions are invertible.
-
--- | All the properties.
-
-tests :: IO Bool
-tests = runTests "Agda.Interaction.Highlighting.Emacs" []
diff --git a/src/full/Agda/Interaction/Highlighting/Generate.hs b/src/full/Agda/Interaction/Highlighting/Generate.hs
--- a/src/full/Agda/Interaction/Highlighting/Generate.hs
+++ b/src/full/Agda/Interaction/Highlighting/Generate.hs
@@ -1,6 +1,4 @@
 {-# LANGUAGE CPP              #-}
-{-# LANGUAGE FlexibleContexts #-}
-{-# LANGUAGE RelaxedPolyRec   #-}
 
 -- | Generates data used for precise syntax highlighting.
 
@@ -16,7 +14,6 @@
   , computeUnsolvedMetaWarnings
   , computeUnsolvedConstraints
   , storeDisambiguatedName
-  , Agda.Interaction.Highlighting.Generate.tests
   ) where
 
 import Prelude hiding (null)
@@ -37,19 +34,21 @@
 import Data.Void
 
 import Agda.Interaction.Response (Response(Resp_HighlightingInfo))
-import Agda.Interaction.Highlighting.Precise hiding (tests)
-import Agda.Interaction.Highlighting.Range   hiding (tests)
+import Agda.Interaction.Highlighting.Precise
+import Agda.Interaction.Highlighting.Range
 
 import qualified Agda.TypeChecking.Errors as E
 import Agda.TypeChecking.MetaVars (isBlockedTerm)
 import Agda.TypeChecking.Monad
   hiding (MetaInfo, Primitive, Constructor, Record, Function, Datatype)
 import qualified Agda.TypeChecking.Monad as M
+import Agda.TypeChecking.Positivity.Occurrence
 
 import qualified Agda.Syntax.Abstract as A
 import Agda.Syntax.Concrete (FieldAssignment'(..))
 import qualified Agda.Syntax.Common as Common
 import qualified Agda.Syntax.Concrete as C
+import Agda.Syntax.Fixity
 import qualified Agda.Syntax.Info as SI
 import qualified Agda.Syntax.Internal as I
 import qualified Agda.Syntax.Literal as L
@@ -58,13 +57,13 @@
 import qualified Agda.Syntax.Position as P
 
 import Agda.Utils.FileName
+import Agda.Utils.Function
 import Agda.Utils.Functor
 import Agda.Utils.Lens
 import Agda.Utils.List
 import Agda.Utils.Maybe
 import qualified Agda.Utils.Maybe.Strict as Strict
 import Agda.Utils.Null
-import Agda.Utils.TestHelpers
 import Agda.Utils.HashMap (HashMap)
 import qualified Agda.Utils.HashMap as HMap
 
@@ -167,6 +166,8 @@
       Full{} -> generateConstructorInfo modMap file kinds decl
       _      -> return mempty
 
+    warnInfo <- Fold.fold . map (warningHighlighting . tcWarning) <$> use stTCWarnings
+
     let (from, to) = case P.rangeToInterval (P.getRange decl) of
           Nothing -> __IMPOSSIBLE__
           Just i  -> ( fromIntegral $ P.posPos $ P.iStart i
@@ -183,6 +184,7 @@
     let syntaxInfo = compress (mconcat [ constructorInfo
                                        , theRest modMap file
                                        , nameInfo
+                                       , warnInfo
                                        ])
                        `mappend`
                      curTokens
@@ -223,7 +225,7 @@
     , Fold.foldMap getNamedArg    $ universeBi decl
     ]
     where
-    bound n = nameToFile modMap file [] (A.nameConcrete n)
+    bound n = nameToFile modMap file [] (A.nameConcrete n) P.noRange
                          (\isOp -> mempty { aspect = Just $ Name (Just Bound) isOp })
                          (Just $ A.nameBindingSite n)
 
@@ -233,17 +235,17 @@
     macro n = nameToFileA modMap file n True $ \isOp ->
                   mempty { aspect = Just $ Name (Just Macro) isOp }
 
-    field m n = nameToFile modMap file m n
+    field m n = nameToFile modMap file m n P.noRange
                            (\isOp -> mempty { aspect = Just $ Name (Just Field) isOp })
                            Nothing
     asName n = nameToFile modMap file []
-                          n
+                          n P.noRange
                           (\isOp -> mempty { aspect = Just $ Name (Just Module) isOp })
                           Nothing
 
     mod isTopLevelModule n =
       nameToFile modMap file []
-                 (A.nameConcrete n)
+                 (A.nameConcrete n) P.noRange
                  (\isOp -> mempty { aspect = Just $ Name (Just Module) isOp })
                  (Just $ (if isTopLevelModule then P.beginningOfFile else id)
                            (A.nameBindingSite n))
@@ -281,7 +283,7 @@
     getPattern' :: A.Pattern' e -> File
     getPattern' (A.VarP x)    = bound x
     getPattern' (A.AsP _ x _) = bound x
-    getPattern' (A.DotP pi _) =
+    getPattern' (A.DotP pi _ _) =
       singleton (rToR $ P.getRange pi)
                 (mempty { otherAspects = [DottedPattern] })
     getPattern' (A.PatternSynP _ q _) = patsyn q
@@ -336,13 +338,13 @@
   :: AbsolutePath          -- ^ The module to highlight.
   -> TCM CompressedFile
 generateTokenInfo file =
-  liftIO $ tokenHighlighting <$> Pa.parseFile' Pa.tokensParser file
+  runPM $ tokenHighlighting <$> Pa.parseFile' Pa.tokensParser file
 
 -- | Same as 'generateTokenInfo' but takes a string instead of a filename.
 generateTokenInfoFromString :: P.Range -> String -> TCM CompressedFile
 generateTokenInfoFromString r _ | r == P.noRange = return mempty
 generateTokenInfoFromString r s = do
-  liftIO $ tokenHighlighting <$> Pa.parsePosString Pa.tokensParser p s
+  runPM $ tokenHighlighting <$> Pa.parsePosString Pa.tokensParser p s
   where
     Just p = P.rStart r
 
@@ -422,10 +424,11 @@
   defnToKind   M.Record{}                          = Record
   defnToKind   M.Constructor{ M.conInd = i }       = Constructor i
   defnToKind   M.Primitive{}                       = Primitive
+  defnToKind   M.AbstractDefn                      = __IMPOSSIBLE__
 
   declToKind :: A.Declaration ->
                 HashMap A.QName NameKind -> HashMap A.QName NameKind
-  declToKind (A.Axiom _ i _ q _)
+  declToKind (A.Axiom _ i _ _ q _)
     | SI.defMacro i == Common.MacroDef = insert q Macro
     | otherwise                        = insert q Postulate
   declToKind (A.Field _ q _)        = insert q Field -- Function
@@ -506,7 +509,7 @@
 
 errorHighlighting :: TCErr -> TCM File
 
-errorHighlighting (TypeError s cl@(Closure sig env scope (TerminationCheckFailed termErrs))) =
+errorHighlighting (TypeError s cl@Closure{ clValue = TerminationCheckFailed termErrs }) =
   -- For termination errors, we keep the previous highlighting,
   -- just additionally mark the bad calls.
   return $ terminationErrorHighlighting termErrs
@@ -525,6 +528,15 @@
                   }
   return $ mconcat [ erase, error ]
 
+-- | Generate syntax highlighting for warnings.
+
+warningHighlighting :: Warning -> File
+warningHighlighting w = case w of
+  TerminationIssue terrs    -> terminationErrorHighlighting terrs
+  NotStrictlyPositive d ocs -> positivityErrorHighlighting d ocs
+  _ -> mempty
+
+
 -- | Generate syntax highlighting for termination errors.
 
 terminationErrorHighlighting :: [TerminationError] -> File
@@ -536,6 +548,17 @@
     callSites    = Fold.foldMap (\r -> singleton (rToR r) m) $
                    concatMap (map M.callInfoRange . M.termErrCalls) termErrs
 
+-- | Generate syntax highlighting for not-strictly-positive inductive
+-- definitions.
+
+-- TODO: highlight also the problematic occurrences
+positivityErrorHighlighting :: I.QName -> OccursWhere -> File
+positivityErrorHighlighting q o = several (rToR <$> P.getRange q : rs) m
+  where
+    rs = case o of Unknown -> []; Known r _ -> [r]
+    m  = mempty { otherAspects = [PositivityProblem] }
+
+
 -- | Generates and prints syntax highlighting information for unsolved
 -- meta-variables and certain unsolved constraints.
 
@@ -614,6 +637,8 @@
               -- ^ The name qualifier (may be empty).
            -> C.Name
               -- ^ The base name.
+           -> P.Range
+              -- ^ The 'Range' of the name in its fixity declaration (if any).
            -> (Bool -> Aspects)
               -- ^ Meta information to be associated with the name.
               -- The argument is 'True' iff the name is an operator.
@@ -622,7 +647,7 @@
               -- meta information is extended with this information,
               -- if possible.
            -> File
-nameToFile modMap file xs x m mR =
+nameToFile modMap file xs x fr m mR =
   -- We don't care if we get any funny ranges.
   if all (== Strict.Just file) fileNames then
     several (map rToR rs)
@@ -631,7 +656,7 @@
     mempty
   where
   fileNames  = catMaybes $ map (fmap P.srcFile . P.rStart . P.getRange) (x : xs)
-  rs         = map P.getRange (x : xs)
+  rs         = applyWhen (not $ null fr) (fr :) $ map P.getRange (x : xs)
   mFilePos   = do
     r <- mR
     P.Pn { P.srcFile = Strict.Just f, P.posPos = p } <- P.rStart r
@@ -659,8 +684,16 @@
              file
              (concreteQualifier x)
              (concreteBase x)
+             r
              m
              (if include then Just $ bindingSite x else Nothing)
+  where
+    -- Andreas, 2016-09-08, for issue #2140:
+    -- Range of name from fixity declaration:
+    fr = theNameRange $ A.nameFixity $ A.qnameName x
+    -- Somehow we import fixity ranges from other files, we should ignore them.
+    -- (I do not understand how we get them as they should not be serialized...)
+    r = if P.rangeFile fr == Strict.Just file then fr else P.noRange
 
 concreteBase :: I.QName -> C.Name
 concreteBase = A.nameConcrete . A.qnameName
@@ -678,11 +711,3 @@
   stDisambiguatedNames %= IntMap.insert i q
   where
   start r = fromIntegral . P.posPos <$> P.rStart' r
-
-------------------------------------------------------------------------
--- All tests
-
--- | All the properties.
-
-tests :: IO Bool
-tests = runTests "Agda.Interaction.Highlighting.Generate" []
diff --git a/src/full/Agda/Interaction/Highlighting/LaTeX.hs b/src/full/Agda/Interaction/Highlighting/LaTeX.hs
--- a/src/full/Agda/Interaction/Highlighting/LaTeX.hs
+++ b/src/full/Agda/Interaction/Highlighting/LaTeX.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE BangPatterns #-}
 {-# LANGUAGE CPP #-}
 {-# LANGUAGE ViewPatterns #-}
 
@@ -12,7 +13,7 @@
 import Data.Char
 import Data.Maybe
 import Data.Function
-import Control.Monad.RWS
+import Control.Monad.RWS.Strict
 import System.Directory
 import System.FilePath
 import Data.Text (Text)
@@ -26,11 +27,13 @@
 
 import Paths_Agda
 
+import Agda.Syntax.Abstract (toTopLevelModuleName)
 import Agda.Syntax.Common
-import Agda.Syntax.Concrete (TopLevelModuleName, moduleNameParts)
+import Agda.Syntax.Concrete
+  (TopLevelModuleName, moduleNameParts, projectRoot)
 import qualified Agda.Interaction.FindFile as Find
 import Agda.Interaction.Highlighting.Precise
-import Agda.TypeChecking.Monad (TCM)
+import Agda.TypeChecking.Monad (TCM, Interface(..))
 import qualified Agda.TypeChecking.Monad as TCM
 import Agda.Interaction.Options
 import Agda.Compiler.CallCompiler
@@ -54,20 +57,19 @@
 
 data State = State
   { tokens     :: Tokens
-  , column     :: Int     -- ^ Column number, used for polytable alignment.
-  , indent     :: Int     -- ^ Indentation level, also for alignment.
-  , indentPrev :: Int
-  , inCode     :: Bool    -- ^ Keeps track of whether we are in a code
+  , column     :: !Int    -- ^ Column number, used for polytable alignment.
+  , indent     :: !Int    -- ^ Indentation level, also for alignment.
+  , indentPrev :: !Int
+  , inCode     :: !Bool   -- ^ Keeps track of whether we are in a code
                           -- block or not.
-  , debugs     :: [Debug] -- ^ Says what debug information should printed.
   }
 
 type Tokens = [Token]
 
 data Token = Token
-  { text     :: Text
+  { text     :: !Text
   , info     :: Aspects
-  , position :: Int      -- ^ Is not used currently, but could
+  , position :: !Int     -- ^ Is not used currently, but could
                          -- potentially be used for hyperlinks as in
                          -- the HTML output?
   }
@@ -76,6 +78,11 @@
 data Debug = MoveColumn | NonCode | Code | Spaces | Output
   deriving (Eq, Show)
 
+-- | Says what debug information should printed.
+
+debugs :: [Debug]
+debugs = []
+
 -- | Run function for the @LaTeX@ monad.
 runLaTeX :: LaTeX a -> () -> State -> IO (Either String a, State, Text)
 runLaTeX = runRWST . runExceptT
@@ -87,7 +94,6 @@
   , indent     = 0
   , indentPrev = 0
   , inCode     = False
-  , debugs     = []
   }
 
 ------------------------------------------------------------------------
@@ -99,9 +105,9 @@
 isInfixOf' :: Text -> Text -> Maybe (Text, Text)
 isInfixOf' needle haystack = go (T.tails haystack) 0
   where
-  go []                                         n = Nothing
-  go ((T.stripPrefix needle -> Just suf) : xss) n = Just (T.take n haystack, suf)
-  go (_                                  : xss) n = go xss (n + 1)
+  go []                                         !n = Nothing
+  go ((T.stripPrefix needle -> Just suf) : xss)  n = Just (T.take n haystack, suf)
+  go (_                                  : xss)  n = go xss (n + 1)
 
 -- Same as above, but starts searching from the back rather than the
 -- front.
@@ -214,8 +220,7 @@
 unsetInCode = modify $ \s -> s { inCode = False }
 
 logHelper :: Debug -> Text -> [String] -> LaTeX ()
-logHelper debug text extra = do
-  debugs <- gets debugs
+logHelper debug text extra =
   when (debug `elem` debugs) $ do
     lift $ lift $ T.putStrLn $ T.pack (show debug ++ ": ") <+>
       T.pack "'" <+> text <+> T.pack "' " <+>
@@ -277,11 +282,16 @@
 cmdIndent i = cmdPrefix <+> T.pack "Indent" <+>
                   cmdArg (T.pack (show i)) <+> cmdArg T.empty
 
-infixl', infix', infixr' :: Text
-infixl' = T.pack "infixl"
-infix'  = T.pack "infix"
-infixr' = T.pack "infixr"
 
+-- Andreas, 2016-09-08, issue #2140:
+-- The following special treatment of infix declarations seems
+-- superfluous (and does the wrong thing with the fix for #2140):
+
+-- infixl', infix', infixr' :: Text
+-- infixl' = T.pack "infixl"
+-- infix'  = T.pack "infix"
+-- infixr' = T.pack "infixr"
+
 ------------------------------------------------------------------------
 -- * Automaton.
 
@@ -327,11 +337,15 @@
     unsetInCode
     nonCode
 
-  when (tok `elem` [ infixl', infix', infixr' ]) $ do
-    output $ cmdPrefix <+> T.pack "Keyword" <+> cmdArg tok
-    fixity
-    code
+  -- Andreas, 2016-09-08, issue #2140:
+  -- The following special treatment of infix declarations seems
+  -- superfluous (and does the wrong thing with the fix for #2140):
 
+  -- when (tok `elem` [ infixl', infix', infixr' ]) $ do
+  --   output $ cmdPrefix <+> T.pack "Keyword" <+> cmdArg tok
+  --   fixity
+  --   code
+
   when (isSpaces tok) $ do
     spaces $ T.group tok
     code
@@ -391,36 +405,41 @@
     _    -> [ c ]
 escape _                         = __IMPOSSIBLE__
 
--- | Fixity declarations need a special treatment. The operations in
--- declarations like:
---
---     infix num op1 op2 op3
---
--- are treated as comments and thus grouped together with the newlines
--- that follow, which results incorrect LaTeX output -- the following
--- state remedies the problem by breaking on newlines.
-fixity :: LaTeX ()
-fixity = do
-  tok <- nextToken
 
-  case T.breakOn (T.pack "\n") tok of
+-- Andreas, 2016-09-08, issue #2140:
+-- The following special treatment of infix declarations seems
+-- superfluous (and does the wrong thing with the fix for #2140):
 
-    -- Spaces.
-    (sps, nls) | nls == T.empty && isSpaces sps -> do
-        spaces $ T.group sps
-        fixity
+-- -- | Fixity declarations need a special treatment. The operations in
+-- -- declarations like:
+-- --
+-- --     infix num op1 op2 op3
+-- --
+-- -- are treated as comments and thus grouped together with the newlines
+-- -- that follow, which results incorrect LaTeX output -- the following
+-- -- state remedies the problem by breaking on newlines.
+-- fixity :: LaTeX ()
+-- fixity = do
+--   tok <- nextToken
 
-    -- Fixity level.
-    (num, nls) | nls == T.empty -> do
-        output $ cmdPrefix <+> T.pack "Number" <+> cmdArg num
-        fixity
+--   case T.breakOn (T.pack "\n") tok of
 
-    -- Operations followed by newlines.
-    (ops, nls) | otherwise      -> do
-        output $ (T.pack " " <+>) $ T.unwords $ map ((cmdPrefix <+> T.pack "FixityOp" <+>) . cmdArg . escape) $ T.words ops
-        spaces (T.group nls)
+--     -- Spaces.
+--     (sps, nls) | nls == T.empty && isSpaces sps -> do
+--         spaces $ T.group sps
+--         fixity
 
+--     -- Fixity level.
+--     (num, nls) | nls == T.empty -> do
+--         output $ cmdPrefix <+> T.pack "Number" <+> cmdArg num
+--         fixity
 
+--     -- Operations followed by newlines.
+--     (ops, nls) | otherwise      -> do
+--         output $ (T.pack " " <+>) $ T.unwords $ map ((cmdPrefix <+> T.pack "FixityOp" <+>) . cmdArg . escape) $ T.words ops
+--         spaces (T.group nls)
+
+
 -- | Spaces are grouped before processed, because multiple consecutive
 -- spaces determine the alignment of the code and consecutive newline
 -- characters need special treatment as well.
@@ -489,25 +508,56 @@
   output $ ptClose <+> T.replicate (T.length s) ptNL
   spaces ss
 
--- Treat tabs as if they were spaces.
-spaces (s@(T.uncons -> Just ('\t', _)) : ss) =
-  spaces $ T.replicate (T.length s) (T.singleton ' ') : ss
-spaces (_                              : ss) = __IMPOSSIBLE__
+-- Treat tabs and non-standard spaces as if they were spaces
+-- [Issue_#2019].
+spaces (s@(T.uncons -> Just (c, _)) : ss)
+  | isSpace c && (c /= '\n') =
+      spaces $ T.replicate (T.length s) (T.singleton ' ') : ss
+  | otherwise = __IMPOSSIBLE__
 
+spaces (_ : ss) = __IMPOSSIBLE__
+
+-- Split multi-lines string literals into multiple string literals
+-- Isolating leading spaces for the alignment machinery to work
+-- properly
+stringLiteral :: Token -> Tokens
+stringLiteral t | aspect (info t) == Just String =
+  reverse $ snd $ foldl insertShifted (0, [])
+                $ concatMap leadingSpaces
+                $ List.intersperse (T.pack "\n")
+                $ T.lines (text t) where
+
+    leadingSpaces :: Text -> [Text]
+    leadingSpaces t = [pre, suf]
+      where (pre , suf) = T.span (== ' ') t
+
+    insertShifted :: (Int, Tokens) -> Text -> (Int, Tokens)
+    insertShifted (i, xs) x =
+      let tx = t { text = x, position = position t + i }
+      in (i + T.length x, tx : xs)
+
+stringLiteral t = [t]
+
 ------------------------------------------------------------------------
 -- * Main.
 
 defaultStyFile :: String
 defaultStyFile = "agda.sty"
 
--- | The only exported function. It's (only) called in @Main.hs@.
-generateLaTeX :: TopLevelModuleName -> HighlightingInfo -> TCM ()
-generateLaTeX mod hi = do
+-- | The only exported function.
+generateLaTeX :: Interface -> TCM ()
+generateLaTeX i = do
+  let mod = toTopLevelModuleName $ iModuleName i
+      hi  = iHighlighting i
 
   options <- TCM.commandLineOptions
 
-  -- There is a default directory given by 'defaultLaTeXDir'.
-  let dir = optLaTeXDir options
+  dir <- case optGHCiInteraction options of
+    False -> return $ optLaTeXDir options
+    True  -> do
+      sourceFile <- Find.findFile mod
+      return $ filePath (projectRoot sourceFile mod)
+                 </> optLaTeXDir options
   liftIO $ createDirectoryIfMissing True dir
 
   TCM.reportSLn "latex" 1 $ unlines
@@ -547,6 +597,8 @@
 toLaTeX source hi
 
   = processTokens
+
+  . concatMap stringLiteral
 
   -- Head the list (the grouped chars contain the same meta info) and
   -- collect the characters into a string.
diff --git a/src/full/Agda/Interaction/Highlighting/Precise.hs b/src/full/Agda/Interaction/Highlighting/Precise.hs
--- a/src/full/Agda/Interaction/Highlighting/Precise.hs
+++ b/src/full/Agda/Interaction/Highlighting/Precise.hs
@@ -8,11 +8,13 @@
   , NameKind(..)
   , OtherAspect(..)
   , Aspects(..)
-  , File
+  , File(..)
   , HighlightingInfo
     -- ** Creation
   , singleton
   , several
+    -- ** Merging
+  , merge
     -- ** Inspection
   , smallestPos
   , toMap
@@ -29,21 +31,19 @@
   , selectC
     -- ** Inspection
   , smallestPosC
-    -- * Tests
-  , Agda.Interaction.Highlighting.Precise.tests
+    -- ** Merge
+  , mergeC
   ) where
 
-import Agda.Utils.TestHelpers
 import Agda.Utils.String
-import Agda.Utils.List hiding (tests)
+import Agda.Utils.List
 import Data.Maybe
 import Data.List
 import Data.Function
-import Data.Monoid
+import Data.Semigroup
 import Control.Applicative ((<$>), (<*>))
 import Control.Arrow (second)
 import Control.Monad
-import Agda.Utils.QuickCheck
 import Data.IntMap (IntMap)
 import qualified Data.IntMap as IntMap
 import Data.Typeable (Typeable)
@@ -98,6 +98,7 @@
     -- ^ Unsolved constraint not connected to meta-variable. This
     -- could for instance be an emptyness constraint.
   | TerminationProblem
+  | PositivityProblem
   | IncompletePattern
     -- ^ When this constructor is used it is probably a good idea to
     -- include a 'note' explaining why the pattern is incomplete.
@@ -171,6 +172,9 @@
   , definitionSite = (mplus `on` definitionSite) m1 m2
   }
 
+instance Semigroup Aspects where
+  (<>) = mergeAspects
+
 instance Monoid Aspects where
   mempty = Aspects
     { aspect         = Nothing
@@ -178,7 +182,7 @@
     , note           = Nothing
     , definitionSite = Nothing
     }
-  mappend = mergeAspects
+  mappend = (<>)
 
 -- | Merges files.
 
@@ -186,9 +190,12 @@
 merge f1 f2 =
   File { mapping = (IntMap.unionWith mappend `on` mapping) f1 f2 }
 
+instance Semigroup File where
+  (<>) = merge
+
 instance Monoid File where
   mempty  = File { mapping = IntMap.empty }
-  mappend = merge
+  mappend = (<>)
 
 ------------------------------------------------------------------------
 -- Inspection
@@ -251,13 +258,6 @@
   map (\(r, m) -> [ (p, m) | p <- rangeToPositions r ]) .
   ranges
 
-prop_compress :: File -> Bool
-prop_compress f =
-  compressedFileInvariant c
-  &&
-  decompress c == f
-  where c = compress f
-
 -- | Clear any highlighting info for the given ranges. Used to make sure
 --   unsolved meta highlighting overrides error highlighting.
 noHighlightingInRange :: Ranges -> CompressedFile -> CompressedFile
@@ -279,18 +279,12 @@
 singletonC (Ranges rs) m =
   CompressedFile [(r, m) | r <- rs, not (empty r)]
 
-prop_singleton :: Ranges -> Aspects -> Bool
-prop_singleton rs m = singleton rs m == decompress (singletonC rs m)
-
 -- | Like 'singletonR', but with a list of 'Ranges' instead of a
 -- single one.
 
 severalC :: [Ranges] -> Aspects -> CompressedFile
 severalC rss m = mconcat $ map (\rs -> singletonC rs m) rss
 
-prop_several :: [Ranges] -> Aspects -> Bool
-prop_several rss m = several rss m == decompress (severalC rss m)
-
 -- | Merges compressed files.
 
 mergeC :: CompressedFile -> CompressedFile -> CompressedFile
@@ -320,13 +314,12 @@
              [(from i1, m1), (to i1, m1), (from i2, m2), (to i2, m2)]
     fix = filter (not . empty . fst)
 
-prop_merge :: File -> File -> Bool
-prop_merge f1 f2 =
-  merge f1 f2 == decompress (mergeC (compress f1) (compress f2))
+instance Semigroup CompressedFile where
+  (<>) = mergeC
 
 instance Monoid CompressedFile where
   mempty  = CompressedFile []
-  mappend = mergeC
+  mappend = (<>)
 
 -- | @splitAtC p f@ splits the compressed file @f@ into @(f1, f2)@,
 -- where all the positions in @f1@ are @< p@, and all the positions
@@ -347,17 +340,6 @@
           toP      = Range { from = from r, to = p    }
           fromP    = Range { from = p,      to = to r }
 
-prop_splitAtC :: Int -> CompressedFile -> Bool
-prop_splitAtC p f =
-  all (<  p) (positions f1) &&
-  all (>= p) (positions f2) &&
-  decompress (mergeC f1 f2) == decompress f
-  where
-  (f1, f2) = splitAtC p f
-
-  positions = IntMap.keys . toMap . decompress
-
-
 selectC :: P.Range -> CompressedFile -> CompressedFile
 selectC r cf = cf'
   where
@@ -371,133 +353,3 @@
 smallestPosC :: CompressedFile -> Maybe Int
 smallestPosC (CompressedFile [])           = Nothing
 smallestPosC (CompressedFile ((r, _) : _)) = Just (from r)
-
-prop_smallestPos :: CompressedFile -> Bool
-prop_smallestPos f = smallestPos (decompress f) == smallestPosC f
-
-------------------------------------------------------------------------
--- Generators
-
-instance Arbitrary Aspect where
-  arbitrary =
-    frequency [ (3, elements [ Comment, Keyword, String, Number
-                             , Symbol, PrimitiveType ])
-              , (1, liftM2 Name (maybeGen arbitrary) arbitrary)
-              ]
-
-  shrink Name{} = [Comment]
-  shrink _      = []
-
-instance CoArbitrary Aspect where
-  coarbitrary Comment       = variant 0
-  coarbitrary Keyword       = variant 1
-  coarbitrary String        = variant 2
-  coarbitrary Number        = variant 3
-  coarbitrary Symbol        = variant 4
-  coarbitrary PrimitiveType = variant 5
-  coarbitrary (Name nk b)   =
-    variant 6 . maybeCoGen coarbitrary nk . coarbitrary b
-
-instance Arbitrary NameKind where
-  arbitrary = oneof $ [liftM Constructor arbitrary] ++
-                      map return [ Bound
-                                 , Datatype
-                                 , Field
-                                 , Function
-                                 , Module
-                                 , Postulate
-                                 , Primitive
-                                 , Record
-                                 ]
-
-  shrink Constructor{} = [Bound]
-  shrink _             = []
-
-instance CoArbitrary NameKind where
-  coarbitrary Bound             = variant 0
-  coarbitrary (Constructor ind) = variant 1 . coarbitrary ind
-  coarbitrary Datatype          = variant 2
-  coarbitrary Field             = variant 3
-  coarbitrary Function          = variant 4
-  coarbitrary Module            = variant 5
-  coarbitrary Postulate         = variant 6
-  coarbitrary Primitive         = variant 7
-  coarbitrary Record            = variant 8
-  coarbitrary Argument          = variant 9
-  coarbitrary Macro             = variant 10
-
-instance Arbitrary OtherAspect where
-  arbitrary = elements [minBound .. maxBound]
-
-instance CoArbitrary OtherAspect where
-  coarbitrary = coarbitrary . fromEnum
-
-instance Arbitrary Aspects where
-  arbitrary = do
-    aspect  <- arbitrary
-    other   <- arbitrary
-    note    <- maybeGen string
-    defSite <- arbitrary
-    return (Aspects { aspect = aspect, otherAspects = other
-                     , note = note, definitionSite = defSite })
-    where string = listOfElements "abcdefABCDEF/\\.\"'@()åäö\n"
-
-  shrink (Aspects a o n d) =
-    [ Aspects a o n d | a <- shrink a ] ++
-    [ Aspects a o n d | o <- shrink o ] ++
-    [ Aspects a o n d | n <- shrink n ] ++
-    [ Aspects a o n d | d <- shrink d ]
-
-instance CoArbitrary Aspects where
-  coarbitrary (Aspects aspect otherAspects note defSite) =
-    coarbitrary aspect .
-    coarbitrary otherAspects .
-    coarbitrary note .
-    coarbitrary defSite
-
-instance Arbitrary File where
-  arbitrary = fmap (File . IntMap.fromList) $ listOf arbitrary
-  shrink    = map (File . IntMap.fromList) . shrink . IntMap.toList . toMap
-
-instance CoArbitrary File where
-  coarbitrary (File rs) = coarbitrary (IntMap.toAscList rs)
-
-instance Arbitrary CompressedFile where
-  arbitrary = do
-    rs <- (\ns1 ns2 -> toRanges $ sort $
-                         ns1 ++ concatMap (\n -> [n, succ n]) (ns2 :: [Int])) <$>
-            arbitrary <*> arbitrary
-    CompressedFile <$> mapM (\r -> (,) r <$> arbitrary) rs
-    where
-    toRanges (f : t : rs)
-      | f == t    = toRanges (t : rs)
-      | otherwise = Range { from = f, to = t } :
-                    toRanges (case rs of
-                                f : rs | t == f -> rs
-                                _               -> rs)
-    toRanges _ = []
-
-  shrink (CompressedFile f) = CompressedFile <$> shrink f
-
-------------------------------------------------------------------------
--- All tests
-
--- | All the properties.
-
-tests :: IO Bool
-tests = runTests "Agda.Interaction.Highlighting.Precise"
-  [ quickCheck' compressedFileInvariant
-  , quickCheck' (all compressedFileInvariant . shrink)
-  , quickCheck' (\r m -> compressedFileInvariant $ singletonC r m)
-  , quickCheck' (\rs m -> compressedFileInvariant $ severalC rs m)
-  , quickCheck' (\f1 f2 -> compressedFileInvariant $ mergeC f1 f2)
-  , quickCheck' (\i f -> all compressedFileInvariant $
-                         (\(f1, f2) -> [f1, f2]) $
-                         splitAtC i f)
-  , quickCheck' prop_compress
-  , quickCheck' prop_singleton
-  , quickCheck' prop_several
-  , quickCheck' prop_merge
-  , quickCheck' prop_splitAtC
-  , quickCheck' prop_smallestPos
-  ]
diff --git a/src/full/Agda/Interaction/Highlighting/Range.hs b/src/full/Agda/Interaction/Highlighting/Range.hs
--- a/src/full/Agda/Interaction/Highlighting/Range.hs
+++ b/src/full/Agda/Interaction/Highlighting/Range.hs
@@ -14,7 +14,6 @@
   , rToR
   , rangeToEndPoints
   , minus
-  , Agda.Interaction.Highlighting.Range.tests
   ) where
 
 import Control.Applicative ((<$>))
@@ -23,8 +22,6 @@
 
 import qualified Agda.Syntax.Position as P
 import Agda.Utils.List
-import Agda.Utils.TestHelpers
-import Agda.Utils.QuickCheck
 
 -- | Character ranges. The first character in the file has position 1.
 -- Note that the 'to' position is considered to be outside of the
@@ -81,9 +78,6 @@
 rangesToPositions :: Ranges -> [Int]
 rangesToPositions (Ranges rs) = concatMap rangeToPositions rs
 
-prop_rangesToPositions :: Ranges -> Bool
-prop_rangesToPositions rs = sorted (rangesToPositions rs)
-
 -- | Converts a 'P.Range' to a 'Ranges'.
 
 rToR :: P.Range -> Ranges
@@ -123,37 +117,3 @@
                         m (Range { from = from y, to = to x } : xs) (y:ys)
     | to y < to x     = m (Range { from = to y, to = to x } : xs) ys
     | otherwise       = m xs (y:ys)
-
-prop_minus :: Ranges -> Ranges -> Bool
-prop_minus xs ys =
-  rangesToPositions (xs `minus` ys) ==
-  rangesToPositions xs \\ rangesToPositions ys
-
-------------------------------------------------------------------------
--- Generators
-
-instance Arbitrary Range where
-  arbitrary = do
-    [from, to] <- fmap sort $ vectorOf 2 positive
-    return $ Range { from = from, to = to }
-
-instance CoArbitrary Range where
-  coarbitrary (Range f t) = coarbitrary f . coarbitrary t
-
-instance Arbitrary Ranges where
-  arbitrary = rToR <$> arbitrary
-
-------------------------------------------------------------------------
--- All tests
-
--- | All the properties.
-
-tests :: IO Bool
-tests = runTests "Agda.Interaction.Highlighting.Range"
-  [ quickCheck' rangeInvariant
-  , quickCheck' rangesInvariant
-  , quickCheck' (rangesInvariant . rToR)
-  , quickCheck' (\r1 r2 -> rangesInvariant $ r1 `minus` r2)
-  , quickCheck' prop_rangesToPositions
-  , quickCheck' prop_minus
-  ]
diff --git a/src/full/Agda/Interaction/Imports.hs b/src/full/Agda/Interaction/Imports.hs
--- a/src/full/Agda/Interaction/Imports.hs
+++ b/src/full/Agda/Interaction/Imports.hs
@@ -1,9 +1,4 @@
-{-# LANGUAGE CPP           #-}
-{-# LANGUAGE TupleSections #-}
-
-#if __GLASGOW_HASKELL__ >= 710
-{-# LANGUAGE FlexibleContexts #-}
-#endif
+{-# LANGUAGE CPP               #-}
 
 {-| This module deals with finding imported modules and loading their
     interface files.
@@ -16,8 +11,14 @@
 import Control.DeepSeq
 import Control.Monad.Reader
 import Control.Monad.State
+import Control.Monad.Trans.Maybe
 import qualified Control.Exception as E
 
+#if __GLASGOW_HASKELL__ <= 708
+import Data.Foldable ( Foldable )
+import Data.Traversable ( Traversable, traverse )
+#endif
+
 import Data.Function (on)
 import qualified Data.Map as Map
 import qualified Data.List as List
@@ -47,10 +48,12 @@
 
 import Agda.TypeChecking.Errors
 import Agda.TypeChecking.Reduce
+import Agda.TypeChecking.MetaVars ( openMetasToPostulates )
 import Agda.TypeChecking.Monad
 import Agda.TypeChecking.Serialise
 import Agda.TypeChecking.Telescope
 import Agda.TypeChecking.Primitive
+import Agda.TypeChecking.Pretty as P
 import Agda.TypeChecking.Rewriting (killCtxId)
 import Agda.TypeChecking.DeadCode
 import qualified Agda.TypeChecking.Monad.Benchmark as Bench
@@ -68,6 +71,7 @@
 import Agda.Utils.Except ( MonadError(catchError, throwError) )
 import Agda.Utils.FileName
 import Agda.Utils.Lens
+import Agda.Utils.Maybe
 import Agda.Utils.Monad
 import Agda.Utils.Null
 import Agda.Utils.IO.Binary
@@ -123,13 +127,13 @@
   Set String -> -- UHC backend imports
   A.PatternSynDefns -> DisplayForms -> TCM ()
 addImportedThings isig ibuiltin hsImports hsImportsUHC patsyns display = do
-  stImports %= \imp -> unionSignatures [imp, over sigRewriteRules killCtxId isig]
-  stImportedBuiltins %= \imp -> Map.union imp ibuiltin
-  stHaskellImports %= \imp -> Set.union imp hsImports
-  stHaskellImportsUHC %= \imp -> Set.union imp hsImportsUHC
-  stPatternSynImports %= \imp -> Map.union imp patsyns
-  stImportedDisplayForms %= \imp -> HMap.unionWith (++) imp display
-  addSignatureInstances isig
+  stImports              %= \ imp -> unionSignatures [imp, over sigRewriteRules killCtxId isig]
+  stImportedBuiltins     %= \ imp -> Map.union imp ibuiltin
+  stHaskellImports       %= \ imp -> Set.union imp hsImports
+  stHaskellImportsUHC    %= \ imp -> Set.union imp hsImportsUHC
+  stPatternSynImports    %= \ imp -> Map.union imp patsyns
+  stImportedDisplayForms %= \ imp -> HMap.unionWith (++) imp display
+  addImportedInstances isig
 
 -- | Scope checks the given module. A proper version of the module
 -- name (with correct definition sites) is returned.
@@ -149,11 +153,23 @@
     let s = iScope i
     return (iModuleName i `withRangesOfQ` mnameToConcrete x, s)
 
-data MaybeWarnings = NoWarnings | SomeWarnings Warnings
+data MaybeWarnings' a = NoWarnings | SomeWarnings a
+  deriving (Functor, Foldable, Traversable)
+type MaybeWarnings = MaybeWarnings' [TCWarning]
 
+applyFlagsToMaybeWarnings :: IgnoreFlags -> MaybeWarnings -> TCM MaybeWarnings
+applyFlagsToMaybeWarnings r mw = do
+  w' <- traverse (applyFlagsToTCWarnings r) mw
+  return $ if null w' then NoWarnings else w'
+
+instance Null a => Null (MaybeWarnings' a) where
+  empty = NoWarnings
+  null mws = case mws of
+    NoWarnings      -> True
+    SomeWarnings ws -> null ws
+
 hasWarnings :: MaybeWarnings -> Bool
-hasWarnings NoWarnings     = False
-hasWarnings SomeWarnings{} = True
+hasWarnings = not . null
 
 -- | If the module has already been visited (without warnings), then
 -- its interface is returned directly. Otherwise the computation is
@@ -232,9 +248,14 @@
 getInterface_ x = do
   (i, wt) <- getInterface' x NotMainInterface
   case wt of
-    SomeWarnings w  -> warningsToError w
+    SomeWarnings w  -> tcWarningsToError (filter (notIM . tcWarning) w)
     NoWarnings      -> return i
+   -- filter out unsolved interaction points for imported module so
+   -- that we get the right error message (see test case Fail/Issue1296)
+   where notIM UnsolvedInteractionMetas{} = False
+         notIM _                          = True
 
+
 -- | A more precise variant of 'getInterface'. If warnings are
 -- encountered then they are returned instead of being turned into
 -- errors.
@@ -244,6 +265,7 @@
   -> MainInterface
      -- ^ If type checking is necessary,
      --   should all state changes inflicted by 'createInterface' be preserved?
+     --   Yes, if we are the 'MainInterface'.  No, if we are 'NotMainInterface'.
   -> TCM (Interface, MaybeWarnings)
 getInterface' x isMain = do
   withIncreasedModuleNestingLevel $ do
@@ -261,8 +283,9 @@
 
       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
+        cached <- runMaybeT $ isCached x file
+          -- If it's cached ignoreInterfaces has no effect;
+          -- to avoid typechecking a file more than once.
         sourceH <- liftIO $ hashFile file
         ifaceH  <-
           case cached of
@@ -282,7 +305,9 @@
         -- let maySkip = isMain == NotMainInterface
         -- Andreas, 2015-07-13: Serialize iInsideScope again.
         let maySkip = True
-        if uptodate && maySkip then skip file else typeCheckThe file
+        if uptodate && maySkip
+          then getStoredInterface x file includeStateChanges
+          else typeCheck          x file includeStateChanges
 
       -- Ensure that the given module name matches the one in the file.
       let topLevelName = toTopLevelModuleName $ iModuleName i
@@ -312,159 +337,220 @@
     where
       includeStateChanges = isMain == MainInterface
 
-      isCached file = do
-        let ifile = filePath $ toIFile file
-        exist <- liftIO $ doesFileExistCaseSensitive ifile
-        if not exist
-          then return Nothing
-          else do
-            h  <- fmap snd <$> getInterfaceFileHashes ifile
-            mm <- getDecodedModule x
-            return $ case mm of
-              Just mi | Just (iFullHash mi) == h -> Just mi
-              _                                  -> Nothing
+-- | Check whether interface file exists and is in cache
+--   in the correct version (as testified by the interface file hash).
 
-      -- Formats the "Checking", "Finished" and "Skipping" messages.
-      chaseMsg kind file = do
-        nesting <- envModuleNestingLevel <$> ask
-        let s = genericReplicate nesting ' ' ++ kind ++
-                " " ++ prettyShow x ++
-                case file of
-                  Nothing -> "."
-                  Just f  -> " (" ++ f ++ ")."
-        reportSLn "import.chase" 1 s
+isCached
+  :: C.TopLevelModuleName
+     -- ^ Module name of file we process.
+  -> AbsolutePath
+     -- ^ File we process.
+  -> MaybeT TCM Interface
 
-      skip file = do
-        -- Examine the hash of the interface file. If it is different from the
-        -- stored version (in stDecodedModules), or if there is no stored version,
-        -- read and decode it. Otherwise use the stored version.
-        let ifile = filePath $ toIFile file
-        h <- fmap snd <$> getInterfaceFileHashes ifile
-        mm <- getDecodedModule x
-        (cached, mi) <- Bench.billTo [Bench.Deserialization] $ case mm of
-          Just mi ->
-            if Just (iFullHash mi) /= h
-            then do dropDecodedModule x
-                    reportSLn "import.iface" 50 $ "  cached hash = " ++ show (iFullHash mi)
-                    reportSLn "import.iface" 50 $ "  stored hash = " ++ show h
-                    reportSLn "import.iface" 5 $ "  file is newer, re-reading " ++ ifile
-                    (False,) <$> readInterface ifile
-            else do reportSLn "import.iface" 5 $ "  using stored version of " ++ ifile
-                    return (True, Just mi)
-          Nothing -> do
-            reportSLn "import.iface" 5 $ "  no stored version, reading " ++ ifile
-            (False,) <$> readInterface ifile
+isCached x file = do
+  let ifile = filePath $ toIFile file
 
-        -- Check that it's the right version
-        case mi of
-          Nothing       -> do
-            reportSLn "import.iface" 5 $ "  bad interface, re-type checking"
-            typeCheckThe file
-          Just i        -> do
+  -- Make sure the file exists in the case sensitive spelling.
+  guardM $ liftIO $ doesFileExistCaseSensitive ifile
 
-            reportSLn "import.iface" 5 $ "  imports: " ++ show (iImportedModules i)
+  -- Check that we have cached the module.
+  mi <- MaybeT $ getDecodedModule x
 
-            hs <- map iFullHash <$> mapM getInterface (map fst $ iImportedModules i)
+  -- Check that the interface file exists and return its hash.
+  h  <- MaybeT $ fmap snd <$> getInterfaceFileHashes ifile
 
-            -- If any of the imports are newer we need to retype check
-            if hs /= map snd (iImportedModules i)
-              then do
-                -- liftIO close -- Close the interface file. See above.
-                typeCheckThe file
-              else do
-                unless cached $ chaseMsg "Skipping" (Just ifile)
-                -- We set the pragma options of the skipped file here,
-                -- because if the top-level file is skipped we want the
-                -- pragmas to apply to interactive commands in the UI.
-                mapM_ setOptionsFromPragma (iPragmaOptions i)
-                return (False, (i, NoWarnings))
+  -- Make sure the hashes match.
+  guard $ iFullHash mi == h
 
-      typeCheckThe file = do
-          unless includeStateChanges cleanCachedLog
-          let withMsgs = bracket_
-                (chaseMsg "Checking" $ Just $ filePath file)
-                (const $ chaseMsg "Finished" Nothing)
+  return mi
 
-          -- Do the type checking.
 
-          if includeStateChanges then do
-            r <- withMsgs $ createInterface file x
+-- | Try to get the interface from interface file or cache.
 
-            -- Merge the signature with the signature for imported
-            -- things.
-            sig     <- getSignature
-            patsyns <- getPatternSyns
-            display <- use stImportsDisplayForms
-            addImportedThings sig Map.empty Set.empty Set.empty patsyns display
-            setSignature emptySignature
-            setPatternSyns Map.empty
+getStoredInterface
+  :: C.TopLevelModuleName
+     -- ^ Module name of file we process.
+  -> AbsolutePath
+     -- ^ File we process.
+  -> Bool
+     -- ^ If type checking is necessary,
+     --   should all state changes inflicted by 'createInterface' be preserved?
+     --   @True@, if we are the 'MainInterface'.  @False@, if we are 'NotMainInterface'.
+  -> TCM (Bool, (Interface, MaybeWarnings))
+     -- ^ @Bool@ is: do we have to merge the interface?
+getStoredInterface x file includeStateChanges = do
+  -- If something goes wrong (interface outdated etc.)
+  -- we revert to fresh type checking.
+  let fallback = typeCheck x file includeStateChanges
 
-            return (True, r)
-           else do
-            ms       <- getImportPath
-            nesting  <- asks envModuleNestingLevel
-            range    <- asks envRange
-            call     <- asks envCall
-            mf       <- use stModuleToSource
-            vs       <- getVisitedModules
-            ds       <- getDecodedModules
-            opts     <- stPersistentOptions . stPersistentState <$> get
-            isig     <- getImportedSignature
-            ibuiltin <- use stImportedBuiltins
-            display  <- use stImportsDisplayForms
-            ipatsyns <- getPatternSynImports
-            ho       <- getInteractionOutputCallback
-            -- Every interface is treated in isolation. Note: Changes
-            -- to stDecodedModules are not preserved if an error is
-            -- encountered in an imported module.
-            -- Andreas, 2014-03-23: freshTCM spawns a new TCM computation
-            -- with initial state and environment
-            -- but on the same Benchmark accounts.
-            r <- freshTCM $
-                   withImportPath ms $
-                   local (\e -> e { envModuleNestingLevel = nesting
-                                    -- Andreas, 2014-08-18:
-                                    -- Preserve the range of import statement
-                                    -- for reporting termination errors in
-                                    -- imported modules:
-                                  , envRange              = range
-                                  , envCall               = call
-                                  }) $ do
-                     setDecodedModules ds
-                     setCommandLineOptions opts
-                     setInteractionOutputCallback ho
-                     stModuleToSource .= mf
-                     setVisitedModules vs
-                     addImportedThings isig ibuiltin Set.empty Set.empty ipatsyns display
+  -- Examine the hash of the interface file. If it is different from the
+  -- stored version (in stDecodedModules), or if there is no stored version,
+  -- read and decode it. Otherwise use the stored version.
+  let ifile = filePath $ toIFile file
+  h <- fmap snd <$> getInterfaceFileHashes ifile
+  mm <- getDecodedModule x
+  (cached, mi) <- Bench.billTo [Bench.Deserialization] $ case mm of
+    Just mi ->
+      if Just (iFullHash mi) /= h
+      then do
+        dropDecodedModule x
+        reportSLn "import.iface" 50 $ "  cached hash = " ++ show (iFullHash mi)
+        reportSLn "import.iface" 50 $ "  stored hash = " ++ show h
+        reportSLn "import.iface" 5 $ "  file is newer, re-reading " ++ ifile
+        (False,) <$> readInterface ifile
+      else do
+        reportSLn "import.iface" 5 $ "  using stored version of " ++ ifile
+        return (True, Just mi)
+    Nothing -> do
+      reportSLn "import.iface" 5 $ "  no stored version, reading " ++ ifile
+      (False,) <$> readInterface ifile
 
-                     r  <- withMsgs $ createInterface file x
-                     mf <- use stModuleToSource
-                     ds <- getDecodedModules
-                     return (r, do
-                        stModuleToSource .= mf
-                        setDecodedModules ds
-                        case r of
-                          (i, NoWarnings) -> storeDecodedModule i
-                          _               -> return ()
-                        )
+  -- Check that it's the right version
+  case mi of
+    Nothing       -> do
+      reportSLn "import.iface" 5 $ "  bad interface, re-type checking"
+      fallback
+    Just i        -> do
+      reportSLn "import.iface" 5 $ "  imports: " ++ show (iImportedModules i)
 
-            case r of
-                Left err          -> throwError err
-                Right (r, update) -> do
-                  update
-                  case r of
-                    (_, NoWarnings) ->
-                      -- We skip the file which has just been type-checked to
-                      -- be able to forget some of the local state from
-                      -- checking the module.
-                      -- Note that this doesn't actually read the interface
-                      -- file, only the cached interface.
-                      skip file
-                    _ -> return (False, r)
+      hs <- map iFullHash <$> mapM getInterface (map fst $ iImportedModules i)
 
--- | Print the highlighting information contained in the given
--- interface.
+      -- If any of the imports are newer we need to retype check
+      if hs /= map snd (iImportedModules i)
+        then do
+          -- liftIO close -- Close the interface file. See above.
+          fallback
+        else do
+          unless cached $ chaseMsg "Skipping" x $ Just ifile
+          -- We set the pragma options of the skipped file here,
+          -- because if the top-level file is skipped we want the
+          -- pragmas to apply to interactive commands in the UI.
+          mapM_ setOptionsFromPragma (iPragmaOptions i)
+          return (False, (i, NoWarnings))
 
+-- | Run the type checker on a file and create an interface.
+--
+--   Mostly, this function calls 'createInterface'.
+--   But if it is not the main module we check,
+--   we do it in a fresh state, suitably initialize,
+--   in order to forget some state changes after successful type checking.
+
+typeCheck
+  :: C.TopLevelModuleName
+     -- ^ Module name of file we process.
+  -> AbsolutePath
+     -- ^ File we process.
+  -> Bool
+     -- ^ If type checking is necessary,
+     --   should all state changes inflicted by 'createInterface' be preserved?
+     --   @True@, if we are the 'MainInterface'.  @False@, if we are 'NotMainInterface'.
+  -> TCM (Bool, (Interface, MaybeWarnings))
+     -- ^ @Bool@ is: do we have to merge the interface?
+typeCheck x file includeStateChanges = do
+  unless includeStateChanges cleanCachedLog
+  let withMsgs = bracket_
+       (chaseMsg "Checking" x $ Just $ filePath file)
+       (const $ do ws <- getAllWarnings' AllWarnings RespectFlags
+                   let (we, wa) = classifyWarnings ws
+                   unless (null wa) $ reportSDoc "warning" 1
+                                    $ P.vcat $ P.prettyTCM <$> wa
+                   unless (not $ null we) $ chaseMsg "Finished" x Nothing)
+
+  -- Do the type checking.
+
+  if includeStateChanges then do
+     r <- withMsgs $ createInterface file x includeStateChanges
+
+     -- Merge the signature with the signature for imported
+     -- things.
+     reportSLn "import.iface" 40 $ "Merging with state changes included."
+     sig     <- getSignature
+     patsyns <- getPatternSyns
+     display <- use stImportsDisplayForms
+     addImportedThings sig Map.empty Set.empty Set.empty patsyns display
+     setSignature emptySignature
+     setPatternSyns Map.empty
+
+     return (True, r)
+   else do
+    ms       <- getImportPath
+    nesting  <- asks envModuleNestingLevel
+    range    <- asks envRange
+    call     <- asks envCall
+    mf       <- use stModuleToSource
+    vs       <- getVisitedModules
+    ds       <- getDecodedModules
+    opts     <- stPersistentOptions . stPersistentState <$> get
+    isig     <- use stImports
+    ibuiltin <- use stImportedBuiltins
+    display  <- use stImportsDisplayForms
+    ipatsyns <- getPatternSynImports
+    ho       <- getInteractionOutputCallback
+    -- Every interface is treated in isolation. Note: Changes
+    -- to stDecodedModules are not preserved if an error is
+    -- encountered in an imported module.
+    -- Andreas, 2014-03-23: freshTCM spawns a new TCM computation
+    -- with initial state and environment
+    -- but on the same Benchmark accounts.
+    r <- freshTCM $
+           withImportPath ms $
+           local (\e -> e { envModuleNestingLevel = nesting
+                            -- Andreas, 2014-08-18:
+                            -- Preserve the range of import statement
+                            -- for reporting termination errors in
+                            -- imported modules:
+                          , envRange              = range
+                          , envCall               = call
+                          }) $ do
+             setDecodedModules ds
+             setCommandLineOptions opts
+             setInteractionOutputCallback ho
+             stModuleToSource .= mf
+             setVisitedModules vs
+             addImportedThings isig ibuiltin Set.empty Set.empty ipatsyns display
+
+             r  <- withMsgs $ createInterface file x includeStateChanges
+             mf <- use stModuleToSource
+             ds <- getDecodedModules
+             return (r, do
+                stModuleToSource .= mf
+                setDecodedModules ds
+                case r of
+                  (i, NoWarnings) -> storeDecodedModule i
+                  _               -> return ()
+                )
+
+    case r of
+        Left err          -> throwError err
+        Right (r, update) -> do
+          update
+          case r of
+            (_, NoWarnings) ->
+              -- We skip the file which has just been type-checked to
+              -- be able to forget some of the local state from
+              -- checking the module.
+              -- Note that this doesn't actually read the interface
+              -- file, only the cached interface.
+              getStoredInterface x file includeStateChanges
+            _ -> return (False, r)
+
+
+-- | Formats and outputs the "Checking", "Finished" and "Skipping" messages.
+
+chaseMsg
+  :: String               -- ^ The prefix, like @Checking@, @Finished@, @Skipping@.
+  -> C.TopLevelModuleName -- ^ The module name.
+  -> Maybe String         -- ^ Optionally: the file name.
+  -> TCM ()
+chaseMsg kind x file = do
+  indentation <- (`replicate` ' ') <$> asks envModuleNestingLevel
+  let maybeFile = caseMaybe file "." $ \ f -> " (" ++ f ++ ")."
+  reportSLn "import.chase" 1 $ concat $
+    [ indentation, kind, " ", prettyShow x, maybeFile ]
+
+
+-- | Print the highlighting information contained in the given interface.
+
 highlightFromInterface
   :: Interface
   -> AbsolutePath
@@ -476,6 +562,7 @@
     " (read from interface)."
   printHighlightingInfo (iHighlighting i)
 
+
 readInterface :: FilePath -> TCM (Maybe Interface)
 readInterface file = do
     -- Decode the interface file
@@ -503,8 +590,7 @@
                          -- document.
       _               -> throwError e
 
--- | Writes the given interface to the given file. Returns the file's
--- new modification time stamp, or 'Nothing' if the write failed.
+-- | Writes the given interface to the given file.
 
 writeInterface :: FilePath -> Interface -> TCM ()
 writeInterface file i = do
@@ -543,8 +629,9 @@
 createInterface
   :: AbsolutePath          -- ^ The file to type check.
   -> C.TopLevelModuleName  -- ^ The expected module name.
+  -> Bool
   -> TCM (Interface, MaybeWarnings)
-createInterface file mname =
+createInterface file mname isMain =
   local (\e -> e { envCurrentPath = Just file }) $ do
     modFile       <- use stModuleToSource
     fileTokenInfo <- Bench.billTo [Bench.Highlighting] $
@@ -563,7 +650,7 @@
 
     -- Parsing.
     (pragmas, top) <- Bench.billTo [Bench.Parsing] $
-      liftIO $ parseFile' moduleParser file
+      runPM $ parseFile' moduleParser file
 
     pragmas <- concat <$> concreteToAbstract_ pragmas
                -- identity for top-level pragmas at the moment
@@ -576,7 +663,7 @@
     -- Scope checking.
     reportSLn "import.iface.create" 7 $ "Starting scope checking."
     topLevel <- Bench.billTo [Bench.Scoping] $
-      concreteToAbstract_ (TopLevel file top)
+      concreteToAbstract_ (TopLevel file mname top)
     reportSLn "import.iface.create" 7 $ "Finished scope checking."
 
     let ds    = topLevelDecls topLevel
@@ -643,10 +730,35 @@
     setScope scope
     reportSLn "scope.top" 50 $ "SCOPE " ++ show scope
 
+    -- TODO: It would be nice if unsolved things were highlighted
+    -- after every mutual block.
+
+    openMetas           <- getOpenMetas
+    unless (null openMetas) $ do
+      reportSLn "import.metas" 10 "We have unsolved metas."
+      reportSLn "import.metas" 10 . unlines =<< showOpenMetas
+
+    ifTopLevelAndHighlightingLevelIs NonInteractive $
+      printUnsolvedInfo
+
+    -- Andreas, 2016-08-03, issue #964
+    -- When open metas are allowed,
+    -- permanently freeze them now by turning them into postulates.
+    -- This will enable serialization.
+    -- savedMetaStore <- use stMetaStore
+    unless isMain $
+      whenM (optAllowUnsolved <$> pragmaOptions) $ do
+        withCurrentModule (scopeCurrent scope) $
+          openMetasToPostulates
+        -- Clear constraints as they might refer to what
+        -- they think are open metas.
+        stAwakeConstraints    .= []
+        stSleepingConstraints .= []
+
     -- Serialization.
     reportSLn "import.iface.create" 7 $ "Starting serialization."
     syntaxInfo <- use stSyntaxInfo
-    i <- Bench.billTo [Bench.Serialization] $ do
+    i <- Bench.billTo [Bench.Serialization, Bench.BuildInterface] $ do
       buildInterface file topLevel syntaxInfo previousHsImports previousHsImportsUHC options
 
     reportSLn "tc.top" 101 $ concat $
@@ -658,31 +770,22 @@
       ]
     reportSLn "import.iface.create" 7 $ "Finished serialization."
 
-    -- TODO: It would be nice if unsolved things were highlighted
-    -- after every mutual block.
-
-    openMetas           <- getOpenMetas
-    unless (null openMetas) $ do
-      reportSLn "import.metas" 10 "We have unsolved metas."
-      reportSLn "import.metas" 10 . unlines =<< showOpenMetas
-    unsolvedMetas       <- List.nub <$> mapM getMetaRange openMetas
-    unsolvedConstraints <- getAllConstraints
-    interactionPoints   <- getInteractionPoints
+    mallWarnings <- getAllWarnings ErrorWarnings
+                      $ if isMain then IgnoreFlags else RespectFlags
 
-    ifTopLevelAndHighlightingLevelIs NonInteractive $
-      printUnsolvedInfo
+    reportSLn "import.iface.create" 7 $ "Considering writing to interface file."
+    case mallWarnings of
+      SomeWarnings allWarnings -> return ()
+      NoWarnings               -> 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
+        writeInterface ifile i
+    reportSLn "import.iface.create" 7 $ "Finished (or skipped) writing to interface file."
 
-    reportSLn "import.iface.create" 7 $ "Starting writing to interface file."
-    r <- if and [ null unsolvedMetas, null unsolvedConstraints, null interactionPoints ]
-     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
-      writeInterface ifile i
-      return (i, NoWarnings)
-     else do
-      return (i, SomeWarnings $ Warnings unsolvedMetas unsolvedConstraints)
-    reportSLn "import.iface.create" 7 $ "Finished writing to interface file."
+    -- -- Restore the open metas, as we might continue in interaction mode.
+    -- Actually, we do not serialize the metas if checking the MainInterface
+    -- stMetaStore .= savedMetaStore
 
     -- Profiling: Print statistics.
     printStatistics 30 (Just mname) =<< getStatistics
@@ -694,8 +797,59 @@
     verboseS "profile" 1 $ do
       reportSLn "import.iface" 5 $ "Accumulated statistics."
 
-    return $ first constructIScope r
+    return $ first constructIScope (i, mallWarnings)
 
+-- | Collect all warnings that have accumulated in the state.
+-- Depending on the argument, we either respect the flags passed
+-- in by the user, or not (for instance when deciding if we are
+-- writing an interface file or not)
+
+data WhichWarnings = ErrorWarnings | AllWarnings
+  -- ^ order of constructors important for derived Ord instance
+  deriving (Eq, Ord)
+
+classifyWarning :: Warning -> WhichWarnings
+classifyWarning w = case w of
+  OldBuiltin{}               -> AllWarnings
+  EmptyRewritePragma         -> AllWarnings
+  TerminationIssue{}         -> ErrorWarnings
+  NotStrictlyPositive{}      -> ErrorWarnings
+  UnsolvedMetaVariables{}    -> ErrorWarnings
+  UnsolvedInteractionMetas{} -> ErrorWarnings
+  UnsolvedConstraints{}      -> ErrorWarnings
+  ParseWarning{}             -> ErrorWarnings
+
+classifyWarnings :: [TCWarning] -> ([TCWarning], [TCWarning])
+classifyWarnings = partition $ (< AllWarnings) . classifyWarning . tcWarning
+
+getAllWarnings' :: WhichWarnings -> IgnoreFlags -> TCM [TCWarning]
+getAllWarnings' ww ifs = do
+  openMetas            <- getOpenMetas
+  interactionMetas     <- getInteractionMetas
+  let getUniqueMetas = fmap List.nub . mapM getMetaRange
+  unsolvedInteractions <- getUniqueMetas interactionMetas
+  unsolvedMetas        <- getUniqueMetas (openMetas List.\\ interactionMetas)
+  unsolvedConstraints  <- getAllConstraints
+  collectedTCWarnings  <- use stTCWarnings
+
+  unsolved <- mapM warning_
+                   [ UnsolvedInteractionMetas unsolvedInteractions
+                   , UnsolvedMetaVariables    unsolvedMetas
+                   , UnsolvedConstraints      unsolvedConstraints ]
+
+  fmap (filter ((<= ww) . classifyWarning . tcWarning))
+    $ applyFlagsToTCWarnings ifs $ reverse
+    $ unsolved ++ collectedTCWarnings
+
+getAllWarnings :: WhichWarnings -> IgnoreFlags -> TCM MaybeWarnings
+getAllWarnings ww ifs = do
+  allWarnings <- getAllWarnings' ww ifs
+  return $ if null allWarnings
+    -- Andreas, issue 964: not checking null interactionPoints
+    -- anymore; we want to serialize with open interaction points now!
+           then NoWarnings
+           else SomeWarnings allWarnings
+
 -- constructIScope :: ScopeInfo -> Map ModuleName Scope
 constructIScope :: Interface -> Interface
 constructIScope i = i{ iScope = billToPure [ Deserialization ] $ publicModules $ iInsideScope i }
@@ -740,7 +894,7 @@
     -- Ulf, 2016-04-12:
     -- Non-closed display forms are not applicable outside the module anyway,
     -- and should be dead-code eliminated (#1928).
-    display <- HMap.filter (not . null) . HMap.map (filter isClosed) <$> use stImportsDisplayForms
+    display <- HMap.filter (not . null) . HMap.map (filter isGlobal) <$> use stImportsDisplayForms
     -- TODO: Kill some ranges?
     (display, sig) <- eliminateDeadCode display =<< getSignature
     -- Andreas, 2015-02-09 kill ranges in pattern synonyms before
diff --git a/src/full/Agda/Interaction/InteractionTop.hs b/src/full/Agda/Interaction/InteractionTop.hs
--- a/src/full/Agda/Interaction/InteractionTop.hs
+++ b/src/full/Agda/Interaction/InteractionTop.hs
@@ -1,12 +1,5 @@
 {-# LANGUAGE CPP                   #-}
-{-# LANGUAGE DeriveFoldable        #-}
-{-# LANGUAGE DeriveFunctor         #-}
-{-# LANGUAGE DeriveTraversable     #-}
-{-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE Rank2Types            #-}
 {-# LANGUAGE ScopedTypeVariables   #-}
-{-# LANGUAGE TupleSections         #-}
 
 {-# OPTIONS_GHC -fno-cse #-}
 
@@ -49,6 +42,7 @@
 import Agda.Syntax.Position
 import Agda.Syntax.Parser
 import Agda.Syntax.Common
+import Agda.Syntax.Literal
 import Agda.Syntax.Concrete as C
 import Agda.Syntax.Concrete.Generic as C
 import Agda.Syntax.Concrete.Pretty ()
@@ -67,13 +61,14 @@
 import Agda.Interaction.Response hiding (Function, ExtendedLambda)
 import qualified Agda.Interaction.Response as R
 import qualified Agda.Interaction.BasicOps as B
+import Agda.Interaction.BasicOps hiding (whyInScope)
 import Agda.Interaction.Highlighting.Precise hiding (Postulate)
 import qualified Agda.Interaction.Imports as Imp
 import Agda.Interaction.Highlighting.Generate
+import qualified Agda.Interaction.Highlighting.LaTeX as LaTeX
 import qualified Agda.Interaction.Highlighting.Range as H
 
 import Agda.Compiler.Common (IsMain (..))
-import qualified Agda.Compiler.Epic.Compiler as Epic
 import qualified Agda.Compiler.MAlonzo.Compiler as MAlonzo
 import qualified Agda.Compiler.JS.Compiler as JS
 
@@ -87,6 +82,7 @@
   )
 
 import Agda.Utils.FileName
+import Agda.Utils.Function
 import Agda.Utils.Hash
 import qualified Agda.Utils.HashMap as HMap
 import Agda.Utils.Lens
@@ -144,6 +140,22 @@
 
 type CommandM = StateT CommandState TCM
 
+-- | Restore both 'TCState' and 'CommandState'.
+
+localStateCommandM :: CommandM a -> CommandM a
+localStateCommandM m = do
+  cSt <- get
+  tcSt <- lift $ get
+  x <- m
+  lift $ put tcSt
+  put cSt
+  return x
+
+-- | Restore 'TCState', do not touch 'CommandState'.
+
+liftLocalState :: TCM a -> CommandM a
+liftLocalState = lift . localState
+
 -- | Build an opposite action to 'lift' for state monads.
 
 revLift
@@ -168,6 +180,11 @@
 liftCommandMT :: (forall a . TCM a -> TCM a) -> CommandM a -> CommandM a
 liftCommandMT f m = revLift runStateT lift $ f . ($ m)
 
+-- | Ditto, but restore state.
+
+liftCommandMTLocalState :: (forall a . TCM a -> TCM a) -> CommandM a -> CommandM a
+liftCommandMTLocalState f = liftCommandMT f . localStateCommandM
+
 -- | Put a response by the callback function given by 'stInteractionOutputCallback'.
 
 putResponse :: Response -> CommandM ()
@@ -212,9 +229,25 @@
 
 handleCommand :: (forall a. CommandM a -> CommandM a) -> CommandM () -> CommandM () -> CommandM ()
 handleCommand wrap onFail cmd = handleNastyErrors $ wrap $ do
-    res <- (`catchErr` (return . Just)) $ Nothing <$ cmd
-    maybe (return ()) (\ e -> onFail >> handleErr e) res
+    tcSt <- lift get
 
+    -- -- Andreas, 2016-11-18 OLD CODE:
+    -- -- onFail and handleErr are executed in "new" command state (not TCState).
+    -- -- But it seems that if an exception is raised, it is identical to the old state,
+    -- -- see code for catchErr.
+    -- res <- (`catchErr` (return . Just)) $ Nothing <$ cmd
+    -- maybe (return ()) (\ e -> onFail >> handleErr e) res
+
+    -- Andreas, 2016-11-18 NEW CODE: execute onFail and handleErr in handler
+    -- which means (looking at catchErr) they run in state s rathern than s'.
+    -- Yet, it looks like s == s' in case the command failed.
+    cmd `catchErr` \ e -> do
+      onFail
+      handleErr e
+      -- Andreas, 2016-11-18, issue #2174
+      -- Reset TCState after error is handled, to get rid of metas created during failed command
+      lift $ put tcSt
+
   where
     -- Preserves state so we can do unsolved meta highlighting
     catchErr :: CommandM a -> (TCErr -> CommandM a) -> CommandM a
@@ -237,16 +270,17 @@
     -- error. Because this function may switch the focus to another file
     -- the status information is also updated.
     handleErr e = do
+        unsolvedNotOK <- lift $ not . optAllowUnsolved <$> pragmaOptions
         meta    <- lift $ computeUnsolvedMetaWarnings
         constr  <- lift $ computeUnsolvedConstraints
         err     <- lift $ errorHighlighting e
         modFile <- lift $ use stModuleToSource
-        let info = compress $ mconcat
+        let info = compress $ mconcat $
                      -- Errors take precedence over unsolved things.
-                     [err, meta, constr]
+                     err : if unsolvedNotOK then [meta, constr] else []
         s <- lift $ prettyError e
         x <- lift $ optShowImplicit <$> use stPragmaOptions
-        mapM_ putResponse $
+        unless (null s) $ mapM_ putResponse $
             [ Resp_DisplayInfo $ Info_Error s ] ++
             tellEmacsToJumpToError (getRange e) ++
             [ Resp_HighlightingInfo info modFile ] ++
@@ -306,6 +340,9 @@
     -- show those instead.
   | Cmd_metas
 
+    -- | Display all warnings.
+  | Cmd_warnings
+
     -- | Shows all the top-level names in the given module, along with
     -- their types. Uses the top-level scope.
   | Cmd_show_module_contents_toplevel
@@ -316,7 +353,10 @@
     -- identifiers in their type.
   | Cmd_search_about_toplevel B.Rewrite String
 
-  | Cmd_solveAll
+    -- | Solve (all goals / the goal at point) whose values are determined by
+    -- the constraints.
+  | Cmd_solveAll B.Rewrite
+  | Cmd_solveOne B.Rewrite InteractionId range String
 
     -- | Parse the given expression (as if it were defined at the
     -- top-level of the current module) and infer its type.
@@ -326,7 +366,7 @@
 
     -- | Parse and type check the given expression (as if it were defined
     -- at the top-level of the current module) and normalise it.
-  | Cmd_compute_toplevel Bool -- Ignore abstract?
+  | Cmd_compute_toplevel B.ComputeMode
                          String
 
     ------------------------------------------------------------------------
@@ -403,7 +443,7 @@
 
   | Cmd_make_case       InteractionId range String
 
-  | Cmd_compute         Bool -- Ignore abstract?
+  | Cmd_compute         B.ComputeMode
                         InteractionId range String
 
   | Cmd_why_in_scope    InteractionId range String
@@ -519,14 +559,15 @@
   cmd_load' m argv True $ \_ -> interpret Cmd_metas
 
 interpret (Cmd_compile b file argv) =
-  cmd_load' file argv False $ \(i, mw) -> do
+  cmd_load' file argv (b == LaTeX) $ \(i, mw) -> do
+    mw <- lift $ Imp.applyFlagsToMaybeWarnings RespectFlags mw
     case mw of
       Imp.NoWarnings -> do
         lift $ case b of
-          MAlonzo -> MAlonzo.compilerMain IsMain i
-          MAlonzoNoMain -> MAlonzo.compilerMain NotMain i
-          Epic    -> Epic.compilerMain i
-          JS      -> JS.compilerMain i
+          GHC       -> MAlonzo.compilerMain IsMain i
+          GHCNoMain -> MAlonzo.compilerMain NotMain i
+          JS        -> JS.compilerMain i
+          LaTeX     -> LaTeX.generateLaTeX i
         display_info $ Info_CompilationOk
       Imp.SomeWarnings w ->
         display_info $ Info_Error $ unlines
@@ -538,38 +579,46 @@
     display_info . Info_Constraints . unlines . map show =<< lift B.getConstraints
 
 interpret Cmd_metas = do -- CL.showMetas []
-  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)
+  unsolvedNotOK <- lift $ not . optAllowUnsolved <$> pragmaOptions
+  ms <- lift showOpenMetas
+  (pwe, pwa) <- interpretWarnings
+  display_info $ Info_AllGoalsWarnings (unlines ms) pwa pwe
 
+interpret Cmd_warnings = do
+  -- Ulf, 2016-08-09: Warnings are now printed in the info buffer by Cmd_metas.
+  -- pws <- interpretWarnings
+  -- unless (null pwd) $ display_info $ Info_Warning pws
+  return ()
+
+
 interpret (Cmd_show_module_contents_toplevel norm s) =
   liftCommandMT B.atTopLevel $ showModuleContents norm noRange s
 
 interpret (Cmd_search_about_toplevel norm s) =
   liftCommandMT B.atTopLevel $ searchAbout norm noRange s
 
-interpret Cmd_solveAll = do
-  out <- lift $ mapM lowr =<< B.getSolvedInteractionPoints False -- only solve metas which have a proper instantiation, i.e., not another meta
-  putResponse $ Resp_SolveAll out
-  where
-      lowr (i, m, e) = do
-        mi <- getMetaInfo <$> lookupMeta m
-        e <- withMetaInfo mi $ lowerMeta <$> abstractToConcreteCtx TopCtx e
-        return (i, e)
+interpret (Cmd_solveAll norm)        = solveInstantiatedGoals norm Nothing
+interpret (Cmd_solveOne norm ii _ _) = solveInstantiatedGoals norm' (Just ii)
+  -- `solveOne` is called via `agda2-maybe-normalised` which does not use
+  -- AsIs < Simplified < Normalised but rather Simplified < Instantiated < Normalised
+  -- So we remap the Rewrite modifiers to match solveAll's behaviour.
+  -- NB: instantiate is called in getSolvedInteractionPoints no matter what.
+  where norm' = case norm of
+                  Simplified   -> AsIs
+                  Instantiated -> Simplified
+                  _            -> norm
 
 interpret (Cmd_infer_toplevel norm s) =
   parseAndDoAtToplevel (B.typeInCurrent norm) Info_InferredType s
 
-interpret (Cmd_compute_toplevel ignore s) =
-  parseAndDoAtToplevel (allowNonTerminatingReductions .
-                        if ignore then ignoreAbstractMode . c
-                                  else inConcreteMode . c)
-                       Info_NormalForm
-                       s
-  where c = B.evalInCurrent
+interpret (Cmd_compute_toplevel cmode s) =
+  parseAndDoAtToplevel' action Info_NormalForm $ computeWrapInput cmode s
+  where
+  action = allowNonTerminatingReductions
+         . (if computeIgnoreAbstract cmode then ignoreAbstractMode else inConcreteMode)
+         . (B.showComputed cmode <=< B.evalInCurrent)
 
+
 interpret (ShowImplicitArgs showImpl) = do
   opts <- lift commandLineOptions
   setCommandLineOpts $
@@ -667,7 +716,7 @@
       -- For highlighting, Resp_GiveAction needs to access
       -- the @oldInteractionScope@s of the interaction points solved by Auto.
       -- We dig them out from the state before Auto was invoked.
-      insertOldInteractionScope ii =<< lift (localState (put st >> getInteractionScope ii))
+      insertOldInteractionScope ii =<< liftLocalState (put st >> getInteractionScope ii)
       -- Andreas, 2014-07-07: NOT TRUE:
       -- -- Andreas, 2014-07-05: The following should be obsolete,
       -- -- as Auto has removed the interaction points already:
@@ -686,19 +735,19 @@
    Right (Right s) -> give_gen ii rng s Refine
 
 interpret (Cmd_context norm ii _ _) =
-  display_info . Info_Context =<< lift (prettyContext norm False ii)
+  display_info . Info_Context =<< liftLocalState (prettyContext norm False ii)
 
 interpret (Cmd_helper_function norm ii rng s) =
-  display_info . Info_HelperFunction =<< lift (cmd_helper_function norm ii rng s)
+  display_info . Info_HelperFunction =<< liftLocalState (cmd_helper_function norm ii rng s)
 
 interpret (Cmd_infer norm ii rng s) =
   display_info . Info_InferredType
-    =<< lift (B.withInteractionId ii
+    =<< liftLocalState (B.withInteractionId ii
           (prettyATop =<< B.typeInMeta ii norm =<< B.parseExprIn ii rng s))
 
 interpret (Cmd_goal_type norm ii _ _) =
   display_info . Info_CurrentGoal
-    =<< lift (B.withInteractionId ii $ prettyTypeOfMeta norm ii)
+    =<< liftLocalState (B.withInteractionId ii $ prettyTypeOfMeta norm ii)
 
 interpret (Cmd_goal_type_context norm ii rng s) =
   cmd_goal_type_context_and empty norm ii rng s
@@ -707,8 +756,8 @@
   -- In case of the empty expression to type, don't fail with
   -- a stupid parse error, but just fall back to
   -- Cmd_goal_type_context.
-  have <- if all Char.isSpace s then return empty else do
-    typ <- lift $ B.withInteractionId ii $
+  have <- if all Char.isSpace s then return empty else liftLocalState $ do
+    typ <- B.withInteractionId ii $
       prettyATop =<< B.typeInMeta ii norm =<< B.parseExprIn ii rng s
     return $ text "Have:" <+> typ
   cmd_goal_type_context_and have norm ii rng s
@@ -723,11 +772,23 @@
   liftCommandMT (B.withInteractionId ii) $ whyInScope s
 
 interpret (Cmd_make_case ii rng s) = do
-  (casectxt , cs) <- lift $ makeCase ii rng s
+  (f, casectxt, cs) <- lift $ makeCase ii rng s
   liftCommandMT (B.withInteractionId ii) $ do
     hidden <- lift $ showImplicitArguments
-    pcs <- lift $ mapM prettyA $ List.map (extlam_dropLLifted casectxt hidden) cs
-    putResponse $ Resp_MakeCase (makeCaseVariant casectxt) (List.map (extlam_dropName casectxt . render) pcs)
+    tel <- lift $ lookupSection (qnameModule f) -- don't shadow the names in this telescope
+    let cs'  :: [A.Clause] = List.map (extlam_dropLLifted casectxt hidden) cs
+    pcs      :: [Doc]     <- lift $ inTopContext $ addContext tel $ mapM prettyA cs'
+    let pcs' :: [String]   = List.map (extlam_dropName casectxt . render) pcs
+    lift $ reportSDoc "interaction.case" 60 $ TCP.vcat
+      [ TCP.text "InteractionTop.Cmd_make_case"
+      , TCP.nest 2 $ TCP.vcat
+        [ TCP.text "cs   = " TCP.<+> TCP.vcat (map prettyA cs)
+        , TCP.text "cs'  = " TCP.<+> TCP.vcat (map prettyA cs')
+        , TCP.text "pcs  = " TCP.<+> TCP.vcat (map return pcs)
+        , TCP.text "pcs' = " TCP.<+> TCP.vcat (map TCP.text pcs')
+        ]
+      ]
+    putResponse $ Resp_MakeCase (makeCaseVariant casectxt) pcs'
   where
     render = renderStyle (style { mode = OneLineMode })
 
@@ -750,31 +811,66 @@
     -- Drops pattern added to extended lambda functions when lambda lifting them
     extlam_dropLLifted :: CaseContext -> Bool -> A.Clause -> A.Clause
     extlam_dropLLifted Nothing _ x = x
-    extlam_dropLLifted (Just (ExtLamInfo h nh)) hidden (A.Clause (A.LHS info A.LHSProj{} ps) rhs decl catchall) = __IMPOSSIBLE__
-    extlam_dropLLifted (Just (ExtLamInfo h nh)) hidden (A.Clause (A.LHS info (A.LHSHead name nps) ps) rhs decl catchall)
+    extlam_dropLLifted _ _ (A.Clause (A.LHS _ A.LHSProj{} _) _ _ _ _) = __IMPOSSIBLE__
+    extlam_dropLLifted (Just (ExtLamInfo h nh)) hidden (A.Clause (A.LHS info (A.LHSHead name nps) ps) dots rhs decl catchall)
       = let n = if hidden then h + nh else nh
         in
-         (A.Clause (A.LHS info (A.LHSHead name (drop n nps)) ps) rhs decl catchall)
+         (A.Clause (A.LHS info (A.LHSHead name (drop n nps)) ps) dots rhs decl catchall)
 
-interpret (Cmd_compute ignore ii rng s) = do
-  e <- lift $ B.parseExprIn ii rng s
-  d <- lift $ B.withInteractionId ii $ do
-         let c = B.evalInCurrent e
-         v <- if ignore then ignoreAbstractMode c else c
-         prettyATop v
-  display_info $ Info_NormalForm d
+interpret (Cmd_compute cmode ii rng s) = display_info . Info_NormalForm =<< do
+  liftLocalState $ do
+    e <- B.parseExprIn ii rng $ computeWrapInput cmode s
+    B.withInteractionId ii $ do
+      showComputed cmode =<< do applyWhen (computeIgnoreAbstract cmode) ignoreAbstractMode $ B.evalInCurrent e
 
+
 interpret Cmd_show_version = display_info Info_Version
 
+-- | Show warnings
+interpretWarnings :: CommandM (String, String)
+interpretWarnings = do
+  mws <- lift $ Imp.getAllWarnings Imp.AllWarnings RespectFlags
+  case filter isNotMeta <$> mws of
+    Imp.SomeWarnings ws@(_:_) -> do
+      let (we, wa) = Imp.classifyWarnings ws
+      pwe <- lift $ prettyTCWarnings we
+      pwa <- lift $ prettyTCWarnings wa
+      return (pwe, pwa)
+    _ -> return ("", "")
+   where isNotMeta w = case tcWarning w of
+                         UnsolvedInteractionMetas{} -> False
+                         UnsolvedMetaVariables{}    -> False
+                         _                          -> True
+
+
+-- | Solved goals already instantiated internally
+-- The second argument potentially limits it to one specific goal.
+solveInstantiatedGoals :: B.Rewrite -> Maybe InteractionId -> CommandM ()
+solveInstantiatedGoals norm mii = do
+  -- Andreas, 2016-10-23 issue #2280: throw away meta elims.
+  out <- lift $ local (\ e -> e { envPrintMetasBare = True }) $ do
+    sip <- B.getSolvedInteractionPoints False norm
+           -- only solve metas which have a proper instantiation, i.e., not another meta
+    maybe id (\ ii -> filter ((ii ==) . fst)) mii <$> mapM prt sip
+  putResponse $ Resp_SolveAll out
+  where
+      prt (i, m, e) = do
+        mi <- getMetaInfo <$> lookupMeta m
+        e <- withMetaInfo mi $ abstractToConcreteCtx TopCtx e
+        return (i, e)
+
+
 -- | 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) $
+    B.withInteractionId (B.outputFormId $ B.OutputForm noRange [] i) $
       showATop i
   -- Show unsolved implicit arguments simplified.
-  dh <- mapM showA' =<< B.typesOfHiddenMetas B.Simplified
+  unsolvedNotOK <- not . optAllowUnsolved <$> pragmaOptions
+  hms <- (guard unsolvedNotOK >>) <$> B.typesOfHiddenMetas B.Simplified
+  dh <- mapM showA' hms
   return $ di ++ dh
   where
     metaId (B.OfType i _) = i
@@ -822,8 +918,8 @@
     case z of
       Left err   -> lift $ typeError $ GenericError err
       Right opts -> do
-        lift $ TM.setCommandLineOptions' relativeTo $
-          mapPragmaOptions (\ o -> o { optAllowUnsolved = unsolvedOK }) opts
+        let update o = o { optAllowUnsolved = unsolvedOK && optAllowUnsolved o}
+        lift $ TM.setCommandLineOptions' relativeTo $ mapPragmaOptions update opts
         displayStatus
 
     -- Reset the state, preserving options and decoded modules. Note
@@ -863,10 +959,11 @@
 
 -- | Available backends.
 
-data Backend = MAlonzo
-             | MAlonzoNoMain
-             | Epic | JS
-    deriving (Show, Read)
+data Backend = GHC
+             | GHCNoMain
+             | JS
+             | LaTeX
+    deriving (Show, Read, Eq)
 
 data GiveRefine = Give | Refine | Intro
   deriving (Eq, Show)
@@ -916,7 +1013,10 @@
     modifyTheInteractionPoints $ replace ii iis
     -- print abstract expr
     ce        <- lift $ abstractToConcreteEnv (makeEnv scope) ae
-    lift $ reportSLn "interaction.give" 30 $ "ce = " ++ show ce
+    lift $ reportSLn "interaction.give" 30 $ unlines
+      [ "ce = " ++ show ce
+      , "scopePrecedence = " ++ show (scopePrecedence scope)
+      ]
     -- if the command was @Give@, use the literal user input;
     -- Andreas, 2014-01-15, see issue 1020:
     -- Refine could solve a goal by introducing the sole constructor
@@ -957,7 +1057,7 @@
   where
     dummy = mkName_ (NameId 0 0) "dummy"
     info  = mkDefInfo (nameConcrete dummy) noFixity' PublicAccess ConcreteDef (getRange e)
-    decl  = A.Axiom NoFunSig info defaultArgInfo (qnameFromList [dummy]) e
+    decl  = A.Axiom NoFunSig info defaultArgInfo Nothing (qnameFromList [dummy]) e
 
 -- | Sorts interaction points based on their ranges.
 
@@ -987,8 +1087,8 @@
   ctx <- B.contextOfMeta ii norm
   es  <- mapM (prettyATop . B.ofExpr) ctx
   ns  <- mapM (showATop   . B.ofName) ctx
-  let shuffle = if rev then reverse else id
-  return $ align 10 $ filter (not . null. fst) $ shuffle $ zip ns (map (text ":" <+>) es)
+  return $ align 10 $ applyWhen rev reverse $
+    filter (not . null . fst) $ zip ns $ map (text ":" <+>) es
 
 -- | Create type of application of new helper function that would solve the goal.
 
@@ -997,33 +1097,39 @@
   prettyATop =<< B.metaHelperType norm ii r s
 
 -- | Displays the current goal, the given document, and the current
--- context.
+--   context.
+--
+--   Should not modify the state.
 
 cmd_goal_type_context_and :: Doc -> B.Rewrite -> InteractionId -> Range ->
                              String -> StateT CommandState (TCMT IO) ()
-cmd_goal_type_context_and doc norm ii _ _ = do
-  goal <- lift $ B.withInteractionId ii $ prettyTypeOfMeta norm ii
-  ctx  <- lift $ prettyContext norm True ii
-  display_info $ Info_GoalType
-                (text "Goal:" <+> goal $+$
-                 doc $+$
-                 text (replicate 60 '\x2014') $+$
-                 ctx)
+cmd_goal_type_context_and doc norm ii _ _ = display_info . Info_GoalType =<< do
+  lift $ do
+    goal <- B.withInteractionId ii $ prettyTypeOfMeta norm ii
+    ctx  <- prettyContext norm True ii
+    return $ vcat
+      [ text "Goal:" <+> goal
+      , doc
+      , text (replicate 60 '\x2014')
+      , ctx
+      ]
 
 -- | Shows all the top-level names in the given module, along with
 -- their types.
 
 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 <- TCP.prettyTCM t
-     return (show x, text ":" <+> t)
-  display_info $ Info_ModuleContents $
-    text "Modules" $$
-    nest 2 (vcat $ map (text . show) modules) $$
-    text "Names" $$
-    nest 2 (align 10 types')
+showModuleContents norm rng s = display_info . Info_ModuleContents =<< do
+  liftLocalState $ do
+    (modules, types) <- B.moduleContents norm rng s
+    types' <- forM types $ \ (x, t) -> do
+      t <- TCP.prettyTCM t
+      return (show x, text ":" <+> t)
+    return $ vcat
+      [ text "Modules"
+      , nest 2 $ vcat $ map (text . show) modules
+      , text "Names"
+      , nest 2 $ align 10 types'
+      ]
 
 -- | Shows all the top-level names in scope which mention all the given
 -- identifiers in their type.
@@ -1044,12 +1150,12 @@
 -- | Explain why something is in scope.
 
 whyInScope :: String -> CommandM ()
-whyInScope s = do
-  (v, xs, ms) <- lift $ B.whyInScope s
-  cwd <- do
-    Just (file, _) <- gets $ theCurrentFile
-    return $ takeDirectory $ filePath file
-  display_info . Info_WhyInScope =<< do lift $ explanation cwd v xs ms
+whyInScope s = display_info . Info_WhyInScope =<< do
+  Just (file, _) <- gets theCurrentFile
+  let cwd = takeDirectory $ filePath file
+  liftLocalState $ do
+    (v, xs, ms) <- B.whyInScope s
+    explanation cwd v xs ms
   where
     explanation _ Nothing [] [] = TCP.text (s ++ " is not in scope.")
     explanation cwd v xs ms = TCP.vcat
@@ -1129,6 +1235,8 @@
 
 
 -- | Computes some status information.
+--
+--   Does not change the state.
 
 status :: CommandM Status
 status = do
@@ -1145,7 +1253,7 @@
       case t == t' of
         False -> return False
         True  -> do
-          mm <- Map.lookup f <$> sourceToModule
+          mm <- lookupModuleFromSource f
           case mm of
             Nothing -> return False -- work-around for Issue1007
             Just m  -> not . miWarnings . fromMaybe __IMPOSSIBLE__ <$> getVisitedModule m
@@ -1154,15 +1262,17 @@
                   , sChecked               = checked
                   }
 
--- | Displays\/updates status information.
+-- | Displays or updates status information.
+--
+--   Does not change the state.
 
 displayStatus :: CommandM ()
 displayStatus =
   putResponse . Resp_Status  =<< status
 
 -- | @display_info@ does what @'display_info'' False@ does, but
--- additionally displays some status information (see 'status' and
--- 'displayStatus').
+--   additionally displays some status information (see 'status' and
+--   'displayStatus').
 
 display_info :: DisplayInfo -> CommandM ()
 display_info info = do
@@ -1179,42 +1289,27 @@
 nameModifiers = "" : "'" : "''" : [show i | i <-[3..]]
 
 
--- | Kill meta numbers and ranges from all metas (@?@ and @_@).
-lowerMeta :: (C.ExprLike a) => a -> a
-lowerMeta = C.mapExpr kill where
-  kill e =
-    case e of
-      C.QuestionMark{} -> preMeta
-      C.Underscore{}   -> preUscore
-      C.App{}          -> case appView e of
-        C.AppView (C.QuestionMark _ _) _ -> preMeta
-        C.AppView (C.Underscore   _ _) _ -> preUscore
-        _ -> e
-      C.Paren r q@(C.QuestionMark _ Nothing) -> q
-      _ -> e
-
-  preMeta   = C.QuestionMark noRange Nothing
-  preUscore = C.Underscore   noRange Nothing
-
-
 -- | Parses and scope checks an expression (using the \"inside scope\"
 -- as the scope), performs the given command with the expression as
 -- input, and displays the result.
 
-parseAndDoAtToplevel
-  :: (A.Expr -> TCM A.Expr)
+parseAndDoAtToplevel'
+  :: (A.Expr -> TCM Doc)
      -- ^ The command to perform.
   -> (Doc -> DisplayInfo)
      -- ^ The name to use for the buffer displaying the output.
   -> String
      -- ^ The expression to parse.
   -> CommandM ()
-parseAndDoAtToplevel cmd title s = do
-  e   <- liftIO $ parse exprParser s
-  (time, res) <-
+parseAndDoAtToplevel' cmd title s = do
+  (time, res) <- localStateCommandM $ do
+    e <- lift $ runPM $ parse exprParser s
     maybeTimed (lift $ B.atTopLevel $
-                prettyA =<< cmd =<< concreteToAbstract_ e)
+                cmd =<< concreteToAbstract_ e)
   display_info (title $ fromMaybe empty time $$ res)
+
+parseAndDoAtToplevel :: (A.Expr -> TCM A.Expr) -> (Doc -> DisplayInfo) -> String -> CommandM ()
+parseAndDoAtToplevel cmd = parseAndDoAtToplevel' (prettyA <=< cmd)
 
 maybeTimed :: CommandM a -> CommandM (Maybe Doc, a)
 maybeTimed work = do
diff --git a/src/full/Agda/Interaction/Library.hs b/src/full/Agda/Interaction/Library.hs
--- a/src/full/Agda/Interaction/Library.hs
+++ b/src/full/Agda/Interaction/Library.hs
@@ -1,5 +1,3 @@
-{-# LANGUAGE TupleSections #-}
-{-# LANGUAGE PatternGuards #-}
 
 module Agda.Interaction.Library
   ( getDefaultLibraries
@@ -75,10 +73,12 @@
       if up == root then return [] else findAgdaLibFiles up
     files -> return files
 
-getDefaultLibraries :: FilePath -> LibM ([LibName], [FilePath])
-getDefaultLibraries root = mkLibM [] $ do
+getDefaultLibraries :: FilePath -> Bool -> LibM ([LibName], [FilePath])
+getDefaultLibraries root optDefaultLibs = mkLibM [] $ do
   libs <- findAgdaLibFiles root
-  if null libs then first (, []) <$> readDefaultsFile
+  if null libs
+    then
+    if optDefaultLibs then first (, []) <$> readDefaultsFile else return (([], []), [])
     else first libsAndPaths <$> parseLibFiles Nothing (zip (repeat 0) libs)
   where
     libsAndPaths ls = (concatMap libDepends ls, concatMap libIncludes ls)
@@ -94,13 +94,14 @@
   `catchIO` \e -> return (["."], [OtherError $ "Failed to read defaults file.\n" ++ show e])
 
 getLibrariesFile :: Maybe FilePath -> IO FilePath
-getLibrariesFile overrideLibFile = do
+getLibrariesFile (Just overrideLibFile) = return overrideLibFile
+getLibrariesFile Nothing = do
   agdaDir <- getAgdaAppDir
-  let override = maybe [] (:[]) overrideLibFile
-  files   <- (override ++) <$> filterM doesFileExist (map (agdaDir </>) defaultLibraryFiles)
+  let defaults = map (agdaDir </>) defaultLibraryFiles
+  files <- filterM doesFileExist defaults
   case files of
     file : _ -> return file
-    []       -> return (agdaDir </> last defaultLibraryFiles) -- doesn't exist, but that's ok
+    []       -> return (last defaults) -- doesn't exist, but that's ok
 
 getInstalledLibraries :: Maybe FilePath -> LibM [AgdaLibFile]
 getInstalledLibraries overrideLibFile = mkLibM [] $ do
@@ -195,4 +196,3 @@
             valid [] = False
             valid vs = not $ any null vs
     _ -> (s, [])
-
diff --git a/src/full/Agda/Interaction/Library/Parse.hs b/src/full/Agda/Interaction/Library/Parse.hs
--- a/src/full/Agda/Interaction/Library/Parse.hs
+++ b/src/full/Agda/Interaction/Library/Parse.hs
@@ -1,7 +1,3 @@
-{-# LANGUAGE PatternGuards #-}
-{-# LANGUAGE ExistentialQuantification #-}
-{-# LANGUAGE FlexibleContexts #-}
-{-# LANGUAGE RecordWildCards #-}
 module Agda.Interaction.Library.Parse (parseLibFile, stripComments, splitCommas) where
 
 import Control.Applicative
@@ -31,7 +27,7 @@
 agdaLibFields :: [Field]
 agdaLibFields =
   [ Field "name"    False parseName                      $ \ name l -> l { libName     = name }
-  , Field "include" True  pure                           $ \ inc  l -> l { libIncludes = inc }
+  , Field "include" True  (pure . concatMap words)       $ \ inc  l -> l { libIncludes = inc }
   , Field "depend"  True  (pure . concatMap splitCommas) $ \ ds   l -> l { libDepends  = ds }
   ]
   where
diff --git a/src/full/Agda/Interaction/MakeCase.hs b/src/full/Agda/Interaction/MakeCase.hs
--- a/src/full/Agda/Interaction/MakeCase.hs
+++ b/src/full/Agda/Interaction/MakeCase.hs
@@ -1,12 +1,14 @@
 {-# LANGUAGE CPP             #-}
-{-# LANGUAGE DoAndIfThenElse #-}
-{-# LANGUAGE TupleSections   #-}
 
 module Agda.Interaction.MakeCase where
 
 import Prelude hiding (mapM, mapM_, null)
+
 import Control.Applicative hiding (empty)
 import Control.Monad hiding (mapM, mapM_, forM)
+
+import qualified Data.Map as Map
+import qualified Data.List as List
 import Data.Maybe
 import Data.Traversable
 
@@ -27,7 +29,6 @@
 import Agda.TypeChecking.RecordPatterns
 import Agda.TypeChecking.Reduce
 import Agda.TypeChecking.Substitute
-import Agda.TypeChecking.Substitute.Pattern
 import Agda.TypeChecking.Irrelevance
 import Agda.TypeChecking.Rules.LHS.Implicit
 import Agda.TheTypeChecker
@@ -50,55 +51,17 @@
 
 type CaseContext = Maybe ExtLamInfo
 
--- | Find the clause whose right hand side is the given meta
--- BY SEARCHING THE WHOLE SIGNATURE. Returns
--- the original clause, before record patterns have been translated
--- away. Raises an error if there is no matching clause.
---
--- Andreas, 2010-09-21: This looks like a SUPER UGLY HACK to me. You are
--- walking through the WHOLE signature to find an information you have
--- thrown away earlier.  (shutter with disgust).
--- This code fails for record rhs because they have been eta-expanded,
--- so the MVar is gone.
-findClause :: MetaId -> TCM (CaseContext, QName, Clause)
-findClause m = do
-  sig <- getImportedSignature
-  let res = do
-        def <- HMap.elems $ sig ^. sigDefinitions
-        Function{funClauses = cs, funExtLam = extlam} <- [theDef def]
-        c <- cs
-        unless (rhsIsm $ clauseBody c) []
-        return (extlam, defName def, c)
-  case res of
-    []  -> do
-      reportSDoc "interaction.case" 10 $ vcat $
-        [ text "Interaction.MakeCase.findClause fails"
-        , text "expected rhs to be meta var" <+> (text $ show m)
-        , text "but could not find it in the signature"
-        ]
-      reportSDoc "interaction.case" 100 $ vcat $ map (text . show) (HMap.elems $ sig ^. sigDefinitions)  -- you asked for it!
-      ifM (isInstantiatedMeta m)
-        -- Andreas, 2012-03-22 If the goal has been solved by eta expansion, further
-        -- case splitting is pointless and `smart-ass Agda' will refuse.
-        -- Maybe not the best solution, but the lazy alternative to replace this
-        -- SUPER UGLY HACK.
-        (typeError $ GenericError "Since goal is solved, further case distinction is not supported; try `Solve constraints' instead")
-        (typeError $ GenericError "Right hand side must be a single hole when making a case distinction")
-    [triple] -> return triple
-    _   -> __IMPOSSIBLE__
-  where
-    rhsIsm (Bind b)   = rhsIsm $ unAbs b
-    rhsIsm NoBody     = False
-    rhsIsm (Body e)   = case ignoreSharing e of
-      MetaV m' _  -> m == m'
-      _           -> False
-
-
 -- | Parse variables (visible or hidden), returning their de Bruijn indices.
 --   Used in 'makeCase'.
 
-parseVariables :: InteractionId -> Range -> [String] -> TCM [Int]
-parseVariables ii rng ss = do
+parseVariables
+  :: QName           -- ^ The function name.
+  -> Telescope       -- ^ The telescope of the clause we are splitting.
+  -> InteractionId   -- ^ The hole of this function we are working on.
+  -> Range           -- ^ The range of this hole.
+  -> [String]        -- ^ The words the user entered in this hole (variable names).
+  -> TCM [Int]       -- ^ The computed de Bruijn indices of the variables to split on.
+parseVariables f tel ii rng ss = do
 
   -- Get into the context of the meta.
   mId <- lookupInteractionId ii
@@ -111,17 +74,44 @@
     xs <- forM (downFrom n) $ \ i -> do
       (,i) . P.render <$> prettyTCM (var i)
 
-    -- Get number of module parameters.  These cannot be split on.
-    fv <- getCurrentModuleFreeVars
-    let numSplittableVars = n - fv
+    -- We might be under some lambdas, in which case the context
+    -- is bigger than the number of pattern variables.
+    let nlocals = n - size tel
+    unless (nlocals >= 0) __IMPOSSIBLE__
 
+    reportSDoc "interaction.case" 20 $ do
+      m   <- currentModule
+      tel <- lookupSection m
+      fv  <- getDefFreeVars f
+      vcat
+       [ text "parseVariables:"
+       , text "current module  =" <+> prettyTCM m
+       , text "current section =" <+> inTopContext (prettyTCM tel)
+       , text $ "function's fvs  = " ++ show fv
+       , text $ "number of locals= " ++ show nlocals
+       ]
+
+    -- Compute which variables correspond to module parameters. These cannot be split on.
+    -- Note: these are not necessarily the outer-most bound variables, since
+    -- module parameter refinement may have instantiated them, or
+    -- with-abstraction might have reshuffled the variables (#2181).
+    pars <- freeVarsToApply f
+    let nonSplittableVars = [ i | Var i [] <- map unArg pars ]
+
     -- Resolve each string to a variable.
     forM ss $ \ s -> do
-      let failNotVar = typeError $ GenericError $ "Not a (splittable) variable: " ++ s
+      let failNotVar = typeError $ GenericError $ "Not a variable: " ++ s
           done i
-            | i < numSplittableVars = return i
-            | otherwise             = failNotVar
+            | i < 0                    = typeError $ GenericError $
+               "Cannot split on local variable " ++ s
+               -- See issue #2239
 
+            | elem i nonSplittableVars = typeError $ GenericError $
+               "Cannot split on variable " ++ s ++ ". It is either a module parameter " ++
+               "or already instantiated by a dot pattern"
+
+            | otherwise                = return i
+
       -- Note: the range in the concrete name is only approximate.
       resName <- resolveName $ C.QName $ C.Name r $ C.stringNameParts s
       case resName of
@@ -137,7 +127,7 @@
         VarName x -> do
           (v, _) <- getVarInfo x
           case ignoreSharing v of
-            Var i [] -> done i
+            Var i [] -> done $ i - nlocals
             _        -> failNotVar
 
         -- If s is not a name, compare it to the printed variable representation.
@@ -145,17 +135,48 @@
         UnknownName -> do
           case filter ((s ==) . fst) xs of
             []      -> typeError $ GenericError $ "Unbound variable " ++ s
-            [(_,i)] -> done i
+            [(_,i)] -> done $ i - nlocals
             -- Issue 1325: Variable names in context can be ambiguous.
             _       -> typeError $ GenericError $ "Ambiguous variable " ++ s
 
+-- | Lookup the clause for an interaction point in the signature.
+--   Returns the CaseContext, the clause itself, and a list of previous clauses
 
+-- Andreas, 2016-06-08, issue #289 and #2006.
+-- This replace the old findClause hack (shutter with disgust).
+getClauseForIP :: QName -> Int -> TCM (CaseContext, Clause, [Clause])
+getClauseForIP f clauseNo = do
+  (theDef <$> getConstInfo f) >>= \case
+    Function{funClauses = cs, funExtLam = extlam} -> do
+      let (cs1,cs2) = fromMaybe __IMPOSSIBLE__ $ splitExactlyAt clauseNo cs
+          c         = fromMaybe __IMPOSSIBLE__ $ headMaybe cs2
+      return (extlam, c, cs1)
+    d -> do
+      reportSDoc "impossible" 10 $ vcat
+        [ text "getClauseForIP" <+> prettyTCM f <+> text (show clauseNo)
+          <+> text "received"
+        , text (show d)
+        ]
+      __IMPOSSIBLE__
+
+
 -- | Entry point for case splitting tactic.
-makeCase :: InteractionId -> Range -> String -> TCM (CaseContext , [A.Clause])
+
+makeCase :: InteractionId -> Range -> String -> TCM (QName, CaseContext , [A.Clause])
 makeCase hole rng s = withInteractionId hole $ do
-  meta <- lookupInteractionId hole
-  (casectxt, f, clause@(Clause{ clauseTel = tel, namedClausePats = ps })) <- findClause meta
-  let perm = clausePerm clause
+
+  -- Get function clause which contains the interaction point.
+
+  InteractionPoint { ipMeta = mm, ipClause = ipCl} <- lookupInteractionPoint hole
+  let meta = fromMaybe __IMPOSSIBLE__ mm
+  (f, clauseNo, rhs) <- case ipCl of
+    IPClause f clauseNo rhs-> return (f, clauseNo, rhs)
+    IPNoClause -> typeError $ GenericError $
+      "Cannot split here, as we are not in a function definition"
+  (casectxt, clause, prevClauses) <- getClauseForIP f clauseNo
+  let perm = fromMaybe __IMPOSSIBLE__ $ clausePerm clause
+      tel  = clauseTel  clause
+      ps   = namedClausePats clause
   reportSDoc "interaction.case" 10 $ vcat
     [ text "splitting clause:"
     , nest 2 $ vcat
@@ -166,9 +187,14 @@
       , text "ps      =" <+> text (show ps)
       ]
     ]
+
+  -- Check split variables.
+
   let vars = words s
+
+  -- If we have no split variables, split on result.
+
   if null vars then do
-    -- split result
     (piTel, 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.
@@ -186,32 +212,46 @@
       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
+          -- Andreas, 2016-05-03: do not introduce function arguments after projection.
+          -- This is sometimes annoying and can anyway be done by another C-c C-c.
+          -- mapM (snd <.> fixTarget) $ splitClauses cov
+          return $ splitClauses cov
+    checkClauseIsClean ipCl
+    (f, casectxt,) <$> mapM (makeAbstractClause f rhs) scs
   else do
     -- split on variables
-    vars <- parseVariables hole rng vars
-    cs <- split f vars $ clauseToSplitClause clause
+    xs <- parseVariables f tel hole rng vars
+    -- Variables that are not in scope yet are brought into scope (@toShow@)
+    -- The other variables are split on (@toSplit@).
+    let (toShow, toSplit) = flip mapEither (zip xs vars) $ \ (x, s) ->
+          if take 1 s == "." then Left x else Right x
+    let sc = makePatternVarsVisible toShow $ clauseToSplitClause clause
+    scs <- split f toSplit sc
+    -- filter out clauses that are already covered
+    scs <- filterM (not <.> isCovered f prevClauses . fst) scs
+    cs <- forM scs $ \(sc, isAbsurd) -> do
+            if isAbsurd then makeAbsurdClause f sc else makeAbstractClause f rhs sc
     reportSDoc "interaction.case" 65 $ vcat
       [ text "split result:"
       , nest 2 $ vcat $ map (text . show) cs
       ]
-    return (casectxt,cs)
-  where
+    checkClauseIsClean ipCl
+    return (f, casectxt, cs)
 
+  where
   failNoCop = typeError $ GenericError $
     "OPTION --copatterns needed to split on result here"
 
-  split :: QName -> [Nat] -> SplitClause -> TCM [A.Clause]
-  split f [] clause = singleton <$> makeAbstractClause f clause
+  -- Split clause on given variables, return the resulting clauses together
+  -- with a bool indicating whether each clause is absurd
+  split :: QName -> [Nat] -> SplitClause -> TCM [(SplitClause, Bool)]
+  split f [] clause = return [(clause,False)]
   split f (var : vars) clause = do
     z <- splitClauseWithAbsurd clause var
     case z of
       Left err          -> typeError $ SplitError err
-      Right (Left cl)   -> (:[]) <$> makeAbsurdClause f cl
-      Right (Right cov)
-        | null vars -> mapM (makeAbstractClause f) $ splitClauses cov
-        | otherwise -> concat <$> do
+      Right (Left cl)   -> return [(cl,True)]
+      Right (Right cov) -> concat <$> do
             forM (splitClauses cov) $ \ cl ->
               split f (mapMaybe (newVar cl) vars) cl
 
@@ -221,11 +261,36 @@
     Var y [] -> Just y
     _        -> Nothing
 
+  -- Check whether clause has been refined after last load.
+  -- In this case, we refuse to split, as this might lose the refinements.
+  checkClauseIsClean :: IPClause -> TCM ()
+  checkClauseIsClean ipCl = do
+    sips <- Map.elems <$> use stSolvedInteractionPoints
+    when (List.any ((== ipCl) . ipClause) sips) $
+      typeError $ GenericError $ "Cannot split as clause rhs has been refined.  Please reload"
 
+-- | Mark the variables given by the list of deBruijn indices as 'UserWritten'
+--   in the 'SplitClause'.
+makePatternVarsVisible :: [Nat] -> SplitClause -> SplitClause
+makePatternVarsVisible [] sc = sc
+makePatternVarsVisible is sc@SClause{ scPats = ps } =
+  sc{ scPats = map (mapNamedArg mkVis) ps }
+  where
+  mkVis :: NamedArg DBPatVar -> NamedArg DBPatVar
+  mkVis nx@(Arg ai (Named n (DBPatVar x i)))
+    | i `elem` is =
+      -- We could introduce extra consistency checks, like
+      -- if visible ai then __IMPOSSIBLE__ else
+      -- or passing the parsed name along and comparing it with @x@
+      setOrigin UserWritten nx
+    | otherwise = nx
+
+-- | Make clause with no rhs (because of absurd match).
+
 makeAbsurdClause :: QName -> SplitClause -> TCM A.Clause
-makeAbsurdClause f (SClause tel ps _ t) = do
+makeAbsurdClause f (SClause tel ps _ _ t) = do
   reportSDoc "interaction.case" 10 $ vcat
-    [ text "Interaction.MakeCase.makeCase: split clause:"
+    [ text "Interaction.MakeCase.makeAbsurdClause: split clause:"
     , nest 2 $ vcat
       [ text "context =" <+> (prettyTCM =<< getContextTelescope)
       , text "tel =" <+> prettyTCM tel
@@ -237,28 +302,22 @@
     -- Contract implicit record patterns before printing.
     -- c <- translateRecordPatterns $ Clause noRange tel perm ps NoBody t False
     -- Jesper, 2015-09-19 Don't contract, since we do on-demand splitting
-    let c = Clause noRange tel ps NoBody t False
+    let c = Clause noRange tel ps Nothing t False
     -- Normalise the dot patterns
-    ps <- addCtxTel tel $ normalise $ namedClausePats c
+    ps <- addContext tel $ normalise $ namedClausePats c
+    reportSDoc "interaction.case" 60 $ text "normalized patterns: " <+> text (show ps)
     inTopContext $ reify $ QNamed f $ c { namedClausePats = ps }
 
+
 -- | Make a clause with a question mark as rhs.
-makeAbstractClause :: QName -> SplitClause -> TCM A.Clause
-makeAbstractClause f cl = do
-  A.Clause lhs _ _ _ <- makeAbsurdClause f cl
-  let ii = InteractionId (-1)  -- Dummy interaction point since we never type check this.
-                               -- Can end up in verbose output though (#1842), hence not __IMPOSSIBLE__.
-  let info = A.emptyMetaInfo   -- metaNumber = Nothing in order to print as ?, not ?n
-  return $ A.Clause lhs (A.RHS $ A.QuestionMark info ii) [] False
 
-deBruijnIndex :: A.Expr -> TCM Nat
-deBruijnIndex e = do
-  (v, _) <- -- Andreas, 2010-09-21 allow splitting on irrelevant (record) vars
---            Context.wakeIrrelevantVars $
-            applyRelevanceToContext Irrelevant $
-              inferExpr e
-  case ignoreSharing v of
-    Var n _ -> return n
-    _       -> typeError . GenericError . show =<< (fsep $
-                pwords "The scrutinee of a case distinction must be a variable,"
-                ++ [ prettyTCM v ] ++ pwords "isn't.")
+makeAbstractClause :: QName -> A.RHS -> SplitClause -> TCM A.Clause
+makeAbstractClause f rhs cl = do
+
+  A.Clause lhs _ _ _ _ <- makeAbsurdClause f cl
+  reportSDoc "interaction.case" 60 $ text "reified lhs: " <+> text (show lhs)
+  return $ A.Clause lhs [] rhs [] False
+  -- let ii = InteractionId (-1)  -- Dummy interaction point since we never type check this.
+  --                              -- Can end up in verbose output though (#1842), hence not __IMPOSSIBLE__.
+  -- let info = A.emptyMetaInfo   -- metaNumber = Nothing in order to print as ?, not ?n
+  -- return $ A.Clause lhs [] (A.RHS $ A.QuestionMark info ii) [] False
diff --git a/src/full/Agda/Interaction/Options.hs b/src/full/Agda/Interaction/Options.hs
--- a/src/full/Agda/Interaction/Options.hs
+++ b/src/full/Agda/Interaction/Options.hs
@@ -2,6 +2,7 @@
 
 module Agda.Interaction.Options
     ( CommandLineOptions(..)
+    , IgnoreFlags(..)
     , PragmaOptions(..)
     , OptionsPragma
     , Flag, OptM, runOptM
@@ -14,12 +15,12 @@
     , defaultInteractionOptions
     , defaultVerbosity
     , defaultCutOff
+    , defaultPragmaOptions
     , standardOptions_
     , unsafePragmaOptions
     , isLiterate
     , mapFlag
     , usage
-    , tests
     , defaultLibDir
     -- Reused by PandocAgda
     , inputFlag
@@ -42,7 +43,7 @@
 import System.Console.GetOpt    ( getOpt', usageInfo, ArgOrder(ReturnInOrder)
                                 , OptDescr(..), ArgDescr(..)
                                 )
-import System.Directory         ( doesDirectoryExist )
+import System.Directory         ( doesFileExist, doesDirectoryExist )
 
 import Text.EditDistance
 
@@ -56,13 +57,12 @@
   , runExceptT
   )
 
-import Agda.Utils.TestHelpers   ( runTests )
-import Agda.Utils.QuickCheck    ( quickCheck' )
 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 Agda.Syntax.Parser.Literate ( literateExts )
 import qualified Agda.Utils.Trie as Trie
 
 import Agda.Version
@@ -71,12 +71,17 @@
 
 -- | This should probably go somewhere else.
 isLiterate :: FilePath -> Bool
-isLiterate file = ".lagda" `isSuffixOf` file
+isLiterate file = any (`isSuffixOf` file) literateExts
 
 -- OptDescr is a Functor --------------------------------------------------
 
 type Verbosity = Trie String Int
 
+-- ignore or respect the flags --allow-unsolved-metas,
+-- --no-termination-check, --no-positivity-check?
+data IgnoreFlags = IgnoreFlags | RespectFlags
+  deriving Eq
+
 data CommandLineOptions = Options
   { optProgramName      :: String
   , optInputFile        :: Maybe FilePath
@@ -86,11 +91,12 @@
   , optOverrideLibrariesFile :: Maybe FilePath
   -- ^ Use this (if Just) instead of .agda/libraries
   , optDefaultLibs      :: Bool
-  -- ^ Use ~/.agda/defaults or look for .agda-lib file.
+  -- ^ Use ~/.agda/defaults
+  , optUseLibs          :: Bool
+  -- ^ look for .agda-lib files
   , optShowVersion      :: Bool
   , optShowHelp         :: Bool
   , optInteractive      :: Bool
-  , optRunTests         :: Bool
   , optGHCiInteraction  :: Bool
   , optCompileNoMain    :: Bool
   , optGhcCompile       :: Bool
@@ -150,6 +156,10 @@
   , optExactSplit                :: Bool
   , optEta                       :: Bool
   , optRewriting                 :: Bool  -- ^ Can rewrite rules be added and used?
+  , optPostfixProjections        :: Bool
+      -- ^ Should system generated projections 'ProjSystem' be printed
+      --   postfix (True) or prefix (False).
+  , optInstanceSearchDepth       :: Int
   }
   deriving (Show,Eq)
 
@@ -180,10 +190,10 @@
   , optLibraries        = []
   , optOverrideLibrariesFile = Nothing
   , optDefaultLibs      = True
+  , optUseLibs          = True
   , optShowVersion      = False
   , optShowHelp         = False
   , optInteractive      = False
-  , optRunTests         = False
   , optGHCiInteraction  = False
   , optCompileNoMain    = False
   , optGhcCompile       = False
@@ -239,6 +249,8 @@
   , optExactSplit                = False
   , optEta                       = True
   , optRewriting                 = False
+  , optPostfixProjections        = False
+  , optInstanceSearchDepth       = 500
   }
 
 -- | The default termination depth.
@@ -256,10 +268,6 @@
 defaultHTMLDir :: String
 defaultHTMLDir = "html"
 
-prop_defaultOptions :: IO Bool
-prop_defaultOptions =
-  either (const False) (const True) <$> runOptM (checkOpts defaultOptions)
-
 type OptM = ExceptT String IO
 
 runOptM :: OptM a -> IO (Either String a)
@@ -321,16 +329,6 @@
   [ "--rewriting"                                | optRewriting opts                 ] ++
   []
 
--- | The default pragma options should be considered safe.
-
-defaultPragmaOptionsSafe :: IO Bool
-defaultPragmaOptionsSafe
-    | null unsafe = return True
-    | otherwise   = do putStrLn $ "Following pragmas are default but not safe: "
-                                        ++ intercalate ", " unsafe
-                       return False
-  where unsafe = unsafePragmaOptions defaultPragmaOptions
-
 inputFlag :: FilePath -> Flag CommandLineOptions
 inputFlag f o =
     case optInputFile o of
@@ -373,9 +371,6 @@
 showIrrelevantFlag :: Flag PragmaOptions
 showIrrelevantFlag o = return $ o { optShowIrrelevant = True }
 
-runTestsFlag :: Flag CommandLineOptions
-runTestsFlag o = return $ o { optRunTests = True }
-
 ghciInteractionFlag :: Flag CommandLineOptions
 ghciInteractionFlag o = return $ o { optGHCiInteraction = True }
 
@@ -453,6 +448,14 @@
 rewritingFlag :: Flag PragmaOptions
 rewritingFlag o = return $ o { optRewriting = True }
 
+postfixProjectionsFlag :: Flag PragmaOptions
+postfixProjectionsFlag o = return $ o { optPostfixProjections = True }
+
+instanceDepthFlag :: String -> Flag PragmaOptions
+instanceDepthFlag s o = do
+  d <- integerArgument "--instance-search-depth" s
+  return $ o { optInstanceSearchDepth = d }
+
 interactiveFlag :: Flag CommandLineOptions
 interactiveFlag  o = return $ o { optInteractive    = True
                                 , optPragmaOptions  = (optPragmaOptions o)
@@ -508,9 +511,6 @@
 uhcFlagsFlag :: String -> Flag CommandLineOptions
 uhcFlagsFlag s o = return $ o { optUHCFlags = optUHCFlags o ++ [s] }
 
-optimNoSmashing :: Flag CommandLineOptions
-optimNoSmashing o = return $ o {optOptimSmashing = False }
-
 htmlFlag :: Flag CommandLineOptions
 htmlFlag o = return $ o { optGenerateHTML = True }
 
@@ -530,11 +530,17 @@
 libraryFlag s o = return $ o { optLibraries = optLibraries o ++ [s] }
 
 overrideLibrariesFileFlag :: String -> Flag CommandLineOptions
-overrideLibrariesFileFlag s o = return $ o { optOverrideLibrariesFile = Just s }
+overrideLibrariesFileFlag s o = do
+  ifM (liftIO $ doesFileExist s)
+    {-then-} (return $ o { optOverrideLibrariesFile = Just s })
+    {-else-} (throwError $ "Libraries file not found: " ++ s)
 
 noDefaultLibsFlag :: Flag CommandLineOptions
 noDefaultLibsFlag o = return $ o { optDefaultLibs = False }
 
+noLibsFlag :: Flag CommandLineOptions
+noLibsFlag o = return $ o { optUseLibs = False }
+
 verboseFlag :: String -> Flag PragmaOptions
 verboseFlag s o =
     do  (k,n) <- parseVerbose s
@@ -568,7 +574,7 @@
     , Option []     ["interaction"] (NoArg ghciInteractionFlag)
                     "for use with the Emacs mode"
     , Option ['c']  ["compile", "ghc"] (NoArg compileGhcFlag)
-                    "compile program using the GHC backend (experimental)"
+                    "compile program using the GHC backend"
     , Option []     ["ghc-dont-call-ghc"] (NoArg ghcDontCallGhcFlag) "Don't call ghc, just write the GHC Haskell files."
     , Option []     ["ghc-flag"] (ReqArg ghcFlag "GHC-FLAG")
                     "give the flag GHC-FLAG to GHC when compiling using the GHC backend"
@@ -588,7 +594,6 @@
     , Option []     ["uhc-gen-trace"] (ReqArg uhcTraceLevelFlag "TRACE") "Add tracing code to generated executable."
     , Option []     ["uhc-flag"] (ReqArg uhcFlagsFlag "UHC-FLAG")
                     "give the flag UHC-FLAG to UHC when compiling using the UHC backend"
-    , Option []     ["no-smashing"] (NoArg optimNoSmashing) "Don't apply the smashing optimization."
     , Option []     ["compile-dir"] (ReqArg compileDirFlag "DIR")
                     ("directory for compiler output (default: the project root)")
 
@@ -597,8 +602,6 @@
     --                "give the flag EPIC-FLAG to Epic when compiling using Epic"
                     "the Epic backend has been removed"
 
-    , Option []     ["test"] (NoArg runTestsFlag)
-                    "run internal test suite"
     , Option []     ["vim"] (NoArg vimFlag)
                     "generate Vim highlighting files"
     , Option []     ["latex"] (NoArg latexFlag)
@@ -623,6 +626,8 @@
                     "use library LIB"
     , Option []     ["library-file"] (ReqArg overrideLibrariesFileFlag "FILE")
                     "use FILE instead of the standard libraries file"
+    , Option []     ["no-libraries"] (NoArg noLibsFlag)
+                    "don't use any library files"
     , Option []     ["no-default-libraries"] (NoArg noDefaultLibsFlag)
                     "don't use default libraries"
     , Option []     ["no-forcing"] (NoArg noForcingFlag)
@@ -700,6 +705,10 @@
                     "disable eta rules for records"
     , Option []     ["rewriting"] (NoArg rewritingFlag)
                     "enable declaration and use of REWRITE rules"
+    , Option []     ["postfix-projections"] (NoArg postfixProjectionsFlag)
+                    "make postfix projection notation the default"
+    , Option []     ["instance-search-depth"] (ReqArg instanceDepthFlag "N")
+                    "set instance search depth to N (default: 500)"
     ]
 
 -- | Used for printing usage info.
@@ -813,12 +822,3 @@
   ifM (doesDirectoryExist libdir)
       (return libdir)
       (error $ "The lib directory " ++ libdir ++ " does not exist")
-
-------------------------------------------------------------------------
--- All tests
-
-tests :: IO Bool
-tests = runTests "Agda.Interaction.Options"
-  [ prop_defaultOptions
-  , defaultPragmaOptionsSafe
-  ]
diff --git a/src/full/Agda/Interaction/Response.hs b/src/full/Agda/Interaction/Response.hs
--- a/src/full/Agda/Interaction/Response.hs
+++ b/src/full/Agda/Interaction/Response.hs
@@ -1,5 +1,4 @@
 {-# LANGUAGE CPP #-}
-{-# LANGUAGE FlexibleInstances #-}
 
 ------------------------------------------------------------------------
 -- | Data type for all interactive responses
@@ -41,6 +40,7 @@
     | Resp_GiveAction InteractionId GiveResult
     | Resp_MakeCase MakeCaseVariant [String]
     | Resp_SolveAll [(InteractionId, Expr)]
+      -- ^ Solution for one or more meta-variables.
     | Resp_DisplayInfo DisplayInfo
     | Resp_RunningInfo Int String
       -- ^ The integer is the message's debug level.
@@ -56,11 +56,13 @@
 data DisplayInfo
     = Info_CompilationOk
     | Info_Constraints String
-    | Info_AllGoals String
+    | Info_AllGoalsWarnings String String String
+        -- ^ Strings are the goals, the warnings and the (non-fatal) errors
     | Info_Time Doc
     | Info_Error String
         -- ^ When an error message is displayed this constructor should be
         -- used, if appropriate.
+--    | Info_Warning String --FNF: currently unused
     | Info_Intro Doc
         -- ^ 'Info_Intro' denotes two different types of errors
         --   TODO: split these into separate constructors
diff --git a/src/full/Agda/Interaction/SearchAbout.hs b/src/full/Agda/Interaction/SearchAbout.hs
--- a/src/full/Agda/Interaction/SearchAbout.hs
+++ b/src/full/Agda/Interaction/SearchAbout.hs
@@ -28,7 +28,7 @@
 collectNamesInTerm (Var _ els)  = collectNamesInElims els
 collectNamesInTerm (Lam ty t)   = collectNamesInTerm $ unAbs t
 collectNamesInTerm (Def n els)  = n : collectNamesInElims els
-collectNamesInTerm (Con n args) = conName n : collectNamesInArgs args
+collectNamesInTerm (Con n _ args) = conName n : collectNamesInArgs args
 collectNamesInTerm (Pi dom cod) = collectNamesInType (Com.unDom dom) ++ collectNamesInType (unAbs cod)
 collectNamesInTerm (Shared t)   = collectNamesInTerm $ ignoreSharing $ derefPtr t
 collectNamesInTerm _            = []
@@ -38,7 +38,7 @@
 
 collectNamesInElim :: Elim -> [A.QName]
 collectNamesInElim (Apply a) = collectNamesInTerm $ Com.unArg a
-collectNamesInElim (Proj n)  = [n]
+collectNamesInElim (Proj _ n)= [n]
 
 collectNamesInArgs :: Args -> [A.QName]
 collectNamesInArgs = concatMap (collectNamesInTerm . Com.unArg)
@@ -68,7 +68,7 @@
       | otherwise        = Right str
 
     anames (DefinedName _ an)     = [an]
-    anames (FieldName     an)     = [an]
+    anames (FieldName     ans)    = ans
     anames (ConstructorName ans)  = ans
     anames (PatternSynResName an) = [an]
     anames _                      = []
diff --git a/src/full/Agda/Main.hs b/src/full/Agda/Main.hs
--- a/src/full/Agda/Main.hs
+++ b/src/full/Agda/Main.hs
@@ -12,6 +12,7 @@
 import System.Environment
 import System.Exit
 
+import Agda.Syntax.Position (Range)
 import Agda.Syntax.Concrete.Pretty ()
 import Agda.Syntax.Abstract.Name (toTopLevelModuleName)
 
@@ -19,7 +20,7 @@
 import Agda.Interaction.Options
 import Agda.Interaction.Monad
 import Agda.Interaction.EmacsTop (mimicGHCi)
-import Agda.Interaction.Imports (MaybeWarnings(..))
+import Agda.Interaction.Imports (MaybeWarnings'(..))
 import qualified Agda.Interaction.Imports as Imp
 import qualified Agda.Interaction.Highlighting.Dot as Dot
 import qualified Agda.Interaction.Highlighting.LaTeX as LaTeX
@@ -40,9 +41,9 @@
 import Agda.Utils.Monad
 import Agda.Utils.String
 
-import Agda.Tests
-import Agda.Version
+import Agda.VersionCommit
 
+import qualified Agda.Utils.Benchmark as UtilsBench
 import Agda.Utils.Except ( MonadError(catchError, throwError) )
 import Agda.Utils.Impossible
 
@@ -67,9 +68,6 @@
 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)
@@ -77,15 +75,21 @@
       | otherwise           = do
           -- Main function.
           -- Bill everything to root of Benchmark trie.
-          Bench.billTo [] (checkFile opts) `finally_` do
+          UtilsBench.setBenchmarking True
+            -- Andreas, Nisse, 2016-10-11 AIM XXIV
+            -- Turn benchmarking on provisionally, otherwise we lose track of time spent
+            -- on e.g. LaTeX-code generation.
+            -- Benchmarking might be turned off later by setCommandlineOptions
+
+          Bench.billTo [] checkFile `finally_` do
             -- Print benchmarks.
             Bench.print
 
             -- Print accumulated statistics.
             printStatistics 20 Nothing =<< use lensAccumStatistics
   where
-    checkFile :: CommandLineOptions -> TCM ()
-    checkFile opts = do
+    checkFile :: TCM ()
+    checkFile = do
       let i             = optInteractive     opts
           ghci          = optGHCiInteraction opts
           ghc           = optGhcCompile      opts
@@ -126,22 +130,14 @@
           file    <- getInputFile
           (i, mw) <- Imp.typeCheckMain file
 
-          unsolvedOK <- optAllowUnsolved <$> pragmaOptions
-
-          -- Reported unsolved problems as error unless unsolvedOK.
           -- An interface is only generated if NoWarnings.
           result <- case mw of
-            -- Unsolved metas.
-            SomeWarnings (Warnings w@(_:_) _)
-              | not unsolvedOK                 -> typeError $ UnsolvedMetas w
-            -- Unsolved constraints.
-            SomeWarnings (Warnings _ w@(_:_))
-              | not unsolvedOK                 -> typeError $ UnsolvedConstraints w
-            -- Unsolved metas, unsolved constraints, or
-            -- interaction points left whose metas have been solved
-            -- automatically.  (See Issue 1296).
-            SomeWarnings (Warnings _ _)        -> return Nothing
-            NoWarnings                         -> return $ Just i
+            SomeWarnings ws -> do
+              ws' <- applyFlagsToTCWarnings RespectFlags ws
+              case ws' of
+                []   -> return Nothing
+                cuws -> tcWarningsToError cuws
+            NoWarnings      -> return $ Just i
 
           reportSDoc "main" 50 $ pretty i
 
@@ -152,7 +148,7 @@
             Dot.generateDot $ i
 
           whenM (optGenerateLaTeX <$> commandLineOptions) $
-            LaTeX.generateLaTeX (toTopLevelModuleName $ iModuleName i) (iHighlighting i)
+            LaTeX.generateLaTeX i
 
           return result
 
@@ -164,8 +160,8 @@
 
 -- | Print version information.
 printVersion :: IO ()
-printVersion =
-  putStrLn $ "Agda version " ++ version
+printVersion = do
+  putStrLn $ "Agda version " ++ versionWithCommitInfo
 
 -- | What to do for bad options.
 optionError :: String -> IO ()
@@ -178,7 +174,7 @@
 runTCMPrettyErrors tcm = do
     r <- runTCMTop $ tcm `catchError` \err -> do
       s <- prettyError err
-      liftIO $ putStrLn s
+      unless (null s) (liftIO $ putStrLn s)
       throwError err
     case r of
       Right _ -> exitSuccess
diff --git a/src/full/Agda/Syntax/Abstract.hs b/src/full/Agda/Syntax/Abstract.hs
--- a/src/full/Agda/Syntax/Abstract.hs
+++ b/src/full/Agda/Syntax/Abstract.hs
@@ -1,10 +1,5 @@
 {-# LANGUAGE CPP                   #-}
 {-# LANGUAGE DeriveDataTypeable    #-}
-{-# LANGUAGE DeriveFoldable        #-}
-{-# LANGUAGE DeriveFunctor         #-}
-{-# LANGUAGE DeriveTraversable     #-}
-{-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE TemplateHaskell       #-}
 
 {-| The abstract syntax. This is what you get after desugaring and scope
@@ -16,11 +11,12 @@
     , module Agda.Syntax.Abstract.Name
     ) where
 
-import Prelude hiding (foldl, foldr)
+import Prelude
 import Control.Arrow (first)
 import Control.Applicative
 
-import Data.Foldable as Fold
+import Data.Foldable (Foldable)
+import qualified Data.Foldable as Fold
 import Data.Map (Map)
 import Data.Maybe
 import Data.Sequence (Seq, (<|), (><))
@@ -29,6 +25,7 @@
 import Data.Typeable (Typeable)
 import Data.Void
 
+import Agda.Syntax.Concrete.Name (NumHoles(..))
 import Agda.Syntax.Concrete (FieldAssignment'(..), exprFieldA)
 import qualified Agda.Syntax.Concrete as C
 import Agda.Syntax.Concrete.Pretty ()
@@ -39,9 +36,14 @@
 import Agda.Syntax.Abstract.Name as A (QNamed)
 import Agda.Syntax.Literal
 import Agda.Syntax.Scope.Base
+import qualified Agda.Syntax.Internal as I
 
+import Agda.TypeChecking.Positivity.Occurrence
+
+import Agda.Utils.Functor
 import Agda.Utils.Geniplate
 import Agda.Utils.Lens
+import Agda.Utils.Pretty
 
 #include "undefined.h"
 import Agda.Utils.Impossible
@@ -52,8 +54,8 @@
 data Expr
   = Var  Name                          -- ^ Bound variable.
   | Def  QName                         -- ^ Constant: axiom, function, data or record type.
-  | Proj QName                         -- ^ Projection.
-  | Con  AmbiguousQName                -- ^ Constructor.
+  | Proj ProjOrigin AmbiguousQName     -- ^ Projection (overloaded).
+  | Con  AmbiguousQName                -- ^ Constructor (overloaded).
   | PatternSyn QName                   -- ^ Pattern synonym.
   | Macro QName                        -- ^ Macro.
   | Lit Literal                        -- ^ Literal.
@@ -66,6 +68,7 @@
     --   'metaNumber' to 'Nothing' while keeping the 'InteractionId'.
   | Underscore   MetaInfo
     -- ^ Meta variable for hidden argument (must be inferred locally).
+  | Dot ExprInfo Expr                  -- ^ @.e@, for postfix projection.
   | App  ExprInfo Expr (NamedArg Expr) -- ^ Ordinary (binary) application.
   | WithApp ExprInfo Expr [Expr]       -- ^ With application.
   | Lam  ExprInfo LamBinding Expr      -- ^ @λ bs → e@.
@@ -106,13 +109,35 @@
 -- | Renaming (generic).
 type Ren a = [(a, a)]
 
+data ScopeCopyInfo = ScopeCopyInfo
+  { renModules :: Ren ModuleName
+  , renNames   :: Ren QName }
+  deriving (Eq, Show)
+
+initCopyInfo :: ScopeCopyInfo
+initCopyInfo = ScopeCopyInfo
+  { renModules = []
+  , renNames   = []
+  }
+
+instance Pretty ScopeCopyInfo where
+  pretty i = vcat [ prRen "renModules =" (renModules i)
+                  , prRen "renNames   =" (renNames i) ]
+    where
+      prRen s r = sep [ text s, nest 2 $ vcat (map pr r) ]
+      pr (x, y) = pretty x <+> text "->" <+> pretty y
+
 data Declaration
-  = Axiom      Axiom DefInfo ArgInfo QName Expr      -- ^ type signature (can be irrelevant and colored, but not hidden)
+  = Axiom      Axiom DefInfo ArgInfo (Maybe [Occurrence]) QName Expr
+    -- ^ Type signature (can be irrelevant, but not hidden).
+    --
+    -- The fourth argument contains an optional assignment of
+    -- polarities to arguments.
   | Field      DefInfo QName (Arg Expr)              -- ^ record field
   | Primitive  DefInfo QName Expr                    -- ^ primitive function
   | Mutual     MutualInfo [Declaration]              -- ^ a bunch of mutually recursive definitions
   | Section    ModuleInfo ModuleName [TypedBindings] [Declaration]
-  | Apply      ModuleInfo ModuleName ModuleApplication (Ren QName) (Ren ModuleName) ImportDirective
+  | Apply      ModuleInfo ModuleName ModuleApplication ScopeCopyInfo ImportDirective
     -- ^ The @ImportDirective@ is for highlighting purposes.
   | Import     ModuleInfo ModuleName ImportDirective
     -- ^ The @ImportDirective@ is for highlighting purposes.
@@ -139,7 +164,7 @@
   getDefInfo :: a -> Maybe DefInfo
 
 instance GetDefInfo Declaration where
-  getDefInfo (Axiom _ i _ _ _)      = Just i
+  getDefInfo (Axiom _ i _ _ _ _)    = Just i
   getDefInfo (Field i _ _)          = Just i
   getDefInfo (Primitive i _ _)      = Just i
   getDefInfo (ScopedDecl _ (d:_))   = getDefInfo d
@@ -177,7 +202,6 @@
   | CompiledJSPragma QName String
   | CompiledUHCPragma QName String
   | CompiledDataUHCPragma QName String [String]
-  | NoSmashingPragma QName
   | StaticPragma QName
   | InlinePragma QName
   | DisplayPragma QName [NamedArg Pattern] Expr
@@ -189,8 +213,8 @@
     -- ^ @LetBind info rel name type defn@
   | LetPatBind LetInfo Pattern Expr
     -- ^ Irrefutable pattern binding.
-  | LetApply ModuleInfo ModuleName ModuleApplication (Ren QName) (Ren ModuleName) ImportDirective
-    -- ^ @LetApply mi newM (oldM args) renaming moduleRenaming dir@.
+  | LetApply ModuleInfo ModuleName ModuleApplication ScopeCopyInfo ImportDirective
+    -- ^ @LetApply mi newM (oldM args) renamings dir@.
     -- The @ImportDirective@ is for highlighting purposes.
   | LetOpen ModuleInfo ModuleName ImportDirective
     -- ^ only for highlighting and abstractToConcrete
@@ -238,11 +262,20 @@
 
 type Telescope  = [TypedBindings]
 
+data NamedDotPattern = NamedDot Name I.Term I.Type
+  deriving (Typeable, Show)
+
+instance Eq NamedDotPattern where
+  _ == _ = True -- These are not relevant for caching purposes
+
 -- | We could throw away @where@ clauses at this point and translate them to
 --   @let@. It's not obvious how to remember that the @let@ was really a
 --   @where@ clause though, so for the time being we keep it here.
 data Clause' lhs = Clause
   { clauseLHS        :: lhs
+  , clauseNamedDots  :: [NamedDotPattern]
+      -- ^ Only in with-clauses where we inherit some already checked dot patterns from the parent.
+      --   These live in the context of the parent clause left-hand side.
   , clauseRHS        :: RHS
   , clauseWhereDecls :: [Declaration]
   , clauseCatchall   :: Bool
@@ -252,19 +285,38 @@
 type SpineClause = Clause' SpineLHS
 
 data RHS
-  = RHS Expr
+  = RHS
+    { rhsExpr     :: Expr
+    , rhsConcrete :: Maybe C.Expr
+      -- ^ We store the original concrete expression in case
+      --   we have to reproduce it during interactive case splitting.
+      --   'Nothing' for internally generated rhss.
+    }
   | AbsurdRHS
   | WithRHS QName [Expr] [Clause]
       -- ^ The 'QName' is the name of the with function.
-  | 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@.
-  deriving (Typeable, Show, Eq)
+  | RewriteRHS
+    { rewriteExprs      :: [(QName, Expr)]
+      -- ^ The 'QName's are the names of the generated with functions,
+      --   one for each 'Expr'.
+    , rewriteRHS        :: RHS
+      -- ^ The RHS should not be another @RewriteRHS@.
+    , rewriteWhereDecls :: [Declaration]
+      -- ^ The where clauses are attached to the @RewriteRHS@ by
+      ---  the scope checker (instead of to the clause).
+    }
+  deriving (Typeable, Show)
 
+instance Eq RHS where
+  RHS e _          == RHS e' _            = e == e'
+  AbsurdRHS        == AbsurdRHS           = True
+  WithRHS a b c    == WithRHS a' b' c'    = and [ a == a', b == b', c == c' ]
+  RewriteRHS a b c == RewriteRHS a' b' c' = and [ a == a', b == b', c == c' ]
+  _                == _                   = False
+
 -- | The lhs of a clause in spine view (inside-out).
 --   Projection patterns are contained in @spLhsPats@,
---   represented as @DefP d []@.
+--   represented as @ProjP d@.
 data SpineLHS = SpineLHS
   { spLhsInfo     :: LHSInfo             -- ^ Range.
   , spLhsDefName  :: QName               -- ^ Name of function we are defining.
@@ -294,11 +346,8 @@
              , lhsPats     :: [NamedArg (Pattern' e)]  -- ^ Applied to patterns @ps@.
              }
     -- | Projection
-  | LHSProj  { lhsDestructor :: QName
+  | LHSProj  { lhsDestructor :: AmbiguousQName
                -- ^ Record projection identifier.
-             , lhsPatsLeft   :: [NamedArg (Pattern' e)]
-               -- ^ Indices of the projection.
-               --   Currently none @[]@, since we do not have indexed records.
              , lhsFocus      :: NamedArg (LHSCore' e)
                -- ^ Main branch.
              , lhsPatsRight  :: [NamedArg (Pattern' e)]
@@ -331,29 +380,33 @@
 
 lhsCoreToSpine :: LHSCore' e -> A.QNamed [NamedArg (Pattern' e)]
 lhsCoreToSpine (LHSHead f ps) = QNamed f ps
-lhsCoreToSpine (LHSProj d ps1 h ps2) = (++ (p : ps2)) <$> lhsCoreToSpine (namedArg h)
-  where p = updateNamedArg (const $ DefP patNoRange d ps1) h
+lhsCoreToSpine (LHSProj d h ps) = (++ (p : ps)) <$> lhsCoreToSpine (namedArg h)
+  where p = updateNamedArg (const $ ProjP patNoRange ProjPrefix d) h
 
-spineToLhsCore :: QNamed [NamedArg (Pattern' e)] -> LHSCore' e
+spineToLhsCore :: IsProjP e => QNamed [NamedArg (Pattern' e)] -> LHSCore' e
 spineToLhsCore (QNamed f ps) = lhsCoreAddSpine (LHSHead f []) ps
 
 -- | Add applicative patterns (non-projection patterns) to the right.
-lhsCoreApp :: LHSCore' e -> [NamedArg (Pattern' e)] -> LHSCore' e
-lhsCoreApp (LHSHead f ps)        ps' = LHSHead f $ ps ++ ps'
-lhsCoreApp (LHSProj d ps1 h ps2) ps' = LHSProj d ps1 h $ ps2 ++ ps'
+lhsCoreApp :: IsProjP e => LHSCore' e -> [NamedArg (Pattern' e)] -> LHSCore' e
+lhsCoreApp (LHSHead f ps)   ps' = LHSHead f   $ ps ++ ps'
+lhsCoreApp (LHSProj d h ps) ps' = LHSProj d h $ ps ++ ps'
 
 -- | Add projection and applicative patterns to the right.
-lhsCoreAddSpine :: LHSCore' e -> [NamedArg (Pattern' e)] -> LHSCore' e
+lhsCoreAddSpine :: IsProjP e => LHSCore' e -> [NamedArg (Pattern' e)] -> LHSCore' e
 lhsCoreAddSpine core ps = case ps2 of
-    (Arg info (Named n (DefP i d ps0)) : ps2') ->
-       LHSProj d ps0 (Arg info $ Named n $ lhsCoreApp core ps1) []
-         `lhsCoreAddSpine` ps2'
     [] -> lhsCoreApp core ps
+    p@(Arg info (Named n (ProjP i o d))) : ps2' | let nh = numHoles d->
+      -- Andreas, 2016-06-13
+      -- If the projection was written prefix by the user
+      -- or it is fully applied an operator
+      -- we turn it to prefix projection form.
+      (if o == ProjPrefix || nh > 0 && nh <= 1 + length ps2' then
+        LHSProj d (Arg info $ Named n $ lhsCoreApp core ps1) []
+      else lhsCoreApp core $ ps1 ++ [p])
+        `lhsCoreAddSpine` ps2'
     _ -> __IMPOSSIBLE__
   where
-    (ps1, ps2) = break (isDefP . namedArg) ps
-    isDefP DefP{} = True
-    isDefP _      = False
+    (ps1, ps2) = break (isJust . isProjP) ps
 
 -- | Used for checking pattern linearity.
 lhsCoreAllPatterns :: LHSCore' e -> [Pattern' e]
@@ -363,15 +416,14 @@
 lhsCoreToPattern :: LHSCore -> Pattern
 lhsCoreToPattern lc =
   case lc of
-    LHSHead f aps -> DefP noInfo f aps
-    LHSProj d aps1 lhscore aps2 -> DefP noInfo d $
-      aps1 ++ fmap (fmap lhsCoreToPattern) lhscore : aps2
+    LHSHead f aps -> DefP noInfo (AmbQ [f]) aps
+    LHSProj d lhscore aps -> DefP noInfo d $
+      fmap (fmap lhsCoreToPattern) lhscore : aps
   where noInfo = patNoRange -- TODO, preserve range!
 
 mapLHSHead :: (QName -> [NamedArg Pattern] -> LHSCore) -> LHSCore -> LHSCore
-mapLHSHead f (LHSHead x ps)        = f x ps
-mapLHSHead f (LHSProj d ps1 l ps2) =
-  LHSProj d ps1 (fmap (fmap (mapLHSHead f)) l) ps2
+mapLHSHead f (LHSHead x ps)   = f x ps
+mapLHSHead f (LHSProj d l ps) = LHSProj d (fmap (fmap (mapLHSHead f)) l) ps
 
 ---------------------------------------------------------------------------
 -- * Patterns
@@ -381,13 +433,17 @@
 data Pattern' e
   = VarP Name
   | ConP ConPatInfo AmbiguousQName [NamedArg (Pattern' e)]
-  | DefP PatInfo QName          [NamedArg (Pattern' e)]
-    -- ^ Defined pattern: function definition @f ps@ or destructor pattern @d p ps@.
+  | ProjP PatInfo ProjOrigin AmbiguousQName
+    -- ^ Destructor pattern @d@.
+  | DefP PatInfo AmbiguousQName [NamedArg (Pattern' e)]
+    -- ^ Defined pattern: function definition @f ps@.
+    --   It is also abused to convert destructor patterns into concrete syntax
+    --   thus, we put AmbiguousQName here as well.
   | WildP PatInfo
     -- ^ Underscore pattern entered by user.
     --   Or generated at type checking for implicit arguments.
   | AsP PatInfo Name (Pattern' e)
-  | DotP PatInfo e
+  | DotP PatInfo Origin e
   | AbsurdP PatInfo
   | LitP Literal
   | PatternSynP PatInfo QName [NamedArg (Pattern' e)]
@@ -397,38 +453,49 @@
 type Pattern  = Pattern' Expr
 type Patterns = [NamedArg Pattern]
 
--- | Check whether we are a projection pattern.
-class IsProjP a where
-  isProjP :: a -> Maybe QName
-
 instance IsProjP (Pattern' e) where
-  isProjP (DefP _ d []) = Just d
-  isProjP _             = Nothing
+  isProjP (ProjP _ o d) = Just (o, d)
+  isProjP _ = Nothing
 
-instance IsProjP a => IsProjP (Arg a) where
-  isProjP = isProjP . unArg
+instance IsProjP Expr where
+  isProjP (Proj o ds)      = Just (o, ds)
+  isProjP (ScopedExpr _ e) = isProjP e
+  isProjP _ = Nothing
 
-instance IsProjP a => IsProjP (Named n a) where
-  isProjP = isProjP . namedThing
+class MaybePostfixProjP a where
+  maybePostfixProjP :: a -> Maybe (ProjOrigin, AmbiguousQName)
 
+instance IsProjP e => MaybePostfixProjP (Pattern' e) where
+  maybePostfixProjP (DotP _ _ e)  = isProjP e <&> \ (_o, d) -> (ProjPostfix, d)
+  maybePostfixProjP (ProjP _ o d) = Just (o, d)
+  maybePostfixProjP _ = Nothing
+
+instance MaybePostfixProjP a => MaybePostfixProjP (Arg a) where
+  maybePostfixProjP = maybePostfixProjP . unArg
+
+instance MaybePostfixProjP a => MaybePostfixProjP (Named n a) where
+  maybePostfixProjP = maybePostfixProjP . namedThing
+
 {--------------------------------------------------------------------------
     Instances
  --------------------------------------------------------------------------}
 
 -- | Does not compare 'ScopeInfo' fields.
+--   Does not distinguish between prefix and postfix projections.
 
 instance Eq Expr where
   ScopedExpr _ a1         == ScopedExpr _ a2         = a1 == a2
 
   Var a1                  == Var a2                  = a1 == a2
   Def a1                  == Def a2                  = a1 == a2
-  Proj a1                 == Proj a2                 = a1 == a2
+  Proj _ a1               == Proj _ a2               = a1 == a2
   Con a1                  == Con a2                  = a1 == a2
   PatternSyn a1           == PatternSyn a2           = a1 == a2
   Macro a1                == Macro a2                = a1 == a2
   Lit a1                  == Lit a2                  = a1 == a2
   QuestionMark a1 b1      == QuestionMark a2 b2      = (a1, b1) == (a2, b2)
   Underscore a1           == Underscore a2           = a1 == a2
+  Dot r1 e1               == Dot r2 e2               = (r1, e1) == (r2, e2)
   App a1 b1 c1            == App a2 b2 c2            = (a1, b1, c1) == (a2, b2, c2)
   WithApp a1 b1 c1        == WithApp a2 b2 c2        = (a1, b1, c1) == (a2, b2, c2)
   Lam a1 b1 c1            == Lam a2 b2 c2            = (a1, b1, c1) == (a2, b2, c2)
@@ -457,12 +524,12 @@
 instance Eq Declaration where
   ScopedDecl _ a1                == ScopedDecl _ a2                = a1 == a2
 
-  Axiom a1 b1 c1 d1 e1           == Axiom a2 b2 c2 d2 e2           = (a1, b1, c1, d1, e1) == (a2, b2, c2, d2, e2)
+  Axiom a1 b1 c1 d1 e1 f1        == Axiom a2 b2 c2 d2 e2 f2        = (a1, b1, c1, d1, e1, f1) == (a2, b2, c2, d2, e2, f2)
   Field a1 b1 c1                 == Field a2 b2 c2                 = (a1, b1, c1) == (a2, b2, c2)
   Primitive a1 b1 c1             == Primitive a2 b2 c2             = (a1, b1, c1) == (a2, b2, c2)
   Mutual a1 b1                   == Mutual a2 b2                   = (a1, b1) == (a2, b2)
   Section a1 b1 c1 d1            == Section a2 b2 c2 d2            = (a1, b1, c1, d1) == (a2, b2, c2, d2)
-  Apply a1 b1 c1 d1 e1 f1        == Apply a2 b2 c2 d2 e2 f2        = (a1, b1, c1, d1, e1, f1) == (a2, b2, c2, d2, e2, f2)
+  Apply a1 b1 c1 d1 e1           == Apply a2 b2 c2 d2 e2           = (a1, b1, c1, d1, e1) == (a2, b2, c2, d2, e2)
   Import a1 b1 c1                == Import a2 b2 c2                = (a1, b1, c1) == (a2, b2, c2)
   Pragma a1 b1                   == Pragma a2 b2                   = (a1, b1) == (a2, b2)
   Open a1 b1 c1                  == Open a2 b2 c2                  = (a1, b1, c1) == (a2, b2, c2)
@@ -505,11 +572,12 @@
 instance HasRange Expr where
     getRange (Var x)               = getRange x
     getRange (Def x)               = getRange x
-    getRange (Proj x)              = getRange x
+    getRange (Proj _ x)            = getRange x
     getRange (Con x)               = getRange x
     getRange (Lit l)               = getRange l
     getRange (QuestionMark i _)    = getRange i
     getRange (Underscore  i)       = getRange i
+    getRange (Dot i _)             = getRange i
     getRange (App i _ _)           = getRange i
     getRange (WithApp i _ _)       = getRange i
     getRange (Lam i _ _)           = getRange i
@@ -535,11 +603,11 @@
     getRange (Macro x)             = getRange x
 
 instance HasRange Declaration where
-    getRange (Axiom    _ i _ _ _    ) = getRange i
+    getRange (Axiom    _ i _ _ _ _  ) = getRange i
     getRange (Field      i _ _      ) = getRange i
     getRange (Mutual     i _        ) = getRange i
     getRange (Section    i _ _ _    ) = getRange i
-    getRange (Apply      i _ _ _ _ _) = getRange i
+    getRange (Apply      i _ _ _ _)   = getRange i
     getRange (Import     i _ _      ) = getRange i
     getRange (Primitive  i _ _      ) = getRange i
     getRange (Pragma     i _        ) = getRange i
@@ -557,10 +625,11 @@
 instance HasRange (Pattern' e) where
     getRange (VarP x)            = getRange x
     getRange (ConP i _ _)        = getRange i
+    getRange (ProjP i _ _)       = getRange i
     getRange (DefP i _ _)        = getRange i
     getRange (WildP i)           = getRange i
     getRange (AsP i _ _)         = getRange i
-    getRange (DotP i _)          = getRange i
+    getRange (DotP i _ _)        = getRange i
     getRange (AbsurdP i)         = getRange i
     getRange (LitP l)            = getRange l
     getRange (PatternSynP i _ _) = getRange i
@@ -574,21 +643,21 @@
 
 instance HasRange (LHSCore' e) where
     getRange (LHSHead f ps) = fuseRange f ps
-    getRange (LHSProj d ps1 lhscore ps2) = d `fuseRange` ps1 `fuseRange` lhscore `fuseRange` ps2
+    getRange (LHSProj d lhscore ps) = d `fuseRange` lhscore `fuseRange` ps
 
 instance HasRange a => HasRange (Clause' a) where
-    getRange (Clause lhs rhs ds catchall) = getRange (lhs,rhs,ds)
+    getRange (Clause lhs _ rhs ds catchall) = getRange (lhs,rhs,ds)
 
 instance HasRange RHS where
     getRange AbsurdRHS                = noRange
-    getRange (RHS e)                  = getRange e
+    getRange (RHS e _)                = getRange e
     getRange (WithRHS _ e cs)         = fuseRange e cs
     getRange (RewriteRHS xes rhs wh)  = getRange (map snd xes, rhs, wh)
 
 instance HasRange LetBinding where
     getRange (LetBind  i _ _ _ _     ) = getRange i
     getRange (LetPatBind  i _ _      ) = getRange i
-    getRange (LetApply i _ _ _ _ _   ) = getRange i
+    getRange (LetApply i _ _ _ _     ) = getRange i
     getRange (LetOpen  i _ _         ) = getRange i
     getRange (LetDeclaredVariable x)   = getRange x
 
@@ -596,10 +665,11 @@
 instance SetRange (Pattern' a) where
     setRange r (VarP x)             = VarP (setRange r x)
     setRange r (ConP i ns as)       = ConP (setRange r i) ns as
-    setRange r (DefP _ n as)        = DefP (PatRange r) (setRange r n) as
+    setRange r (ProjP _ o ns)       = ProjP (PatRange r) o ns
+    setRange r (DefP _ ns as)       = DefP (PatRange r) ns as -- (setRange r n) as
     setRange r (WildP _)            = WildP (PatRange r)
     setRange r (AsP _ n p)          = AsP (PatRange r) (setRange r n) p
-    setRange r (DotP _ e)           = DotP (PatRange r) e
+    setRange r (DotP _ o e)         = DotP (PatRange r) o e
     setRange r (AbsurdP _)          = AbsurdP (PatRange r)
     setRange r (LitP l)             = LitP (setRange r l)
     setRange r (PatternSynP _ n as) = PatternSynP (PatRange r) (setRange r n) as
@@ -619,11 +689,12 @@
 instance KillRange Expr where
   killRange (Var x)                = killRange1 Var x
   killRange (Def x)                = killRange1 Def x
-  killRange (Proj x)               = killRange1 Proj x
+  killRange (Proj o x)             = killRange1 (Proj o) x
   killRange (Con x)                = killRange1 Con x
   killRange (Lit l)                = killRange1 Lit l
   killRange (QuestionMark i ii)    = killRange2 QuestionMark i ii
   killRange (Underscore  i)        = killRange1 Underscore i
+  killRange (Dot i e)              = killRange2 Dot i e
   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
@@ -649,13 +720,11 @@
   killRange (Macro x)              = killRange1 Macro x
 
 instance KillRange Declaration where
-  killRange (Axiom    p i rel a b     ) = killRange4 (Axiom p)  i rel a b
+  killRange (Axiom    p i a b c d     ) = killRange4 (\i a c d -> Axiom p i a b c d) i a c d
   killRange (Field      i a b         ) = killRange3 Field      i a b
   killRange (Mutual     i a           ) = killRange2 Mutual     i a
   killRange (Section    i a b c       ) = killRange4 Section    i a b c
-  killRange (Apply      i a b c d e   ) = killRange3 Apply      i a b c d (killRange e)
-   -- the arguments c and d of Apply are name maps, so nothing to kill
-   -- Andreas, 2016-01-24 really?
+  killRange (Apply      i a b c d     ) = killRange5 Apply      i a b c d
   killRange (Import     i a b         ) = killRange3 Import     i a b
   killRange (Primitive  i a b         ) = killRange3 Primitive  i a b
   killRange (Pragma     i a           ) = Pragma (killRange i) a
@@ -674,13 +743,17 @@
   killRange (SectionApp a b c  ) = killRange3 SectionApp a b c
   killRange (RecordModuleIFS a ) = killRange1 RecordModuleIFS a
 
+instance KillRange ScopeCopyInfo where
+  killRange (ScopeCopyInfo a b) = killRange2 ScopeCopyInfo a b
+
 instance KillRange e => KillRange (Pattern' e) where
   killRange (VarP x)            = killRange1 VarP x
   killRange (ConP i a b)        = killRange3 ConP i a b
+  killRange (ProjP i o a)       = killRange3 ProjP i o a
   killRange (DefP i a b)        = killRange3 DefP i a b
   killRange (WildP i)           = killRange1 WildP i
   killRange (AsP i a b)         = killRange3 AsP i a b
-  killRange (DotP i a)          = killRange2 DotP i a
+  killRange (DotP i o a)        = killRange3 DotP i o a
   killRange (AbsurdP i)         = killRange1 AbsurdP i
   killRange (LitP l)            = killRange1 LitP l
   killRange (PatternSynP i a p) = killRange3 PatternSynP i a p
@@ -693,22 +766,25 @@
   killRange (LHS i a b)   = killRange3 LHS i a b
 
 instance KillRange e => KillRange (LHSCore' e) where
-  killRange (LHSHead a b)     = killRange2 LHSHead a b
-  killRange (LHSProj a b c d) = killRange4 LHSProj a b c d
+  killRange (LHSHead a b)   = killRange2 LHSHead a b
+  killRange (LHSProj a b c) = killRange3 LHSProj a b c
 
 instance KillRange a => KillRange (Clause' a) where
-  killRange (Clause lhs rhs ds catchall) = killRange4 Clause lhs rhs ds catchall
+  killRange (Clause lhs dots rhs ds catchall) = killRange5 Clause lhs dots rhs ds catchall
 
+instance KillRange NamedDotPattern where
+  killRange (NamedDot a b c) = killRange3 NamedDot a b c
+
 instance KillRange RHS where
   killRange AbsurdRHS                = AbsurdRHS
-  killRange (RHS e)                  = killRange1 RHS e
+  killRange (RHS e c)                = killRange2 RHS e c
   killRange (WithRHS q e cs)         = killRange3 WithRHS q e cs
   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
   killRange (LetPatBind i a b       ) = killRange3 LetPatBind i a b
-  killRange (LetApply   i a b c d e ) = killRange3 LetApply i a b c d (killRange e)
+  killRange (LetApply   i a b c d   ) = killRange5 LetApply i a b c d
   killRange (LetOpen    i x dir     ) = killRange3 LetOpen  i x dir
   killRange (LetDeclaredVariable x)   = killRange1 LetDeclaredVariable x
 
@@ -760,7 +836,7 @@
   allNames q = Seq.singleton q
 
 instance AllNames Declaration where
-  allNames (Axiom   _ _ _ q _)        = Seq.singleton q
+  allNames (Axiom   _ _ _ _ q _)      = Seq.singleton q
   allNames (Field     _   q _)        = Seq.singleton q
   allNames (Primitive _   q _)        = Seq.singleton q
   allNames (Mutual     _ defs)        = allNames defs
@@ -780,10 +856,10 @@
   allNames (ScopedDecl _ decls)       = allNames decls
 
 instance AllNames Clause where
-  allNames (Clause _ rhs decls _) = allNames rhs >< allNames decls
+  allNames (Clause _ _ rhs decls _) = allNames rhs >< allNames decls
 
 instance AllNames RHS where
-  allNames (RHS e)                   = allNames e
+  allNames (RHS e _)                 = allNames e
   allNames AbsurdRHS{}               = Seq.empty
   allNames (WithRHS q _ cls)         = q <| allNames cls
   allNames (RewriteRHS qes rhs cls) = Seq.fromList (map fst qes) >< allNames rhs >< allNames cls
@@ -796,6 +872,7 @@
   allNames Lit{}                   = Seq.empty
   allNames QuestionMark{}          = Seq.empty
   allNames Underscore{}            = Seq.empty
+  allNames (Dot _ e)               = allNames e
   allNames (App _ e1 e2)           = allNames e1 >< allNames e2
   allNames (WithApp _ e es)        = allNames e >< allNames es
   allNames (Lam _ b e)             = allNames b >< allNames e
@@ -832,11 +909,11 @@
   allNames (TLet _ lbs)  = allNames lbs
 
 instance AllNames LetBinding where
-  allNames (LetBind _ _ _ e1 e2)    = allNames e1 >< allNames e2
-  allNames (LetPatBind _ _ e)       = allNames e
-  allNames (LetApply _ _ app _ _ _) = allNames app
-  allNames LetOpen{}                = Seq.empty
-  allNames (LetDeclaredVariable _)  = Seq.empty
+  allNames (LetBind _ _ _ e1 e2)   = allNames e1 >< allNames e2
+  allNames (LetPatBind _ _ e)      = allNames e
+  allNames (LetApply _ _ app _ _)  = allNames app
+  allNames LetOpen{}               = Seq.empty
+  allNames (LetDeclaredVariable _) = Seq.empty
 
 instance AllNames ModuleApplication where
   allNames (SectionApp bindss _ es) = allNames bindss >< allNames es
@@ -847,7 +924,7 @@
 -- Precondition: The declaration has to be a (scoped) 'Axiom'.
 
 axiomName :: Declaration -> QName
-axiomName (Axiom _ _ _ q _)    = q
+axiomName (Axiom _ _ _ _ q _)  = q
 axiomName (ScopedDecl _ (d:_)) = axiomName d
 axiomName _                    = __IMPOSSIBLE__
 
@@ -861,7 +938,7 @@
   anyAbstract = Fold.any anyAbstract
 
 instance AnyAbstract Declaration where
-  anyAbstract (Axiom _ i _ _ _)      = defAbstract i == AbstractDef
+  anyAbstract (Axiom _ i _ _ _ _)    = defAbstract i == AbstractDef
   anyAbstract (Field i _ _)          = defAbstract i == AbstractDef
   anyAbstract (Mutual     _ ds)      = anyAbstract ds
   anyAbstract (ScopedDecl _ ds)      = anyAbstract ds
@@ -878,7 +955,7 @@
 nameExpr d = mk (anameKind d) $ anameName d
   where
     mk DefName        x = Def x
-    mk FldName        x = Proj x
+    mk FldName        x = Proj ProjSystem $ AmbQ [x]
     mk ConName        x = Con $ AmbQ [x]
     mk PatternSynName x = PatternSyn x
     mk MacroName      x = Macro x
@@ -896,11 +973,13 @@
 patternToExpr (VarP x)            = Var x
 patternToExpr (ConP _ c ps)       =
   Con c `app` map (fmap (fmap patternToExpr)) ps
-patternToExpr (DefP _ f ps)       =
+patternToExpr (ProjP _ o ds)      = Proj o ds
+patternToExpr (DefP _ (AmbQ [f]) ps) =
   Def f `app` map (fmap (fmap patternToExpr)) ps
+patternToExpr (DefP _ (AmbQ _) ps) = __IMPOSSIBLE__
 patternToExpr (WildP _)           = Underscore emptyMetaInfo
 patternToExpr (AsP _ _ p)         = patternToExpr p
-patternToExpr (DotP _ e)          = e
+patternToExpr (DotP _ _ e)        = e
 patternToExpr (AbsurdP _)         = Underscore emptyMetaInfo  -- TODO: could this happen?
 patternToExpr (LitP l)            = Lit l
 patternToExpr (PatternSynP _ _ _) = __IMPOSSIBLE__
@@ -919,12 +998,13 @@
   VarP z        -> fromMaybe p (lookup z s)
   ConP i q ps   -> ConP i q (map (fmap (fmap (substPattern s))) ps)
   RecP i ps     -> RecP i (map (fmap (substPattern s)) ps)
+  ProjP{}       -> p
   WildP i       -> p
-  DotP i e      -> DotP i (substExpr (map (fmap patternToExpr) s) e)
+  DotP i o e    -> DotP i o (substExpr (map (fmap patternToExpr) s) e)
   AbsurdP i     -> p
   LitP l        -> p
   DefP{}        -> p              -- destructor pattern
-  AsP{}         -> __IMPOSSIBLE__ -- @-patterns (not supported anyways)
+  AsP i x p     -> AsP i x (substPattern s p) -- Note: cannot substitute into as-variable
   PatternSynP{} -> __IMPOSSIBLE__ -- pattern synonyms (already gone)
 
 class SubstExpr a where
@@ -964,6 +1044,7 @@
     Lit _                 -> e
     QuestionMark{}        -> e
     Underscore   _        -> e
+    Dot i e               -> Dot i (substExpr s e)
     App  i e e'           -> App i (substExpr s e) (substExpr s e')
     WithApp i e es        -> WithApp i (substExpr s e) (substExpr s es)
     Lam  i lb e           -> Lam i lb (substExpr s e)
diff --git a/src/full/Agda/Syntax/Abstract/Copatterns.hs b/src/full/Agda/Syntax/Abstract/Copatterns.hs
--- a/src/full/Agda/Syntax/Abstract/Copatterns.hs
+++ b/src/full/Agda/Syntax/Abstract/Copatterns.hs
@@ -1,11 +1,5 @@
 {-# LANGUAGE CPP #-}
-{-# LANGUAGE DeriveFunctor #-}
-{-# LANGUAGE FlexibleContexts #-}
-{-# LANGUAGE FlexibleInstances #-}
-{-# LANGUAGE PatternGuards #-}
 {-# LANGUAGE ScopedTypeVariables #-}
-{-# LANGUAGE StandaloneDeriving #-}
-{-# LANGUAGE TupleSections #-}
 
 module Agda.Syntax.Abstract.Copatterns (translateCopatternClauses) where
 
@@ -30,6 +24,7 @@
 
 import Agda.TypeChecking.Monad.Base (TypeError(..), typeError)
 import Agda.Utils.Either
+import Agda.Utils.Maybe
 import Agda.Utils.Tuple
 
 #include "undefined.h"
@@ -139,18 +134,12 @@
   pcs :: [ProjPath Clause] <- mapM clauseToPath cs
   let cps :: [(Clause, [ProjPath Expr])]
       cps = groupClauses pcs
-{-
-      cps = map ((theContent . head) /\ map (fmap (rhsExpr . clauseRHS))) $
-              groupBy ((==) `on` clauseLHS . theContent) pcs
--}
   ces <- mapM (mapSndM pathToRecord) $
     map (mapSnd $ sortBy (compare `on` thePath)) cps
-  return $ map (\ (c, e) -> c { clauseRHS = RHS e }) ces
+  return $ map (\ (c, e) -> c { clauseRHS = RHS e Nothing }) ces  -- TODO: preserve C.Expr
   where
     noCopats Clause{ clauseLHS = LHS _ LHSHead{} _ } = True
     noCopats _                                       = False
-    rhsExpr (RHS e) = e
-    rhsExpr _       = __IMPOSSIBLE__
 
 -- | A sequence of decisions @b@ leading to a head @a@.
 data Path a b = Path
@@ -162,7 +151,7 @@
 mapContent f (Path p c) = Path p (f c)
 
 data ProjEntry = ProjEntry
-  { projPE :: QName
+  { projPE :: AmbiguousQName
   , patsPE :: [NamedArg Name] -- ^ currently we only support variable patterns
   } deriving (Eq, Ord)
 
@@ -187,24 +176,23 @@
     collect []         = ([], [])
 
     rhs             = rhsExpr . clauseRHS
-    rhsExpr (RHS e) = e
+    rhsExpr (RHS e _ ) = e  -- TODO: preserve C.Expr
     rhsExpr _       = __IMPOSSIBLE__
 
 clauseToPath :: Clause -> ScopeM (ProjPath Clause)
-clauseToPath (Clause (LHS i lhs wps) (RHS e) [] catchall) =
-  fmap (\ lhs -> Clause (LHS i lhs wps) (RHS e) [] catchall) <$> lhsToPath [] lhs
-clauseToPath (Clause lhs (RHS e) (_:_) _) = typeError $ NotImplemented $ "copattern clauses with where declarations"
-clauseToPath (Clause lhs _ wheredecls _) = typeError $ NotImplemented $ "copattern clauses with absurd, with or rewrite right hand side"
+clauseToPath (Clause (LHS i lhs wps) dots (RHS e c) [] catchall) =
+  fmap (\ lhs -> Clause (LHS i lhs wps) dots (RHS e c) [] catchall) <$> lhsToPath [] lhs
+clauseToPath (Clause lhs _ (RHS e _) (_:_) _) = typeError $ NotImplemented $ "copattern clauses with where declarations"
+clauseToPath (Clause lhs _ _ wheredecls _) = typeError $ NotImplemented $ "copattern clauses with absurd, with or rewrite right hand side"
 
 lhsToPath :: [ProjEntry] -> LHSCore -> ScopeM (ProjPath LHSCore)
 lhsToPath acc lhs@LHSHead{}         = return $ Path acc lhs
-lhsToPath acc (LHSProj f [] lhs ps) | Just xs <- mapM (T.mapM (T.mapM fromVarP)) ps =
+lhsToPath acc (LHSProj f lhs ps) = do
+    let xs = fromMaybe __IMPOSSIBLE__ $ mapM (T.mapM (T.mapM fromVarP)) ps
     lhsToPath (ProjEntry f xs : acc) $ namedArg lhs
   where fromVarP :: Pattern -> Maybe Name
         fromVarP (VarP n) = Just n
         fromVarP _        = Nothing
-lhsToPath acc (LHSProj f _ lhs _)   = typeError $ NotImplemented $
-  "copatterns with patterns before the principal argument"
 
 -- | Expects a sorted list.
 pathToRecord :: [ProjPath Expr] -> ScopeM Expr
@@ -220,7 +208,8 @@
 
         where
           abstractions :: (ProjEntry, Expr) -> ScopeM RecordAssign
-          abstractions (ProjEntry p xs, e) = Left . FieldAssignment (C.unqualify $ qnameToConcrete p) <$>
+          abstractions (ProjEntry (AmbQ []) xs, e) = __IMPOSSIBLE__
+          abstractions (ProjEntry (AmbQ (p:_)) xs, e) = Left . FieldAssignment (C.unqualify $ qnameToConcrete p) <$>
             foldr abstract (return e) xs
 
           abstract :: NamedArg Name -> ScopeM Expr -> ScopeM Expr
@@ -267,18 +256,19 @@
   rename _ q = q
 
 instance Rename Name where
-  rename rho x = maybe x id (rho x)
+  rename rho x = fromMaybe x (rho x)
 
 instance Rename Expr where
   rename rho e =
     case e of
       Var x                 -> Var (rename rho x)
       Def f                 -> e
-      Proj f                -> e
+      Proj{}                -> e
       Con c                 -> e
       Lit l                 -> e
       QuestionMark{}        -> e
       Underscore i          -> e
+      Dot i e               -> Dot i (rename rho e)
       App i e es            -> App i (rename rho e) (rename rho es)
       WithApp i e es        -> WithApp i (rename rho e) (rename rho es)
       Lam i lb e            -> Lam i (rename rho lb) (rename rho e)
@@ -332,12 +322,15 @@
   rename rho (TLet r lbs)   = TLet r (rename rho lbs)
 
 instance Rename Clause where
-  rename rho (Clause lhs rhs wheredecls catchall) =
-    Clause (rename rho lhs) (rename rho rhs) (rename rho wheredecls) catchall
+  rename rho (Clause lhs dots rhs wheredecls catchall) =
+    Clause (rename rho lhs) (rename rho dots) (rename rho rhs) (rename rho wheredecls) catchall
 
+instance Rename NamedDotPattern where
+  rename rho (NamedDot x v t) = NamedDot (rename rho x) v t
+
 instance Rename RHS where
   rename rho e = case e of
-      RHS e                 -> RHS (rename rho e)
+      RHS e c               -> RHS (rename rho e) c
       AbsurdRHS             -> e
       WithRHS n es cs       -> WithRHS n (rename rho es) (rename rho cs)
       RewriteRHS nes r ds   -> RewriteRHS (rename rho nes) (rename rho r) (rename rho ds)
@@ -389,7 +382,7 @@
       ((DefP _ x ps)        , (DefP _ x' ps')       ) -> guard (x == x') >> alpha' ps ps'
       ((WildP _)            , (WildP _)             ) -> return ()
       ((AsP _ x p)          , (AsP _ x' p')         ) -> tell1 (x, x') >> alpha' p p'
-      ((DotP _ _)           , (DotP _ _)            ) -> return ()
+      ((DotP _ _ _)         , (DotP _ _ _)          ) -> return ()
       (AbsurdP{}            , AbsurdP{}             ) -> return ()
       ((LitP l)             , (LitP l')             ) -> guard (l == l')
       ((PatternSynP _ x ps) , (PatternSynP _ x' ps')) -> guard (x == x') >> alpha' ps ps'
@@ -400,8 +393,8 @@
 
 instance Alpha (LHSCore' e) where
   alpha' (LHSHead f ps) (LHSHead f' ps') = guard (f == f') >> alpha' ps ps'
-  alpha' (LHSProj d ps1 lhs ps2) (LHSProj d' ps1' lhs' ps2') =
-     guard (d == d') >> alpha' ps1 ps1' >> alpha' lhs lhs' >> alpha' ps2 ps2'
+  alpha' (LHSProj d lhs ps) (LHSProj d' lhs' ps') =
+     guard (d == d') >> alpha' lhs lhs' >> alpha' ps ps'
   alpha' _ _ = fail "not alpha equivalent"
 
 instance Alpha LHS where
diff --git a/src/full/Agda/Syntax/Abstract/Name.hs b/src/full/Agda/Syntax/Abstract/Name.hs
--- a/src/full/Agda/Syntax/Abstract/Name.hs
+++ b/src/full/Agda/Syntax/Abstract/Name.hs
@@ -1,12 +1,6 @@
-{-# LANGUAGE CPP #-}
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveFoldable #-}
-{-# LANGUAGE DeriveFunctor #-}
-{-# LANGUAGE DeriveTraversable #-}
-{-# LANGUAGE FlexibleContexts #-}
-{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE CPP                        #-}
+{-# LANGUAGE DeriveDataTypeable         #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
-{-# LANGUAGE StandaloneDeriving #-}
 
 {-| Abstract names carry unique identifiers and stuff.
 -}
@@ -24,8 +18,6 @@
 import Data.Function
 import Data.Hashable
 
-import Test.QuickCheck
-
 import Agda.Syntax.Position
 import Agda.Syntax.Common
 import {-# SOURCE #-} Agda.Syntax.Fixity
@@ -33,6 +25,7 @@
 import qualified Agda.Syntax.Concrete.Name as C
 
 import Agda.Utils.List
+import Agda.Utils.Maybe
 import Agda.Utils.Monad
 import Agda.Utils.Pretty
 import Agda.Utils.Size
@@ -81,8 +74,18 @@
 -- Invariant: All the names in the list must have the same concrete,
 -- unqualified name.  (This implies that they all have the same 'Range').
 newtype AmbiguousQName = AmbQ { unAmbQ :: [QName] }
-  deriving (Eq, Typeable)
+  deriving (Eq, Ord, Typeable)
 
+-- | Check whether we are a projection pattern.
+class IsProjP a where
+  isProjP :: a -> Maybe (ProjOrigin, AmbiguousQName)
+
+instance IsProjP a => IsProjP (Arg a) where
+  isProjP = isProjP . unArg
+
+instance IsProjP a => IsProjP (Named n a) where
+  isProjP = isProjP . namedThing
+
 -- | A module is anonymous if the qualification path ends in an underscore.
 isAnonymousModuleName :: ModuleName -> Bool
 isAnonymousModuleName (MName []) = False
@@ -262,6 +265,10 @@
 instance NumHoles QName where
   numHoles = numHoles . qnameName
 
+-- | We can have an instance for ambiguous names as all share a common concrete name.
+instance NumHoles AmbiguousQName where
+  numHoles (AmbQ qs) = numHoles $ fromMaybe __IMPOSSIBLE__ $ headMaybe qs
+
 ------------------------------------------------------------------------
 -- * Show instances
 ------------------------------------------------------------------------
@@ -380,29 +387,6 @@
 
 instance Sized ModuleName where
   size = size . mnameToList
-
-------------------------------------------------------------------------
--- * Arbitrary instances
-------------------------------------------------------------------------
-
--- | The generated names all have the same 'Fixity'': 'noFixity''.
-
-instance Arbitrary Name where
-  arbitrary =
-    Name <$> arbitrary <*> arbitrary <*> arbitrary
-         <*> return noFixity'
-
-instance CoArbitrary Name where
-  coarbitrary = coarbitrary . nameId
-
-instance Arbitrary QName where
-  arbitrary = do
-    ms <- arbitrary
-    n  <- arbitrary
-    return (QName (MName ms) n)
-
-instance CoArbitrary QName where
-  coarbitrary = coarbitrary . qnameName
 
 ------------------------------------------------------------------------
 -- * NFData instances
diff --git a/src/full/Agda/Syntax/Abstract/Pretty.hs b/src/full/Agda/Syntax/Abstract/Pretty.hs
--- a/src/full/Agda/Syntax/Abstract/Pretty.hs
+++ b/src/full/Agda/Syntax/Abstract/Pretty.hs
@@ -1,4 +1,3 @@
-{-# LANGUAGE FlexibleContexts #-}
 
 module Agda.Syntax.Abstract.Pretty where
 
diff --git a/src/full/Agda/Syntax/Abstract/Views.hs b/src/full/Agda/Syntax/Abstract/Views.hs
--- a/src/full/Agda/Syntax/Abstract/Views.hs
+++ b/src/full/Agda/Syntax/Abstract/Views.hs
@@ -1,15 +1,8 @@
 {-# LANGUAGE CPP                       #-}
-{-# LANGUAGE DefaultSignatures         #-}
 {-# LANGUAGE GADTs                     #-}
 {-# LANGUAGE NoMonoLocalBinds          #-}
 {-# LANGUAGE NoMonomorphismRestriction #-}
-{-# LANGUAGE PatternGuards             #-}
-{-# LANGUAGE TupleSections             #-}
 
-#if __GLASGOW_HASKELL__ <= 706
-{-# LANGUAGE FlexibleContexts #-}
-#endif
-
 module Agda.Syntax.Abstract.Views where
 
 import Control.Applicative
@@ -39,11 +32,23 @@
 appView :: Expr -> AppView
 appView e =
   case e of
-    App i e1 arg | Application hd es <- appView e1
+    App _ e1 e2
+      | Dot _ e2' <- unScope $ namedArg e2
+      , Just f <- maybeProjTurnPostfix e2'
+                   -> Application f [defaultNamedArg e1]
+    App i e1 arg
+      | Application hd es <- appView e1
                    -> Application hd $ es ++ [arg]
     ScopedExpr _ e -> appView e
     _              -> Application e []
 
+maybeProjTurnPostfix :: Expr -> Maybe Expr
+maybeProjTurnPostfix e =
+  case e of
+    ScopedExpr i e' -> ScopedExpr i <$> maybeProjTurnPostfix e'
+    Proj _ x        -> return $ Proj ProjPostfix x
+    _               -> Nothing
+
 unAppView :: AppView -> Expr
 unAppView (Application h es) =
   foldl (App (ExprRange noRange)) h es
@@ -122,6 +127,7 @@
       Lit{}                   -> pure e0
       QuestionMark{}          -> pure e0
       Underscore{}            -> pure e0
+      Dot ei e                -> Dot ei <$> recurse e
       App ei e arg            -> App ei <$> recurse e <*> recurse arg
       WithApp ei e es         -> WithApp ei <$> recurse e <*> recurse es
       Lam ei b e              -> Lam ei <$> recurse b <*> recurse e
@@ -157,6 +163,7 @@
       Lit{}                -> m
       QuestionMark{}       -> m
       Underscore{}         -> m
+      Dot _ e              -> m `mappend` fold e
       App _ e e'           -> m `mappend` fold e `mappend` fold e'
       WithApp _ e es       -> m `mappend` fold e `mappend` fold es
       Lam _ b e            -> m `mappend` fold b `mappend` fold e
@@ -192,6 +199,7 @@
       Lit{}                   -> f e
       QuestionMark{}          -> f e
       Underscore{}            -> f e
+      Dot ei e                -> f =<< Dot ei <$> trav e
       App ei e arg            -> f =<< App ei <$> trav e <*> trav arg
       WithApp ei e es         -> f =<< WithApp ei <$> trav e <*> trav es
       Lam ei b e              -> f =<< Lam ei <$> trav b <*> trav e
@@ -303,13 +311,13 @@
 instance ExprLike a => ExprLike (Pattern' a) where
 
 instance ExprLike a => ExprLike (Clause' a) where
-  recurseExpr f (Clause lhs rhs ds ca) = Clause <$> rec lhs <*> rec rhs <*> rec ds <*> pure ca
+  recurseExpr f (Clause lhs dots rhs ds ca) = Clause <$> rec lhs <*> pure dots <*> rec rhs <*> rec ds <*> pure ca
     where rec = recurseExpr f
 
 instance ExprLike RHS where
   recurseExpr f rhs =
     case rhs of
-      RHS e                   -> RHS <$> rec e
+      RHS e c                 -> RHS <$> rec e <*> pure c
       AbsurdRHS{}             -> pure rhs
       WithRHS x es cs         -> WithRHS x <$> rec es <*> rec cs
       RewriteRHS xes rhs ds   -> RewriteRHS <$> rec xes <*> rec rhs <*> rec ds
@@ -338,7 +346,6 @@
       CompiledJSPragma{}          -> pure p
       CompiledUHCPragma{}         -> pure p
       CompiledDataUHCPragma{}     -> pure p
-      NoSmashingPragma{}          -> pure p
       StaticPragma{}              -> pure p
       InlinePragma{}              -> pure p
       DisplayPragma f xs e        -> DisplayPragma f <$> rec xs <*> rec e
@@ -355,12 +362,12 @@
 instance ExprLike Declaration where
   recurseExpr f d =
     case d of
-      Axiom a d i x e           -> Axiom a d i x <$> rec e
+      Axiom a d i mp x e        -> Axiom a d i mp x <$> rec e
       Field i x e               -> Field i x <$> rec e
       Primitive i x e           -> Primitive i x <$> rec e
       Mutual i ds               -> Mutual i <$> rec ds
       Section i m tel ds        -> Section i m <$> rec tel <*> rec ds
-      Apply i m a rd rm d       -> (\ a -> Apply i m a rd rm d) <$> rec a
+      Apply i m a ci d          -> (\ a -> Apply i m a ci d) <$> rec a
       Import{}                  -> pure d
       Pragma i p                -> Pragma i <$> rec p
       Open{}                    -> pure d
diff --git a/src/full/Agda/Syntax/Common.hs b/src/full/Agda/Syntax/Common.hs
--- a/src/full/Agda/Syntax/Common.hs
+++ b/src/full/Agda/Syntax/Common.hs
@@ -1,10 +1,6 @@
 {-# LANGUAGE CPP                        #-}
 {-# LANGUAGE DeriveDataTypeable         #-}
-{-# LANGUAGE DeriveFoldable             #-}
-{-# LANGUAGE DeriveFunctor              #-}
 {-# LANGUAGE DeriveGeneric              #-}
-{-# LANGUAGE DeriveTraversable          #-}
-{-# LANGUAGE FlexibleInstances          #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 
 {-| Some common syntactic entities are defined in this module.
@@ -19,18 +15,17 @@
 import Data.Foldable
 import Data.Hashable
 import qualified Data.Strict.Maybe as Strict
-import Data.Monoid
+import Data.Semigroup hiding (Arg)
 import Data.Traversable
 import Data.Typeable (Typeable)
+import Data.Word
 
 import GHC.Generics (Generic)
 
-import Test.QuickCheck hiding (Small)
-
 import Agda.Syntax.Position
 
 import Agda.Utils.Functor
-import Agda.Utils.Pretty
+import Agda.Utils.Pretty hiding ((<>))
 
 #include "undefined.h"
 import Agda.Utils.Impossible
@@ -63,13 +58,6 @@
 instance KillRange Induction where
   killRange = id
 
-instance Arbitrary Induction where
-  arbitrary = elements [Inductive, CoInductive]
-
-instance CoArbitrary Induction where
-  coarbitrary Inductive   = variant 0
-  coarbitrary CoInductive = variant 1
-
 instance NFData Induction where
   rnf Inductive   = ()
   rnf CoInductive = ()
@@ -83,13 +71,16 @@
 
 -- | 'Hiding' is an idempotent partial monoid, with unit 'NotHidden'.
 --   'Instance' and 'NotHidden' are incompatible.
+instance Semigroup Hiding where
+  NotHidden <> h         = h
+  h         <> NotHidden = h
+  Hidden    <> Hidden    = Hidden
+  Instance  <> Instance  = Instance
+  _         <> _         = __IMPOSSIBLE__
+
 instance Monoid Hiding where
   mempty = NotHidden
-  mappend NotHidden h         = h
-  mappend h         NotHidden = h
-  mappend Hidden    Hidden    = Hidden
-  mappend Instance  Instance  = Instance
-  mappend _         _         = __IMPOSSIBLE__
+  mappend = (<>)
 
 instance KillRange Hiding where
   killRange = id
@@ -148,10 +139,6 @@
 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
-
 -- | Visible ('NotHidden') arguments are @notHidden@. (DEPRECATED, use 'visible'.)
 notHidden :: LensHiding a => a -> Bool
 notHidden a = getHiding a == NotHidden
@@ -232,9 +219,6 @@
 instance KillRange Relevance where
   killRange rel = rel -- no range to kill
 
-instance Arbitrary Relevance where
-  arbitrary = elements allRelevances
-
 instance Ord Relevance where
   (<=) = moreRelevant
 
@@ -350,26 +334,63 @@
 -- | Irrelevant function arguments may appear non-strictly in the codomain type.
 irrToNonStrict :: Relevance -> Relevance
 irrToNonStrict Irrelevant = NonStrict
--- irrToNonStrict NonStrict  = Relevant -- TODO: is that what we want (OR: NonStrict)  -- better be more conservative
+-- irrToNonStrict NonStrict  = Relevant -- TODO: this is bad if we apply irrToNonStrict several times!
 irrToNonStrict rel        = rel
 
+-- | Applied when working on types (unless --experimental-irrelevance).
+nonStrictToRel :: Relevance -> Relevance
+nonStrictToRel NonStrict = Relevant
+nonStrictToRel rel       = rel
+
 nonStrictToIrr :: Relevance -> Relevance
 nonStrictToIrr NonStrict = Irrelevant
 nonStrictToIrr rel       = rel
 
 ---------------------------------------------------------------------------
+-- * Origin of arguments (user-written, inserted or reflected)
+---------------------------------------------------------------------------
+
+data Origin = UserWritten | Inserted | Reflected
+  deriving (Typeable, Show, Eq, Ord)
+
+instance KillRange Origin where
+  killRange = id
+
+instance NFData Origin where
+  rnf UserWritten = ()
+  rnf Inserted = ()
+  rnf Reflected = ()
+
+class LensOrigin a where
+
+  getOrigin :: a -> Origin
+
+  setOrigin :: Origin -> a -> a
+  setOrigin o = mapOrigin (const o)
+
+  mapOrigin :: (Origin -> Origin) -> a -> a
+  mapOrigin f a = setOrigin (f $ getOrigin a) a
+
+instance LensOrigin Origin where
+  getOrigin = id
+  setOrigin = const
+  mapOrigin = id
+
+---------------------------------------------------------------------------
 -- * Argument decoration
 ---------------------------------------------------------------------------
 
 -- | A function argument can be hidden and/or irrelevant.
 
 data ArgInfo = ArgInfo
-  { argInfoHiding    :: Hiding
-  , argInfoRelevance :: Relevance
+  { argInfoHiding       :: Hiding
+  , argInfoRelevance    :: Relevance
+  , argInfoOrigin       :: Origin
+  , argInfoOverlappable :: Bool
   } deriving (Typeable, Eq, Ord, Show)
 
 instance KillRange ArgInfo where
-  killRange (ArgInfo h r) = killRange2 ArgInfo h r
+  killRange (ArgInfo h r o v) = killRange3 ArgInfo h r o v
 
 class LensArgInfo a where
   getArgInfo :: a -> ArgInfo
@@ -384,7 +405,7 @@
   mapArgInfo = id
 
 instance NFData ArgInfo where
-  rnf (ArgInfo a b) = rnf a `seq` rnf b
+  rnf (ArgInfo a b c d) = rnf a `seq` rnf b `seq` rnf c `seq` rnf d
 
 instance LensHiding ArgInfo where
   getHiding = argInfoHiding
@@ -396,9 +417,16 @@
   setRelevance h ai = ai { argInfoRelevance = h }
   mapRelevance f ai = ai { argInfoRelevance = f (argInfoRelevance ai) }
 
+instance LensOrigin ArgInfo where
+  getOrigin = argInfoOrigin
+  setOrigin o ai = ai { argInfoOrigin = o }
+  mapOrigin f ai = ai { argInfoOrigin = f (argInfoOrigin ai) }
+
 defaultArgInfo :: ArgInfo
-defaultArgInfo =  ArgInfo { argInfoHiding    = NotHidden
-                          , argInfoRelevance = Relevant }
+defaultArgInfo =  ArgInfo { argInfoHiding       = NotHidden
+                          , argInfoRelevance    = Relevant
+                          , argInfoOrigin       = UserWritten
+                          , argInfoOverlappable = False }
 
 
 ---------------------------------------------------------------------------
@@ -423,14 +451,14 @@
   killRange (Arg info a) = killRange2 Arg info a
 
 instance Eq a => Eq (Arg a) where
-  Arg (ArgInfo h1 _) x1 == Arg (ArgInfo h2 _) x2 = (h1, x1) == (h2, x2)
+  Arg (ArgInfo h1 _ _ _) x1 == Arg (ArgInfo h2 _ _ _) x2 = (h1, x1) == (h2, x2)
 
 instance Show a => Show (Arg a) where
-    show (Arg (ArgInfo h r) x) = showR r $ showH h $ show x
+    show (Arg (ArgInfo h r o v) x) = showR r $ showO o $ showH h $ show x
       where
         showH Hidden     s = "{" ++ s ++ "}"
         showH NotHidden  s = "(" ++ s ++ ")"
-        showH Instance   s = "{{" ++ s ++ "}}"
+        showH Instance   s = (if v then "overlap " else "") ++ "{{" ++ s ++ "}}"
         showR r s = case r of
           Irrelevant   -> "." ++ s
           NonStrict    -> "?" ++ s
@@ -438,6 +466,10 @@
           Forced Small -> "!" ++ s
           UnusedArg    -> "k" ++ s -- constant
           Relevant     -> "r" ++ s -- Andreas: I want to see it explicitly
+        showO o s = case o of
+          UserWritten -> "u" ++ s
+          Inserted    -> "i" ++ s
+          Reflected   -> "g" ++ s -- generated by reflection
 
 instance NFData e => NFData (Arg e) where
   rnf (Arg a b) = rnf a `seq` rnf b
@@ -450,16 +482,9 @@
   getRelevance = getRelevance . argInfo
   mapRelevance = mapArgInfo . mapRelevance
 
-{- RETIRED
-hide :: Arg a -> Arg a
-hide = setArgHiding Hidden
-
-makeInstance :: Arg a -> Arg a
-makeInstance = setHiding Instance
-
-isHiddenArg :: Arg a -> Bool
-isHiddenArg arg = argHiding arg /= NotHidden
--}
+instance LensOrigin (Arg e) where
+  getOrigin = getOrigin . argInfo
+  mapOrigin = mapArgInfo . mapOrigin
 
 instance LensArgInfo (Arg a) where
   getArgInfo        = argInfo
@@ -514,7 +539,7 @@
 data Dom e = Dom
   { domInfo   :: ArgInfo
   , unDom     :: e
-  } deriving (Typeable, Eq, Ord, Functor, Foldable, Traversable)
+  } deriving (Typeable, Ord, Functor, Foldable, Traversable)
 
 instance Decoration Dom where
   traverseF f (Dom ai a) = Dom ai <$> f a
@@ -525,6 +550,10 @@
 instance KillRange a => KillRange (Dom a) where
   killRange (Dom info a) = killRange2 Dom info a
 
+instance Eq a => Eq (Dom a) where
+  Dom (ArgInfo h1 r1 _ _) x1 == Dom (ArgInfo h2 r2 _ _) x2 =
+    (h1, ignoreForced r1, x1) == (h2, ignoreForced r2, x2)
+
 instance Show a => Show (Dom a) where
   show = show . argFromDom
 
@@ -658,16 +687,34 @@
 type RString = Ranged RawName
 
 ---------------------------------------------------------------------------
--- * Constructor pattern info
+-- * Further constructor and projection info
 ---------------------------------------------------------------------------
 
--- | Where does the 'ConP' of come from?
-data ConPOrigin
-  = ConPImplicit  -- ^ Expanded from an implicit pattern.
-  | ConPCon       -- ^ User wrote a constructor pattern.
-  | ConPRec       -- ^ User wrote a record pattern.
+-- | Where does the 'ConP' or 'Con' come from?
+data ConOrigin
+  = ConOSystem  -- ^ Inserted by system or expanded from an implicit pattern.
+  | ConOCon     -- ^ User wrote a constructor (pattern).
+  | ConORec     -- ^ User wrote a record (pattern).
   deriving (Typeable, Show, Eq, Ord, Enum, Bounded)
 
+instance KillRange ConOrigin where
+  killRange = id
+
+-- | Prefer user-written over system-inserted.
+bestConInfo :: ConOrigin -> ConOrigin -> ConOrigin
+bestConInfo ConOSystem o = o
+bestConInfo o _ = o
+
+-- | Where does a projection come from?
+data ProjOrigin
+  = ProjPrefix    -- ^ User wrote a prefix projection.
+  | ProjPostfix   -- ^ User wrote a postfix projection.
+  | ProjSystem    -- ^ Projection was generated by the system.
+  deriving (Typeable, Show, Eq, Ord, Enum, Bounded)
+
+instance KillRange ProjOrigin where
+  killRange = id
+
 ---------------------------------------------------------------------------
 -- * Infixity, access, abstract, etc.
 ---------------------------------------------------------------------------
@@ -678,11 +725,24 @@
     deriving (Typeable, Show, Eq, Ord)
 
 -- | Access modifier.
-data Access = PrivateAccess | PublicAccess
-            | OnlyQualified  -- ^ Visible from outside, but not exported when opening the module
+data Access
+  = PrivateAccess Origin
+      -- ^ Store the 'Origin' of the private block that lead to this qualifier.
+      --   This is needed for more faithful printing of declarations.
+  | PublicAccess
+  | OnlyQualified  -- ^ Visible from outside, but not exported when opening the module
                              --   Used for qualified constructors.
     deriving (Typeable, Show, Eq, Ord)
 
+instance NFData Access where
+  rnf _ = ()
+
+instance HasRange Access where
+  getRange _ = noRange
+
+instance KillRange Access where
+  killRange = id
+
 -- | Abstract or concrete
 data IsAbstract = AbstractDef | ConcreteDef
     deriving (Typeable, Show, Eq, Ord)
@@ -720,7 +780,7 @@
 
 -- | The unique identifier of a name. Second argument is the top-level module
 --   identifier.
-data NameId = NameId !Integer !Integer
+data NameId = NameId {-# UNPACK #-} !Word64 {-# UNPACK #-} !Word64
     deriving (Eq, Ord, Typeable, Generic)
 
 instance KillRange NameId where
@@ -742,11 +802,6 @@
   {-# INLINE hashWithSalt #-}
   hashWithSalt salt (NameId n m) = hashWithSalt salt (n, m)
 
-instance Arbitrary NameId where
-  arbitrary = elements [ NameId x y | x <- [-1, 1], y <- [-1, 1] ]
-
-instance CoArbitrary NameId
-
 ---------------------------------------------------------------------------
 -- * Meta variables
 ---------------------------------------------------------------------------
@@ -843,11 +898,14 @@
 data Using' a b = UseEverything | Using [ImportedName' a b]
   deriving (Typeable, Eq)
 
+instance Semigroup (Using' a b) where
+  UseEverything <> u = u
+  u <> UseEverything = u
+  Using xs <> Using ys = Using (xs ++ ys)
+
 instance Monoid (Using' a b) where
   mempty = UseEverything
-  mappend UseEverything u = u
-  mappend u UseEverything = u
-  mappend (Using xs) (Using ys) = Using (xs ++ ys)
+  mappend = (<>)
 
 -- | Default is directive is @private@ (use everything, but do not export).
 defaultImportDir :: ImportDirective' a b
diff --git a/src/full/Agda/Syntax/Concrete.hs b/src/full/Agda/Syntax/Concrete.hs
--- a/src/full/Agda/Syntax/Concrete.hs
+++ b/src/full/Agda/Syntax/Concrete.hs
@@ -1,9 +1,5 @@
 {-# LANGUAGE CPP                #-}
 {-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveFoldable     #-}
-{-# LANGUAGE DeriveFunctor      #-}
-{-# LANGUAGE DeriveTraversable  #-}
-{-# LANGUAGE FlexibleInstances  #-}
 
 {-| The concrete syntax is a raw representation of the program text
     without any desugaring at all.  This is what the parser produces.
@@ -72,6 +68,8 @@
 import Agda.Syntax.Concrete.Name
 import qualified Agda.Syntax.Abstract.Name as A
 
+import Agda.TypeChecking.Positivity.Occurrence
+
 import Agda.Utils.Lens
 import Agda.Utils.Null
 
@@ -150,6 +148,7 @@
   | RecUpdate Range Expr [FieldAssignment]     -- ^ ex: @record e {x = a; y = b}@
   | Let Range [Declaration] Expr               -- ^ ex: @let Ds in e@
   | Paren Range Expr                           -- ^ ex: @(e)@
+  | IdiomBrackets Range Expr                   -- ^ ex: @(| e |)@
   | Absurd Range                               -- ^ ex: @()@ or @{}@, only in patterns
   | As Range Name Expr                         -- ^ ex: @x\@p@, only in patterns
   | Dot Range Expr                             -- ^ ex: @.p@, only in patterns
@@ -182,7 +181,7 @@
   | WildP Range                            -- ^ @_@
   | AbsurdP Range                          -- ^ @()@
   | AsP Range Name Pattern                 -- ^ @x\@p@ unused
-  | DotP Range Expr                        -- ^ @.e@
+  | DotP Range Origin Expr                 -- ^ @.e@
   | LitP Literal                           -- ^ @0@, @1@, etc.
   | RecP Range [FieldAssignment' Pattern]  -- ^ @record {x = p; y = q}@
   deriving (Typeable)
@@ -285,7 +284,10 @@
 data WhereClause' decls
   = NoWhere               -- ^ No @where@ clauses.
   | AnyWhere decls        -- ^ Ordinary @where@.
-  | SomeWhere Name decls  -- ^ Named where: @module M where@.
+  | SomeWhere Name Access decls
+    -- ^ Named where: @module M where@.
+    --   The 'Access' flag applies to the 'Name' (not the module contents!)
+    --   and is propagated from the parent function.
   deriving (Typeable, Functor, Foldable, Traversable)
 
 -- | An expression followed by a where clause.
@@ -338,7 +340,10 @@
   | PatternSyn  Range Name [Arg Name] Pattern
   | Mutual      Range [Declaration]
   | Abstract    Range [Declaration]
-  | Private     Range [Declaration]
+  | Private     Range Origin [Declaration]
+    -- ^ In "Agda.Syntax.Concrete.Definitions" we generate private blocks
+    --   temporarily, which should be treated different that user-declared
+    --   private blocks.  Thus the 'Origin'.
   | InstanceB   Range [Declaration]
   | Macro       Range [Declaration]
   | Postulate   Range [TypeSignatureOrInstanceBlock]
@@ -367,7 +372,7 @@
 data Pragma
   = OptionsPragma             Range [String]
   | BuiltinPragma             Range String Expr
-  | RewritePragma             Range QName
+  | RewritePragma             Range [QName]
   | CompiledDataPragma        Range QName String [String]
   | CompiledDeclareDataPragma Range QName String
   | CompiledTypePragma        Range QName String
@@ -378,7 +383,6 @@
   | CompiledUHCPragma         Range QName String
   | CompiledDataUHCPragma     Range QName String [String]
   | HaskellCodePragma         Range String
-  | NoSmashingPragma          Range QName
   | StaticPragma              Range QName
   | InlinePragma              Range QName
   | ImportPragma              Range String
@@ -390,6 +394,7 @@
   | CatchallPragma            Range
   | DisplayPragma             Range Pattern Expr
   | NoPositivityCheckPragma   Range
+  | PolarityPragma            Range Name [Occurrence]
   deriving (Typeable)
 
 ---------------------------------------------------------------------------
@@ -419,7 +424,7 @@
 spanAllowedBeforeModule = span isAllowedBeforeModule
   where
     isAllowedBeforeModule (Pragma OptionsPragma{}) = True
-    isAllowedBeforeModule (Private _ ds) = all isAllowedBeforeModule ds
+    isAllowedBeforeModule (Private _ _ ds) = all isAllowedBeforeModule ds
     isAllowedBeforeModule Import{}       = True
     isAllowedBeforeModule ModuleMacro{}  = True
     isAllowedBeforeModule Open{}         = True
@@ -442,15 +447,17 @@
 data AppView = AppView Expr [NamedArg Expr]
 
 appView :: Expr -> AppView
-appView (App r e1 e2) = vApp (appView e1) e2
+appView e =
+  case e of
+    App r e1 e2     -> vApp (appView e1) e2
+    RawApp _ (e:es) -> AppView e $ map arg es
+    _               ->  AppView e []
   where
     vApp (AppView e es) arg = AppView e (es ++ [arg])
-appView (RawApp _ (e:es)) = AppView e $ map arg es
-  where
+
     arg (HiddenArg   _ e) = setHiding Hidden   $ defaultArg e
     arg (InstanceArg _ e) = setHiding Instance $ defaultArg e
     arg e                 = defaultArg (unnamed e)
-appView e = AppView e []
 
 {--------------------------------------------------------------------------
     Patterns
@@ -541,6 +548,7 @@
       SetN r _           -> r
       Let r _ _          -> r
       Paren r _          -> r
+      IdiomBrackets r _  -> r
       As r _ _           -> r
       Dot r _            -> r
       Absurd r           -> r
@@ -579,7 +587,7 @@
 instance HasRange WhereClause where
   getRange  NoWhere         = noRange
   getRange (AnyWhere ds)    = getRange ds
-  getRange (SomeWhere _ ds) = getRange ds
+  getRange (SomeWhere _ _ ds) = getRange ds
 
 instance HasRange ModuleApplication where
   getRange (SectionApp r _ _) = r
@@ -606,7 +614,7 @@
   getRange (Import r _ _ _ _)      = r
   getRange (InstanceB r _)         = r
   getRange (Macro r _)             = r
-  getRange (Private r _)           = r
+  getRange (Private r _ _)         = r
   getRange (Postulate r _)         = r
   getRange (Primitive r _)         = r
   getRange (Module r _ _ _)        = r
@@ -643,7 +651,6 @@
   getRange (CompiledUHCPragma r _ _)         = r
   getRange (CompiledDataUHCPragma r _ _ _)   = r
   getRange (HaskellCodePragma r _)           = r
-  getRange (NoSmashingPragma r _)            = r
   getRange (StaticPragma r _)                = r
   getRange (InlinePragma r _)                = r
   getRange (ImportPragma r _)                = r
@@ -653,6 +660,7 @@
   getRange (CatchallPragma r)                = r
   getRange (DisplayPragma r _ _)             = r
   getRange (NoPositivityCheckPragma r)       = r
+  getRange (PolarityPragma r _ _)            = r
 
 instance HasRange AsName where
   getRange a = getRange (asRange a, asName a)
@@ -670,7 +678,7 @@
   getRange (QuoteP r)         = r
   getRange (HiddenP r _)      = r
   getRange (InstanceP r _)    = r
-  getRange (DotP r _)         = r
+  getRange (DotP r _ _)       = r
   getRange (RecP r _)         = r
 
 -- SetRange instances
@@ -692,7 +700,7 @@
   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
+  setRange r (DotP _ o e)       = DotP r o e
   setRange r (RecP _ fs)        = RecP r fs
 
 -- KillRange instances
@@ -723,7 +731,7 @@
   killRange (PatternSyn _ n ns p)   = killRange3 (PatternSyn noRange) n ns p
   killRange (Mutual _ d)            = killRange1 (Mutual noRange) d
   killRange (Abstract _ d)          = killRange1 (Abstract noRange) d
-  killRange (Private _ d)           = killRange1 (Private noRange) d
+  killRange (Private _ o d)         = killRange2 (Private noRange) o d
   killRange (InstanceB _ d)         = killRange1 (InstanceB noRange) d
   killRange (Macro _ d)             = killRange1 (Macro noRange) d
   killRange (Postulate _ t)         = killRange1 (Postulate noRange) t
@@ -759,6 +767,7 @@
   killRange (RecUpdate _ e ne)   = killRange2 (RecUpdate noRange) e ne
   killRange (Let _ d e)          = killRange2 (Let noRange) d e
   killRange (Paren _ e)          = killRange1 (Paren noRange) e
+  killRange (IdiomBrackets _ e)  = killRange1 (IdiomBrackets noRange) e
   killRange (Absurd _)           = Absurd noRange
   killRange (As _ n e)           = killRange2 (As noRange) n e
   killRange (Dot _ e)            = killRange1 (Dot noRange) e
@@ -799,7 +808,7 @@
   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 (DotP _ o e)      = killRange1 (DotP noRange) o e
   killRange (LitP l)          = killRange1 LitP l
   killRange (QuoteP _)        = QuoteP noRange
   killRange (RecP _ fs)       = killRange1 (RecP noRange) fs
@@ -807,7 +816,7 @@
 instance KillRange Pragma where
   killRange (OptionsPragma _ s)               = OptionsPragma noRange s
   killRange (BuiltinPragma _ s e)             = killRange1 (BuiltinPragma noRange s) e
-  killRange (RewritePragma _ q)               = killRange1 (RewritePragma noRange) q
+  killRange (RewritePragma _ qs)              = killRange1 (RewritePragma noRange) qs
   killRange (CompiledDataPragma _ q s ss)     = killRange1 (\q -> CompiledDataPragma noRange q s ss) q
   killRange (CompiledDeclareDataPragma _ q s) = killRange1 (\q -> CompiledDeclareDataPragma noRange q s) q
   killRange (CompiledTypePragma _ q s)        = killRange1 (\q -> CompiledTypePragma noRange q s) q
@@ -818,7 +827,6 @@
   killRange (CompiledUHCPragma _ q s)         = killRange1 (\q -> CompiledUHCPragma noRange q s) q
   killRange (CompiledDataUHCPragma _ q s ss)  = killRange1 (\q -> CompiledDataUHCPragma noRange q s ss) q
   killRange (HaskellCodePragma _ s)           = HaskellCodePragma noRange s
-  killRange (NoSmashingPragma _ q)            = killRange1 (NoSmashingPragma noRange) q
   killRange (StaticPragma _ q)                = killRange1 (StaticPragma noRange) q
   killRange (InlinePragma _ q)                = killRange1 (InlinePragma noRange) q
   killRange (ImportPragma _ s)                = ImportPragma noRange s
@@ -828,6 +836,7 @@
   killRange (CatchallPragma _)                = CatchallPragma noRange
   killRange (DisplayPragma _ lhs rhs)         = killRange2 (DisplayPragma noRange) lhs rhs
   killRange (NoPositivityCheckPragma _)       = NoPositivityCheckPragma noRange
+  killRange (PolarityPragma _ q occs)         = killRange1 (\q -> PolarityPragma noRange q occs) q
 
 instance KillRange RHS where
   killRange AbsurdRHS = AbsurdRHS
@@ -843,7 +852,7 @@
 instance KillRange WhereClause where
   killRange NoWhere         = NoWhere
   killRange (AnyWhere d)    = killRange1 AnyWhere d
-  killRange (SomeWhere n d) = killRange2 SomeWhere n d
+  killRange (SomeWhere n a d) = killRange3 SomeWhere n a d
 
 ------------------------------------------------------------------------
 -- NFData instances
@@ -873,6 +882,7 @@
   rnf (RecUpdate _ a b)  = rnf a `seq` rnf b
   rnf (Let _ a b)        = rnf a `seq` rnf b
   rnf (Paren _ a)        = rnf a
+  rnf (IdiomBrackets _ a)= rnf a
   rnf (Absurd _)         = ()
   rnf (As _ a b)         = rnf a `seq` rnf b
   rnf (Dot _ a)          = rnf a
@@ -900,7 +910,7 @@
   rnf (WildP _) = ()
   rnf (AbsurdP _) = ()
   rnf (AsP _ a b) = rnf a `seq` rnf b
-  rnf (DotP _ a) = rnf a
+  rnf (DotP _ a b) = rnf a `seq` rnf b
   rnf (LitP a) = rnf a
   rnf (RecP _ a) = rnf a
 
@@ -919,7 +929,7 @@
   rnf (PatternSyn _ a b c)    = rnf a `seq` rnf b `seq` rnf c
   rnf (Mutual _ a)            = rnf a
   rnf (Abstract _ a)          = rnf a
-  rnf (Private _ a)           = rnf a
+  rnf (Private _ _ a)         = rnf a
   rnf (InstanceB _ a)         = rnf a
   rnf (Macro _ a)             = rnf a
   rnf (Postulate _ a)         = rnf a
@@ -948,7 +958,6 @@
   rnf (CompiledUHCPragma _ a b)         = rnf a `seq` rnf b
   rnf (CompiledDataUHCPragma _ a b c)   = rnf a `seq` rnf b `seq` rnf c
   rnf (HaskellCodePragma _ s)           = rnf s
-  rnf (NoSmashingPragma _ a)            = rnf a
   rnf (StaticPragma _ a)                = rnf a
   rnf (InlinePragma _ a)                = rnf a
   rnf (ImportPragma _ a)                = rnf a
@@ -958,6 +967,7 @@
   rnf (CatchallPragma _)                = ()
   rnf (DisplayPragma _ a b)             = rnf a `seq` rnf b
   rnf (NoPositivityCheckPragma _)       = ()
+  rnf (PolarityPragma _ a b)            = rnf a `seq` rnf b
 
 -- | Ranges are not forced.
 
@@ -1002,7 +1012,7 @@
 instance NFData a => NFData (WhereClause' a) where
   rnf NoWhere         = ()
   rnf (AnyWhere a)    = rnf a
-  rnf (SomeWhere a b) = rnf a `seq` rnf b
+  rnf (SomeWhere a b c) = rnf a `seq` rnf b `seq` rnf c
 
 instance NFData a => NFData (LamBinding' a) where
   rnf (DomainFree a b) = rnf a `seq` rnf b
diff --git a/src/full/Agda/Syntax/Concrete/Definitions.hs b/src/full/Agda/Syntax/Concrete/Definitions.hs
--- a/src/full/Agda/Syntax/Concrete/Definitions.hs
+++ b/src/full/Agda/Syntax/Concrete/Definitions.hs
@@ -1,1343 +1,1553 @@
 {-# LANGUAGE CPP                 #-}
 {-# LANGUAGE DeriveDataTypeable  #-}
-{-# LANGUAGE FlexibleInstances   #-}
-{-# LANGUAGE PatternGuards       #-}
-{-# LANGUAGE ScopedTypeVariables #-}
-{-# LANGUAGE TupleSections       #-}
-
-#if __GLASGOW_HASKELL__ >= 710
-{-# LANGUAGE FlexibleContexts #-}
-#endif
-
--- | Preprocess 'Agda.Syntax.Concrete.Declaration's, producing 'NiceDeclaration's.
---
---   * Attach fixity and syntax declarations to the definition they refer to.
---
---   * Distribute the following attributes to the individual definitions:
---       @abstract@,
---       @instance@,
---       @postulate@,
---       @primitive@,
---       @private@,
---       termination pragmas.
---
---   * Gather the function clauses belonging to one function definition.
---
---   * Expand ellipsis @...@ in function clauses following @with@.
---
---   * Infer mutual blocks.
---     A block starts when a lone signature is encountered, and ends when
---     all lone signatures have seen their definition.
---
---   * Report basic well-formedness error,
---     when one of the above transformation fails.
-
-module Agda.Syntax.Concrete.Definitions
-    ( NiceDeclaration(..)
-    , NiceConstructor, NiceTypeSignature
-    , Clause(..)
-    , DeclarationException(..)
-    , Nice, runNice
-    , niceDeclarations
-    , notSoNiceDeclaration
-    , niceHasAbstract
-    , Measure
-    ) where
-
-import Prelude hiding (null)
-
-import Control.Arrow ((***))
-import Control.Applicative hiding (empty)
-import Control.Monad.State
-
-#if __GLASGOW_HASKELL__ <= 708
-import Data.Foldable ( foldMap )
-#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 hiding (null)
-import Data.Traversable (traverse)
-import Data.Typeable (Typeable)
-
-import Agda.Syntax.Concrete
-import Agda.Syntax.Common hiding (TerminationCheck())
-import qualified Agda.Syntax.Common as Common
-import Agda.Syntax.Position
-import Agda.Syntax.Fixity
-import Agda.Syntax.Notation
-import Agda.Syntax.Concrete.Pretty ()
-
-import Agda.Utils.Except ( Error(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.Tuple
-import Agda.Utils.Update
-
-#include "undefined.h"
-import Agda.Utils.Impossible
-
-{--------------------------------------------------------------------------
-    Types
- --------------------------------------------------------------------------}
-
-{-| The nice declarations. No fixity declarations and function definitions are
-    contained in a single constructor instead of spread out between type
-    signatures and clauses. The @private@, @postulate@, @abstract@ and @instance@
-    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 IsInstance Fixity' Access IsAbstract Name (Arg Expr)
-  | PrimitiveFunction Range Fixity' Access IsAbstract Name Expr
-  | NiceMutual Range TerminationCheck PositivityCheck [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 PositivityCheck
-  | NiceDataSig Range Fixity' Access Name [LamBinding] Expr PositivityCheck
-  | NiceFunClause Range Access IsAbstract TerminationCheck Catchall 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 IsMacro 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] PositivityCheck [NiceConstructor]
-  | RecDef Range Fixity' IsAbstract Name (Maybe (Ranged Induction)) (Maybe Bool) (Maybe (ThingWithFixity Name, IsInstance)) [LamBinding] PositivityCheck [NiceDeclaration]
-  | NicePatternSyn Range Fixity' Name [Arg Name] Pattern
-  | NiceUnquoteDecl Range [Fixity'] Access IsInstance IsAbstract TerminationCheck [Name] Expr
-  | NiceUnquoteDef Range [Fixity'] Access IsAbstract TerminationCheck [Name] Expr
-  deriving (Typeable, Show)
-
-type TerminationCheck = Common.TerminationCheck Measure
-
--- | Termination measure is, for now, a variable name.
-type Measure = Name
-
-type Catchall = Bool
-
--- | Only 'Axiom's.
-type NiceConstructor = NiceTypeSignature
-
--- | Only 'Axiom's.
-type NiceTypeSignature  = NiceDeclaration
-
--- | One clause in a function definition. There is no guarantee that the 'LHS'
---   actually declares the 'Name'. We will have to check that later.
-data Clause = Clause Name Catchall LHS RHS WhereClause [Clause]
-    deriving (Typeable, Show)
-
--- | 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?
-        | MissingDataSignature Name
-        | WrongDefinition Name DataRecOrFun DataRecOrFun
-        | WrongParameters Name
-        | NotAllowedInMutual NiceDeclaration
-        | UnknownNamesInFixityDecl [Name]
-        | Codata Range
-        | DeclarationPanic String
-        | UselessPrivate Range
-        | UselessAbstract Range
-        | UselessInstance Range
-        | WrongContentBlock KindOfBlock Range
-        | AmbiguousFunClauses LHS [Name] -- ^ in a mutual block, a clause could belong to any of the @[Name]@ type signatures
-        | InvalidTerminationCheckPragma Range
-        | InvalidMeasureMutual Range
-          -- ^ In a mutual block, all or none need a MEASURE pragma.
-          --   Range is of mutual block.
-        | PragmaNoTerminationCheck Range
-          -- ^ Pragma @{-# NO_TERMINATION_CHECK #-}@ has been replaced
-          --   by {-# TERMINATING #-} and {-# NON_TERMINATING #-}.
-        | InvalidCatchallPragma Range
-        | UnquoteDefRequiresSignature [Name]
-        | BadMacroDef NiceDeclaration
-        | InvalidNoPositivityCheckPragma Range
-    deriving (Typeable)
-
--- | Several declarations expect only type signatures as sub-declarations.  These are:
-data KindOfBlock
-  = PostulateBlock  -- ^ @postulate@
-  | PrimitiveBlock  -- ^ @primitive@.  Ensured by parser.
-  | InstanceBlock   -- ^ @instance@.  Actually, here all kinds of sub-declarations are allowed a priori.
-  | FieldBlock      -- ^ @field@.  Ensured by parser.
-  | DataBlock       -- ^ @data ... where@.  Here we got a bad error message for Agda-2.5 (Issue 1698).
-  deriving (Typeable, Eq, Ord, Show)
-
-
-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
-  getRange (MissingDataSignature x)           = getRange x
-  getRange (WrongDefinition x k k')           = getRange x
-  getRange (WrongParameters x)                = getRange x
-  getRange (AmbiguousFunClauses lhs xs)       = getRange lhs
-  getRange (NotAllowedInMutual x)             = getRange x
-  getRange (UnknownNamesInFixityDecl xs)      = getRange . head $ xs
-  getRange (Codata r)                         = r
-  getRange (DeclarationPanic _)               = noRange
-  getRange (UselessPrivate r)                 = r
-  getRange (UselessAbstract r)                = r
-  getRange (UselessInstance r)                = r
-  getRange (WrongContentBlock _ r)            = r
-  getRange (InvalidTerminationCheckPragma r)  = r
-  getRange (InvalidMeasureMutual r)           = r
-  getRange (PragmaNoTerminationCheck r)       = r
-  getRange (InvalidCatchallPragma r)          = r
-  getRange (UnquoteDefRequiresSignature x)    = getRange x
-  getRange (BadMacroDef d)                    = getRange d
-  getRange (InvalidNoPositivityCheckPragma r) = r
-
-instance HasRange NiceDeclaration where
-  getRange (Axiom r _ _ _ _ _ _)             = r
-  getRange (NiceField r _ _ _ _ _ _)         = r
-  getRange (NiceMutual r _ _ _)              = r
-  getRange (NiceModule r _ _ _ _ _ )         = r
-  getRange (NiceModuleMacro r _ _ _ _ _)     = r
-  getRange (NiceOpen r _ _)                  = r
-  getRange (NiceImport r _ _ _ _)            = r
-  getRange (NicePragma r _)                  = r
-  getRange (PrimitiveFunction r _ _ _ _ _)   = r
-  getRange (FunSig r _ _ _ _ _ _ _ _)        = r
-  getRange (FunDef r _ _ _ _ _ _)            = r
-  getRange (DataDef r _ _ _ _ _ _)           = r
-  getRange (RecDef r _ _ _ _ _ _ _ _ _)      = r
-  getRange (NiceRecSig r _ _ _ _ _ _)        = r
-  getRange (NiceDataSig r _ _ _ _ _ _)       = r
-  getRange (NicePatternSyn r _ _ _ _)        = r
-  getRange (NiceFunClause r _ _ _ _ _)       = r
-  getRange (NiceUnquoteDecl r _ _ _ _ _ _ _) = r
-  getRange (NiceUnquoteDef r _ _ _ _ _ _)    = r
-
-instance Error DeclarationException where
-  strMsg = DeclarationPanic
-
--- These error messages can (should) be terminated by a dot ".",
--- there is no error context printed after them.
-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)
-  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]
-  pretty (MissingWithClauses x) = fsep $
-    pwords "Missing with-clauses for function" ++ [pretty x]
-  pretty (MissingTypeSignature x) = fsep $
-    pwords "Missing type signature for left hand side" ++ [pretty x]
-  pretty (MissingDataSignature x) = fsep $
-    pwords "Missing type signature for " ++ [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')
-  pretty (WrongParameters x) = fsep $
-    pwords "List of parameters does not match previous signature for" ++ [pretty x]
-  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
-  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."
-  pretty (UselessAbstract _)      = fsep $
-    pwords "Using abstract here has no effect. Abstract applies only definitions like data definitions, record type definitions and function clauses."
-  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."
-  pretty (WrongContentBlock b _)      = fsep . pwords $
-    case b of
-      PostulateBlock -> "A postulate block can only contain type signatures, possibly under keyword instance"
-      DataBlock -> "A data definition can only contain type signatures, possibly under keyword instance"
-      _ -> __IMPOSSIBLE__
-  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 #-}."
-  pretty (InvalidTerminationCheckPragma _) = fsep $
-    pwords "Termination checking pragmas can only precede a mutual block or a function definition."
-  pretty (InvalidMeasureMutual _) = fsep $
-    pwords "In a mutual block, either all functions must have the same (or no) termination checking pragma."
-  pretty (InvalidCatchallPragma _) = fsep $
-    pwords "The CATCHALL pragma can only preceed a function clause."
-  pretty (UnquoteDefRequiresSignature xs) = fsep $
-    pwords "Missing type signatures for unquoteDef" ++ map pretty xs
-  pretty (BadMacroDef nd) = fsep $
-    [text $ declName nd] ++ pwords "are not allowed in macro blocks"
-  pretty (NotAllowedInMutual nd) = fsep $
-    [text $ declName nd] ++ pwords "are not allowed in mutual blocks"
-  pretty (Codata _) = text $
-    "The codata construction has been removed. " ++
-    "Use the INFINITY builtin instead."
-  pretty (DeclarationPanic s) = text s
-  pretty (InvalidNoPositivityCheckPragma _) = fsep $
-    pwords "No positivity checking pragmas can only precede a mutual block or a data/record definition."
-
-declName :: NiceDeclaration -> String
-declName Axiom{}             = "Postulates"
-declName NiceField{}         = "Fields"
-declName NiceMutual{}        = "Mutual blocks"
-declName NiceModule{}        = "Modules"
-declName NiceModuleMacro{}   = "Modules"
-declName NiceOpen{}          = "Open declarations"
-declName NiceImport{}        = "Import statements"
-declName NicePragma{}        = "Pragmas"
-declName PrimitiveFunction{} = "Primitive declarations"
-declName NicePatternSyn{}    = "Pattern synonyms"
-declName NiceUnquoteDecl{}   = "Unquoted declarations"
-declName NiceUnquoteDef{}    = "Unquoted definitions"
-declName NiceRecSig{}        = "Records"
-declName NiceDataSig{}       = "Data types"
-declName NiceFunClause{}     = "Functions without a type signature"
-declName FunSig{}            = "Type signatures"
-declName FunDef{}            = "Function definitions"
-declName RecDef{}            = "Records"
-declName DataDef{}           = "Data types"
-
-{--------------------------------------------------------------------------
-    The niceifier
- --------------------------------------------------------------------------}
-
-data InMutual
-  = InMutual    -- ^ we are nicifying a mutual block
-  | NotInMutual -- ^ we are nicifying decls not in a mutual block
-    deriving (Eq, Show)
-
--- | The kind of the forward declaration, remembering the parameters.
-
-data DataRecOrFun
-  = DataName PositivityCheck Params  -- ^ name of a data with parameters
-  | RecName  PositivityCheck Params  -- ^ name of a record with parameters
-  | FunName  TerminationCheck        -- ^ name of a function
-
--- Ignore pragmas when checking equality
-instance Eq DataRecOrFun where
-  DataName _ p == DataName _ q = p == q
-  RecName  _ p == RecName  _ q = p == q
-  FunName  _   == FunName  _   = True
-  _            == _            = False
-
-type Params = [Hiding]
-
-instance Show DataRecOrFun where
-  show (DataName _ n) = "data type" --  "with " ++ show n ++ " visible parameters"
-  show (RecName _ n)  = "record type" -- "with " ++ show n ++ " visible parameters"
-  show (FunName{})    = "function"
-
-isFunName :: DataRecOrFun -> Bool
-isFunName (FunName{}) = True
-isFunName _           = False
-
-sameKind :: DataRecOrFun -> DataRecOrFun -> Bool
-sameKind DataName{} DataName{} = True
-sameKind RecName{} RecName{} = True
-sameKind FunName{} FunName{} = True
-sameKind _ _ = False
-
-terminationCheck :: DataRecOrFun -> TerminationCheck
-terminationCheck (FunName tc) = tc
-terminationCheck _            = TerminationCheck
-
-positivityCheck :: DataRecOrFun -> PositivityCheck
-positivityCheck (DataName pc _) = pc
-positivityCheck (RecName pc _)  = pc
-positivityCheck _               = True
-
--- | Check that declarations in a mutual block are consistently
---   equipped with MEASURE pragmas, or whether there is a
---   NO_TERMINATION_CHECK pragma.
-combineTermChecks :: Range -> [TerminationCheck] -> Nice TerminationCheck
-combineTermChecks r tcs = loop tcs where
-  loop []         = return TerminationCheck
-  loop (tc : tcs) = do
-    let failure r = throwError $ InvalidMeasureMutual r
-    tc' <- loop tcs
-    case (tc, tc') of
-      (TerminationCheck      , tc'                   ) -> return tc'
-      (tc                    , TerminationCheck      ) -> return tc
-      (NonTerminating        , NonTerminating        ) -> return NonTerminating
-      (NoTerminationCheck    , NoTerminationCheck    ) -> return NoTerminationCheck
-      (NoTerminationCheck    , Terminating           ) -> return Terminating
-      (Terminating           , NoTerminationCheck    ) -> return Terminating
-      (Terminating           , Terminating           ) -> return Terminating
-      (TerminationMeasure{}  , TerminationMeasure{}  ) -> return tc
-      (TerminationMeasure r _, NoTerminationCheck    ) -> failure r
-      (TerminationMeasure r _, Terminating           ) -> failure r
-      (NoTerminationCheck    , TerminationMeasure r _) -> failure r
-      (Terminating           , TerminationMeasure r _) -> failure r
-      (TerminationMeasure r _, NonTerminating        ) -> failure r
-      (NonTerminating        , TerminationMeasure r _) -> failure r
-      (NoTerminationCheck    , NonTerminating        ) -> failure r
-      (Terminating           , NonTerminating        ) -> failure r
-      (NonTerminating        , NoTerminationCheck    ) -> failure r
-      (NonTerminating        , Terminating           ) -> failure r
-
-
--- | Nicifier monad.
-
-type Nice = StateT NiceEnv (Either DeclarationException)
-
--- | Nicifier state.
-
-data NiceEnv = NiceEnv
-  { _loneSigs :: LoneSigs
-    -- ^ Lone type signatures that wait for their definition.
-  , fixs     :: Fixities
-  }
-
-type LoneSigs = Map Name DataRecOrFun
-type Fixities = Map Name Fixity'
-
--- | Initial nicifier state.
-
-initNiceEnv :: NiceEnv
-initNiceEnv = NiceEnv
-  { _loneSigs = empty
-  , fixs      = empty
-  }
-
--- * Handling the lone signatures, stored to infer mutual blocks.
-
--- | Lens for field '_loneSigs'.
-
-loneSigs :: Lens' LoneSigs NiceEnv
-loneSigs f e = f (_loneSigs e) <&> \ s -> e { _loneSigs = s }
-
--- | Adding a lone signature to the state.
-
-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 %= Map.delete x
-
--- | Search for forward type signature.
-
-getSig :: Name -> Nice (Maybe DataRecOrFun)
-getSig x = Map.lookup x <$> use loneSigs
-
--- | Check that no lone signatures are left in the state.
-
-noLoneSigs :: Nice Bool
-noLoneSigs = null <$> use loneSigs
-
--- | Ensure that all forward declarations have been given a definition.
-
-checkLoneSigs :: [(Name, a)] -> Nice ()
-checkLoneSigs xs =
-  case xs of
-    []       -> return ()
-    (x, _):_ -> throwError $ MissingDefinition x
-
--- | Check whether name is not "_" and return its fixity.
-getFixity :: Name -> Nice Fixity'
-getFixity x = do
-  when (isUnderscore x) $ throwError $ InvalidName x
-  Map.findWithDefault noFixity' x <$> gets fixs  -- WAS: defaultFixity'
-
-runNice :: Nice a -> Either DeclarationException a
-runNice nice = nice `evalStateT` initNiceEnv
-
-data DeclKind
-    = LoneSig DataRecOrFun Name
-    | LoneDefs DataRecOrFun [Name]
-    | OtherDecl
-  deriving (Eq, Show)
-
-declKind :: NiceDeclaration -> DeclKind
-declKind (FunSig _ _ _ _ _ _ tc x _)      = LoneSig (FunName tc) x
-declKind (NiceRecSig _ _ _ x pars _ pc)   = LoneSig (RecName pc $ parameters pars) x
-declKind (NiceDataSig _ _ _ x pars _ pc)  = LoneSig (DataName pc $ parameters pars) x
-declKind (FunDef _ _ _ _ tc x _)          = LoneDefs (FunName tc) [x]
-declKind (DataDef _ _ _ x pars pc _)      = LoneDefs (DataName pc $ parameters pars) [x]
-declKind (RecDef _ _ _ x _ _ _ pars pc _) = LoneDefs (RecName pc $ parameters pars) [x]
-declKind (NiceUnquoteDef _ _ _ _ tc xs _) = LoneDefs (FunName tc) xs
-declKind Axiom{}                          = OtherDecl
-declKind NiceField{}                      = OtherDecl
-declKind PrimitiveFunction{}              = OtherDecl
-declKind NiceMutual{}                     = OtherDecl
-declKind NiceModule{}                     = OtherDecl
-declKind NiceModuleMacro{}                = OtherDecl
-declKind NiceOpen{}                       = OtherDecl
-declKind NiceImport{}                     = OtherDecl
-declKind NicePragma{}                     = OtherDecl
-declKind NiceFunClause{}                  = OtherDecl
-declKind NicePatternSyn{}                 = OtherDecl
-declKind NiceUnquoteDecl{}                = OtherDecl
-
--- | Compute visible parameters of a data or record signature or definition.
-parameters :: [LamBinding] -> Params
-parameters = List.concat . List.map numP where
-  numP (DomainFree i _) = [argInfoHiding i]
-  numP (DomainFull (TypedBindings _ (Arg i (TBind _ xs _)))) = List.replicate (length xs) $ argInfoHiding i
-  numP (DomainFull (TypedBindings _ (Arg _ TLet{})))         = []
-
--- | Main.
-niceDeclarations :: [Declaration] -> Nice [NiceDeclaration]
-niceDeclarations ds = do
-  -- Get fixity and syntax declarations.
-  fixs <- fixities ds
-  case Map.keys fixs \\ concatMap declaredNames ds of
-    -- If we have fixity/syntax decls for names not declared
-    -- in the current scope, fail.
-    xs@(_:_) -> throwError $ UnknownNamesInFixityDecl xs
-    []       -> localState $ do
-      -- Run the nicifier in an initial environment of fixity decls.
-      put $ initNiceEnv { fixs = fixs }
-      ds <- nice ds
-      -- Check that every signature got its definition.
-      checkLoneSigs . Map.toList =<< use loneSigs
-      -- Note that loneSigs is ensured to be empty.
-      -- (Important, since inferMutualBlocks also uses loneSigs state).
-      inferMutualBlocks ds
-  where
-    -- Compute the names defined in a declaration.
-    -- We stay in the current scope, i.e., do not go into modules.
-    declaredNames :: Declaration -> [Name]
-    declaredNames d = case d of
-      TypeSig _ x _        -> [x]
-      Field _ x _          -> [x]
-      FunClause (LHS p [] [] []) _ _ _
-        | IdentP (QName x) <- removeSingletonRawAppP p
-                           -> [x]
-      FunClause{}          -> []
-      DataSig _ _ x _ _    -> [x]
-      Data _ _ x _ _ cs    -> x : concatMap declaredNames cs
-      RecordSig _ x _ _    -> [x]
-      Record _ x _ _ c _ _ _ -> x : foldMap (:[]) (fst <$> c)
-      Infix _ _            -> []
-      Syntax _ _           -> []
-      PatternSyn _ x _ _   -> [x]
-      Mutual    _ ds       -> concatMap declaredNames ds
-      Abstract  _ ds       -> concatMap declaredNames ds
-      Private   _ ds       -> concatMap declaredNames ds
-      InstanceB _ ds       -> concatMap declaredNames ds
-      Macro     _ ds       -> concatMap declaredNames ds
-      Postulate _ ds       -> concatMap declaredNames ds
-      Primitive _ ds       -> concatMap declaredNames ds
-      Open{}               -> []
-      Import{}             -> []
-      ModuleMacro{}        -> []
-      Module{}             -> []
-      UnquoteDecl _ xs _   -> xs
-      UnquoteDef{}         -> []
-      Pragma{}             -> []
-
-    inferMutualBlocks :: [NiceDeclaration] -> Nice [NiceDeclaration]
-    inferMutualBlocks [] = return []
-    inferMutualBlocks (d : ds) =
-      case declKind d of
-        OtherDecl    -> (d :) <$> inferMutualBlocks ds
-        LoneDefs _ xs -> __IMPOSSIBLE__
-        LoneSig k x  -> do
-          addLoneSig x k
-          ((tcs, pcs), (ds0, ds1)) <- untilAllDefined ([terminationCheck k], [positivityCheck k]) ds
-          tc <- combineTermChecks (getRange d) tcs
-
-          -- Record modules are, for performance reasons, not always
-          -- placed in mutual blocks.
-
-          -- ASR (01 January 2016): If the record module has a
-          -- NO_POSITIVITY_CHECK pragma, it is placed in a mutual
-          -- block. See Issue 1760.
-          let prefix :: [NiceDeclaration] -> [NiceDeclaration]
-              prefix = case (d, ds0) of
-                (NiceRecSig{}, [r@(RecDef _ _ _ _ _ _ _ _ True _)]) -> ([d, r] ++)
-                _                                                   ->
-                  (NiceMutual (getRange (d : ds0)) tc (and pcs) (d : ds0) :)
-
-          prefix <$> inferMutualBlocks ds1
-      where
-        untilAllDefined :: ([TerminationCheck], [PositivityCheck])
-                        -> [NiceDeclaration]
-                        -> Nice (([TerminationCheck], [PositivityCheck]), ([NiceDeclaration], [NiceDeclaration]))
-        untilAllDefined (tc, pc) ds = do
-          done <- noLoneSigs
-          if done then return ((tc, pc), ([], ds)) else
-            case ds of
-              []     -> __IMPOSSIBLE__ <$ (checkLoneSigs . Map.toList =<< use loneSigs)
-              d : ds -> case declKind d of
-                LoneSig k x ->
-                  addLoneSig x k >> cons d (untilAllDefined (terminationCheck k : tc, positivityCheck k : pc) ds)
-                LoneDefs k xs -> do
-                  mapM_ removeLoneSig xs
-                  cons d (untilAllDefined (terminationCheck k : tc, positivityCheck k : pc) ds)
-                OtherDecl   -> cons d (untilAllDefined (tc, pc) ds)
-          where
-            -- ASR (26 December 2015): Type annotated version of the @cons@ function.
-            -- cons d = fmap $
-            --            (id :: (([TerminationCheck], [PositivityCheck]) -> ([TerminationCheck], [PositivityCheck])))
-            --            *** (d :)
-            --            *** (id :: [NiceDeclaration] -> [NiceDeclaration])
-            cons d = fmap (id *** (d :) *** id)
-
-    notMeasure TerminationMeasure{} = False
-    notMeasure _ = True
-
-    nice :: [Declaration] -> Nice [NiceDeclaration]
-    nice [] = return []
-
-    nice (Pragma (TerminationCheckPragma r NoTerminationCheck) : _) =
-      throwError $ PragmaNoTerminationCheck r
-
-    nice (Pragma (TerminationCheckPragma r tc) : ds@(Mutual{} : _)) | notMeasure tc = do
-      ds <- nice ds
-      case ds of
-        NiceMutual r _ pc ds' : ds -> return $ NiceMutual r tc pc ds' : ds
-        _                          -> __IMPOSSIBLE__
-
-    nice (Pragma (TerminationCheckPragma r tc) : d@TypeSig{} : ds) =
-      niceTypeSig tc d ds
-
-    nice (Pragma (TerminationCheckPragma r tc) : d@FunClause{} : ds) | notMeasure tc =
-      niceFunClause tc False d ds
-
-    nice (Pragma (TerminationCheckPragma r tc) : ds@(UnquoteDecl{} : _)) | notMeasure tc = do
-      NiceUnquoteDecl r f p a i _ x e : ds <- nice ds
-      return $ NiceUnquoteDecl r f p a i tc x e : ds
-
-    nice (Pragma (TerminationCheckPragma r tc) : d@(Pragma (NoPositivityCheckPragma _)) : ds@(Mutual{} : _)) | notMeasure tc = do
-      ds <- nice (d : ds)
-      case ds of
-        NiceMutual r _ pc ds' : ds -> return $ NiceMutual r tc pc ds' : ds
-        _                          -> __IMPOSSIBLE__
-
-    nice (Pragma (CatchallPragma r) : d@FunClause{} : ds) =
-      niceFunClause TerminationCheck True d ds
-
-    nice (d@TypeSig{} : Pragma (TerminationCheckPragma r (TerminationMeasure _ x)) : ds) =
-      niceTypeSig (TerminationMeasure r x) d ds
-
-    -- nice (Pragma (MeasurePragma r x) : d@FunClause{} : ds) =
-    --   niceFunClause (TerminationMeasure r x) d ds
-
-    nice (Pragma (NoPositivityCheckPragma _) : ds@(Mutual{} : _)) = do
-      ds <- nice ds
-      case ds of
-        NiceMutual r tc _ ds' : ds -> return $ NiceMutual r tc False ds' : ds
-        _                          -> __IMPOSSIBLE__
-
-    nice (Pragma (NoPositivityCheckPragma _) : d@(Data _ Inductive _ _ _ _) : ds) =
-      niceDataDef False d ds
-
-    nice (Pragma (NoPositivityCheckPragma _) : d@(DataSig _ Inductive _ _ _) : ds) =
-      niceDataSig False d ds
-
-    nice (Pragma (NoPositivityCheckPragma _) : d@Record{} : ds) =
-      niceRecord False d ds
-
-    nice (Pragma (NoPositivityCheckPragma _) : d@RecordSig{} : ds) =
-      niceRecordSig False d ds
-
-    nice (Pragma (NoPositivityCheckPragma _) : d@(Pragma (TerminationCheckPragma _ _)) : ds@(Mutual{} : _)) = do
-      ds <- nice (d : ds)
-      case ds of
-        NiceMutual r tc _ ds' : ds -> return $ NiceMutual r tc False ds' : ds
-        _                          -> __IMPOSSIBLE__
-
-    nice (d:ds) = do
-      case d of
-        TypeSig{}                     -> niceTypeSig TerminationCheck d ds
-        FunClause{}                   -> niceFunClause TerminationCheck False d ds
-        Field{}                       -> (++) <$> niceAxioms FieldBlock [ d ] <*> nice ds
-        DataSig r CoInductive _ _ _   -> throwError (Codata r)
-        Data r CoInductive _ _ _ _    -> throwError (Codata r)
-        d@(DataSig _ Inductive _ _ _) -> niceDataSig True d ds
-        d@(Data _ Inductive _ _ _ _)  -> niceDataDef True d ds
-        d@RecordSig{}                 -> niceRecordSig True d ds
-        d@Record{}                    -> niceRecord True d ds
-
-        Mutual r ds' ->
-          (:) <$> (mkOldMutual r =<< nice ds') <*> nice ds
-
-        Abstract r ds' ->
-          (++) <$> (abstractBlock r =<< nice ds') <*> nice ds
-
-        Private r ds' ->
-          (++) <$> (privateBlock r =<< nice ds') <*> nice ds
-
-        InstanceB r ds' ->
-          (++) <$> (instanceBlock r =<< nice ds') <*> nice ds
-
-        Macro r ds' ->
-          (++) <$> (macroBlock r =<< nice ds') <*> nice ds
-
-        Postulate _ ds' -> (++) <$> niceAxioms PostulateBlock ds' <*> nice ds
-
-        Primitive _ ds' -> (++) <$> (map toPrim <$> niceAxioms PrimitiveBlock ds') <*> nice ds
-
-        Module r x tel ds' ->
-          (NiceModule r PublicAccess ConcreteDef x tel ds' :) <$> nice ds
-
-        ModuleMacro r x modapp op is ->
-          (NiceModuleMacro r PublicAccess x modapp op is :)
-            <$> nice ds
-
-        -- Fixity and syntax declarations have been looked at already.
-        Infix _ _           -> nice ds
-        Syntax _ _          -> nice ds
-
-        PatternSyn r n as p -> do
-          fx <- getFixity n
-          (NicePatternSyn r fx n as p :) <$> nice ds
-        Open r x is         -> (NiceOpen r x is :) <$> nice ds
-        Import r x as op is -> (NiceImport r x as op is :) <$> nice ds
-
-        UnquoteDecl r xs e -> do
-          fxs <- mapM getFixity xs
-          (NiceUnquoteDecl r fxs PublicAccess NotInstanceDef ConcreteDef TerminationCheck xs e :) <$> nice ds
-
-        UnquoteDef r xs e -> do
-          fxs  <- mapM getFixity xs
-          sigs <- map fst . filter (isFunName . snd) . Map.toList <$> use loneSigs
-          let missing = filter (`notElem` sigs) xs
-          if null missing
-            then do
-              mapM_ removeLoneSig xs
-              (NiceUnquoteDef r fxs PublicAccess ConcreteDef TerminationCheck xs e :) <$> nice ds
-            else throwError $ UnquoteDefRequiresSignature missing
-
-        Pragma (TerminationCheckPragma r NoTerminationCheck) ->
-          throwError $ PragmaNoTerminationCheck r
-        Pragma (TerminationCheckPragma r _) ->
-          throwError $ InvalidTerminationCheckPragma r
-
-        Pragma (CatchallPragma r) ->
-          throwError $ InvalidCatchallPragma r
-
-        Pragma (NoPositivityCheckPragma r) ->
-          throwError $ InvalidNoPositivityCheckPragma r
-
-        Pragma p -> (NicePragma (getRange p) p :) <$> nice ds
-
-    niceFunClause :: TerminationCheck -> Catchall -> Declaration -> [Declaration] -> Nice [NiceDeclaration]
-    niceFunClause termCheck catchall d@(FunClause lhs _ _ _) ds = do
-          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
-          case [ (x, (fits, rest))
-               | x <- xs
-               , let (fits, rest) =
-                      span (couldBeFunClauseOf (Map.lookup x fixs) x) (d : ds)
-               , not (null fits)
-               ] of
-
-            -- case: clauses match none of the sigs
-            [] -> case lhs of
-              -- Subcase: The lhs is single identifier.
-              -- Treat it as a function clause without a type signature.
-              LHS p [] [] [] | IdentP (QName x) <- removeSingletonRawAppP p -> do
-                ds <- nice ds
-                d  <- mkFunDef defaultArgInfo termCheck x Nothing [d] -- fun def without type signature is relevant
-                return $ d ++ ds
-              -- Subcase: The lhs is a proper pattern.
-              -- This could be a let-pattern binding. Pass it on.
-              -- A missing type signature error might be raise in ConcreteToAbstract
-              _ -> do
-                ds <- nice ds
-                return $ NiceFunClause (getRange d) PublicAccess ConcreteDef termCheck catchall d : ds
-
-            -- case: clauses match exactly one of the sigs
-            [(x,(fits,rest))] -> do
-               removeLoneSig x
-               cs  <- mkClauses x (expandEllipsis fits) False
-               ds1 <- nice rest
-               fx  <- getFixity x
-               d   <- return $ FunDef (getRange fits) fits fx ConcreteDef termCheck x cs
-               return $ d : ds1
-
-            -- case: clauses match more than one sigs (ambiguity)
-            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 x (FunName termCheck)
-      ds <- nice ds
-      return $ FunSig (getRange d) fx PublicAccess NotInstanceDef NotMacroDef info termCheck x t : ds
-    niceTypeSig _ _ _ = __IMPOSSIBLE__
-
-    niceDataDef :: PositivityCheck -> Declaration -> [Declaration] ->
-                   Nice [NiceDeclaration]
-    niceDataDef pc (Data r Inductive x tel t cs) ds = do
-      t <- defaultTypeSig (DataName pc $ parameters tel) x t
-      (++) <$> dataOrRec pc DataDef NiceDataSig (niceAxioms DataBlock) r x tel t (Just cs)
-           <*> nice ds
-    niceDataDef _ _ _ = __IMPOSSIBLE__
-
-    niceDataSig :: PositivityCheck -> Declaration -> [Declaration] ->
-                   Nice [NiceDeclaration]
-    niceDataSig pc (DataSig r Inductive x tel t) ds = do
-      addLoneSig x (DataName pc $ parameters tel)
-      (++) <$> dataOrRec pc DataDef NiceDataSig (niceAxioms DataBlock) r x tel (Just t) Nothing
-           <*> nice ds
-    niceDataSig _ _ _ = __IMPOSSIBLE__
-
-    niceRecord :: PositivityCheck -> Declaration -> [Declaration] ->
-                  Nice [NiceDeclaration]
-    niceRecord pc (Record r x i e c tel t cs) ds = do
-      t <- defaultTypeSig (RecName pc $ parameters tel) x t
-      c <- traverse (\(cname, cinst) -> do fix <- getFixity cname; return (ThingWithFixity cname fix, cinst)) c
-      (++) <$> dataOrRec pc (\x1 x2 x3 x4 -> RecDef x1 x2 x3 x4 i e c) NiceRecSig
-                 niceDeclarations r x tel t (Just cs)
-           <*> nice ds
-    niceRecord _ _ _ = __IMPOSSIBLE__
-
-    niceRecordSig :: PositivityCheck -> Declaration -> [Declaration] ->
-                     Nice [NiceDeclaration]
-    niceRecordSig pc (RecordSig r x tel t) ds = do
-      addLoneSig x (RecName pc $ parameters tel)
-      fx <- getFixity x
-      (NiceRecSig r fx PublicAccess x tel t pc :) <$> nice ds
-    niceRecordSig _ _ _ = __IMPOSSIBLE__
-
-    -- We could add a default type signature here, but at the moment we can't
-    -- infer the type of a record or datatype, so better to just fail here.
-    defaultTypeSig :: DataRecOrFun -> Name -> Maybe Expr -> Nice (Maybe Expr)
-    defaultTypeSig k x t@Just{} = return t
-    defaultTypeSig k x Nothing  = do
-      mk <- getSig x
-      case mk of
-        Nothing -> throwError $ MissingDataSignature x
-        Just k' | k == k'       -> Nothing <$ removeLoneSig x
-                | sameKind k k' -> throwError $ WrongParameters x
-                | otherwise     -> throwError $ WrongDefinition x k' k
-
-    dataOrRec :: forall a .
-                 PositivityCheck ->
-                 (Range -> Fixity' -> IsAbstract -> Name -> [LamBinding] ->
-                   PositivityCheck -> [NiceConstructor] -> NiceDeclaration) ->
-                 (Range -> Fixity' -> Access -> Name -> [LamBinding] -> Expr ->
-                   PositivityCheck -> NiceDeclaration) ->
-                 ([a] -> Nice [NiceDeclaration]) ->
-                 Range ->
-                 Name ->
-                 [LamBinding] ->
-                 Maybe Expr ->
-                 Maybe [a] ->
-                 Nice [NiceDeclaration]
-    dataOrRec pc mkDef mkSig niceD r x tel mt mcs = do
-      mds <- traverse niceD mcs
-      f   <- getFixity x
-      return $ catMaybes $
-        [ mt <&> \ t -> mkSig (fuseRange x t) f PublicAccess x tel t pc
-        , mkDef r f ConcreteDef x (concatMap dropType tel) pc <$> mds
-        ]
-      where
-        dropType :: LamBinding -> [LamBinding]
-        dropType (DomainFull (TypedBindings _r (Arg ai (TBind _ xs _)))) =
-          map (mergeHiding . fmap (DomainFree ai)) xs
-        dropType (DomainFull (TypedBindings _r (Arg _ TLet{}))) = []
-        dropType b@DomainFree{} = [b]
-
-    -- Translate axioms
-    niceAxioms :: KindOfBlock -> [TypeSignatureOrInstanceBlock] -> Nice [NiceDeclaration]
-    niceAxioms b ds = liftM List.concat $ mapM (niceAxiom b) ds
-
-    niceAxiom :: KindOfBlock -> TypeSignatureOrInstanceBlock -> Nice [NiceDeclaration]
-    niceAxiom b d = case d of
-      TypeSig rel x t -> do
-        fx <- getFixity x
-        return [ Axiom (getRange d) fx PublicAccess NotInstanceDef rel x t ]
-      Field i x argt -> do
-        fx <- getFixity x
-        return [ NiceField (getRange d) i fx PublicAccess ConcreteDef x argt ]
-      InstanceB r decls -> do
-        instanceBlock r =<< niceAxioms InstanceBlock decls
-      Pragma p@(RewritePragma r _) -> do
-        return [ NicePragma r p ]
-      _ -> throwError $ WrongContentBlock b $ getRange d
-
-    toPrim :: NiceDeclaration -> NiceDeclaration
-    toPrim (Axiom r f a i rel x t) = PrimitiveFunction r f a ConcreteDef x t
-    toPrim _                     = __IMPOSSIBLE__
-
-    -- Create a function definition.
-    mkFunDef info termCheck x mt ds0 = do
-      cs <- mkClauses x (expandEllipsis ds0) False
-      f  <- getFixity x
-      return [ FunSig (fuseRange x t) f PublicAccess NotInstanceDef NotMacroDef info termCheck x t
-             , FunDef (getRange ds0) ds0 f ConcreteDef termCheck x cs ]
-        where
-          t = case mt of
-                Just t  -> t
-                Nothing -> underscore (getRange x)
-
-    underscore r = Underscore r Nothing
-
-
-    expandEllipsis :: [Declaration] -> [Declaration]
-    expandEllipsis [] = []
-    expandEllipsis (d@(FunClause Ellipsis{} _ _ _) : ds) =
-      d : expandEllipsis ds
-    expandEllipsis (d@(FunClause lhs@(LHS p ps _ _) _ _ _) : ds) =
-      d : expand p ps ds
-      where
-        expand _ _ [] = []
-        expand p ps (d@(Pragma (CatchallPragma r)) : ds) = d : expand p ps ds
-        expand p ps (FunClause (Ellipsis r ps' eqs []) rhs wh ca : ds) =
-          FunClause (LHS (setRange r p) ((setRange r ps) ++ ps') eqs []) rhs wh ca : expand p ps ds
-        expand p ps (FunClause (Ellipsis r ps' eqs es) rhs wh ca : ds) =
-          FunClause (LHS (setRange r p) ((setRange r ps) ++ ps') eqs es) rhs wh ca : expand p (ps ++ ps') ds
-        expand p ps (d@(FunClause (LHS _ _ _ []) _ _ _) : ds) =
-          d : expand p ps ds
-        expand _ _ (d@(FunClause (LHS p ps _ (_ : _)) _ _ _) : ds) =
-          d : expand p ps ds
-        expand _ _ (_ : ds) = __IMPOSSIBLE__
-    expandEllipsis (_ : ds) = __IMPOSSIBLE__
-
-    -- Turn function clauses into nice function clauses.
-    mkClauses :: Name -> [Declaration] -> Catchall -> Nice [Clause]
-    mkClauses _ [] _ = return []
-    mkClauses x (Pragma (CatchallPragma r) : cs) True  = throwError $ InvalidCatchallPragma r
-    mkClauses x (Pragma (CatchallPragma r) : cs) False = do
-      when (null cs) $ throwError $ InvalidCatchallPragma r
-      mkClauses x cs True
-    mkClauses x (FunClause lhs@(LHS _ _ _ []) rhs wh ca : cs) catchall =
-      (Clause x (ca || catchall) lhs rhs wh [] :) <$> mkClauses x cs False
-    mkClauses x (FunClause lhs@(LHS _ ps _ es) rhs wh ca : cs) catchall = do
-      when (null with) $ throwError $ MissingWithClauses x
-      wcs <- mkClauses x with False
-      (Clause x (ca || catchall) lhs rhs wh wcs :) <$> mkClauses x cs' False
-      where
-        (with, cs') = subClauses cs
-
-        -- A clause is a subclause if the number of with-patterns is
-        -- greater or equal to the current number of with-patterns plus the
-        -- number of with arguments.
-        subClauses :: [Declaration] -> ([Declaration],[Declaration])
-        subClauses (c@(FunClause (LHS _ ps' _ _) _ _ _) : cs)
-         | length ps' >= length ps + length es = mapFst (c:) (subClauses cs)
-         | otherwise                           = ([], c:cs)
-        subClauses (c@(FunClause (Ellipsis _ ps' _ _) _ _ _) : cs)
-         = mapFst (c:) (subClauses cs)
-        subClauses (c@(Pragma (CatchallPragma r)) : cs) = case subClauses cs of
-          ([], cs') -> ([], c:cs')
-          (cs, cs') -> (c:cs, cs')
-        subClauses [] = ([],[])
-        subClauses _  = __IMPOSSIBLE__
-    mkClauses x (FunClause lhs@Ellipsis{} rhs wh ca : cs) catchall =
-      (Clause x (ca || catchall) lhs rhs wh [] :) <$> mkClauses x cs False   -- Will result in an error later.
-    mkClauses _ _ _ = __IMPOSSIBLE__
-
-    -- for finding clauses for a type sig in mutual blocks
-    couldBeFunClauseOf :: Maybe Fixity' -> Name -> Declaration -> Bool
-    couldBeFunClauseOf mFixity x (Pragma (CatchallPragma{})) = True
-    couldBeFunClauseOf mFixity x (FunClause Ellipsis{} _ _ _) = True
-    couldBeFunClauseOf mFixity x (FunClause (LHS p _ _ _) _ _ _) =
-      let
-      pns        = patternNames p
-      xStrings   = nameStringParts x
-      patStrings = concatMap nameStringParts pns
-      in
---          trace ("x = " ++ show x) $
---          trace ("pns = " ++ show pns) $
---          trace ("xStrings = " ++ show xStrings) $
---          trace ("patStrings = " ++ show patStrings) $
---          trace ("mFixity = " ++ show mFixity) $
-      case (headMaybe pns, mFixity) of
-        -- first identifier in the patterns is the fun.symbol?
-        (Just y, _) | x == y -> True -- trace ("couldBe since y = " ++ show y) $ True
-        -- are the parts of x contained in p
-        _ | xStrings `isSublistOf` patStrings -> True -- trace ("couldBe since isSublistOf") $ True
-        -- looking for a mixfix fun.symb
-        (_, Just fix) ->  -- also matches in case of a postfix
-           let notStrings = stringParts (theNotation fix)
-           in  -- trace ("notStrings = " ++ show notStrings) $
-               -- trace ("patStrings = " ++ show patStrings) $
-               (not $ null notStrings) && (notStrings `isSublistOf` patStrings)
-        -- not a notation, not first id: give up
-        _ -> False -- trace ("couldBe not (case default)") $ False
-    couldBeFunClauseOf _ _ _ = False -- trace ("couldBe not (fun default)") $ False
-
-    -- ASR (27 May 2014). Commented out unused code.
-    -- @isFunClauseOf@ is for non-mutual blocks where clauses must follow the
-    -- type sig immediately
-    -- isFunClauseOf :: Name -> Declaration -> Bool
-    -- isFunClauseOf x (FunClause Ellipsis{} _ _) = True
-    -- isFunClauseOf x (FunClause (LHS p _ _ _) _ _) =
-    --  -- p is the whole left hand side, excluding "with" patterns and clauses
-    --   case removeSingletonRawAppP p of
-    --     IdentP (QName q)    -> x == q  -- lhs is just an identifier
-    --     _                   -> True
-    --         -- more complicated lhss must come with type signatures, so we just assume
-    --         -- it's part of the current definition
-    -- isFunClauseOf _ _ = False
-
-    removeSingletonRawAppP :: Pattern -> Pattern
-    removeSingletonRawAppP p =
-      case p of
-        RawAppP _ [p'] -> removeSingletonRawAppP p'
-        ParenP _ p'    -> removeSingletonRawAppP p'
-        _ -> p
-
-    -- Make an old style mutual block from a list of mutual declarations
-    mkOldMutual :: Range -> [NiceDeclaration] -> Nice NiceDeclaration
-    mkOldMutual r ds = do
-        -- Check that there aren't any missing definitions
-        checkLoneSigs loneNames
-        -- Check that there are no declarations that aren't allowed in old style mutual blocks
-        case filter notAllowedInMutual ds of
-          []  -> return ()
-          (NiceFunClause _ _ _ _ s_ (FunClause lhs _ _ _)):_ -> throwError $ MissingTypeSignature lhs
-          d:_ -> throwError $ NotAllowedInMutual d
-        let tcs = map termCheck ds
-        tc <- combineTermChecks r tcs
-
-        let pc :: PositivityCheck
-            pc = all positivityCheckOldMutual ds
-
-        return $ NiceMutual r tc pc $ sigs ++ other
-      where
-        -- Andreas, 2013-11-23 allow postulates in mutual blocks
-        notAllowedInMutual Axiom{} = False
-        notAllowedInMutual d       = declKind d == OtherDecl
-        -- Pull type signatures to the top
-        (sigs, other) = partition isTypeSig ds
-        isTypeSig Axiom{}                     = True
-        isTypeSig d | LoneSig{} <- declKind d = True
-        isTypeSig _                           = False
-
-        sigNames  = [ (x, k) | LoneSig k x <- map declKind ds ]
-        defNames  = [ (x, k) | LoneDefs k xs <- map declKind ds, x <- xs ]
-        -- compute the set difference with equality just on names
-        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
-        -- inner declarations comes with a {-# NO_TERMINATION_CHECK #-}
-        termCheck (FunSig _ _ _ _ _ _ tc _ _)        = tc
-        termCheck (FunDef _ _ _ _ tc _ _)            = tc
-        -- ASR (28 December 2015): Is this equation necessary?
-        termCheck (NiceMutual _ tc _ _)              = __IMPOSSIBLE__
-        termCheck (NiceUnquoteDecl _ _ _ _ _ tc _ _) = tc
-        termCheck (NiceUnquoteDef _ _ _ _ tc _ _)    = tc
-        termCheck Axiom{}                            = TerminationCheck
-        termCheck NiceField{}                        = TerminationCheck
-        termCheck PrimitiveFunction{}                = TerminationCheck
-        termCheck NiceModule{}                       = TerminationCheck
-        termCheck NiceModuleMacro{}                  = TerminationCheck
-        termCheck NiceOpen{}                         = TerminationCheck
-        termCheck NiceImport{}                       = TerminationCheck
-        termCheck NicePragma{}                       = TerminationCheck
-        termCheck NiceRecSig{}                       = TerminationCheck
-        termCheck NiceDataSig{}                      = TerminationCheck
-        termCheck NiceFunClause{}                    = TerminationCheck
-        termCheck DataDef{}                          = TerminationCheck
-        termCheck RecDef{}                           = TerminationCheck
-        termCheck NicePatternSyn{}                   = TerminationCheck
-
-        -- ASR (26 December 2015): Do not positivity check a mutual
-        -- block if any of its inner declarations comes with a
-        -- NO_POSITIVITY_CHECK pragma. See Issue 1614.
-        positivityCheckOldMutual :: NiceDeclaration -> PositivityCheck
-        positivityCheckOldMutual (DataDef _ _ _ _ _ pc _)      = pc
-        positivityCheckOldMutual (NiceDataSig _ _ _ _ _ _ pc)  = pc
-        positivityCheckOldMutual (NiceMutual _ _ pc _)         = __IMPOSSIBLE__
-        positivityCheckOldMutual (NiceRecSig _ _ _ _ _ _ pc)   = pc
-        positivityCheckOldMutual (RecDef _ _ _ _ _ _ _ _ pc _) = pc
-        positivityCheckOldMutual _                             = True
-
-        -- A mutual block cannot have a measure,
-        -- but it can skip termination check.
-
-    abstractBlock _ [] = return []
-    abstractBlock r ds = do
-      let (ds', anyChange) = runChange $ mapM mkAbstract ds
-          inherited        = r == noRange
-          -- hack to avoid failing on inherited abstract blocks in where clauses
-      if anyChange || inherited then return ds' else throwError $ UselessAbstract r
-
-    -- Make a declaration abstract
-    mkAbstract :: Updater NiceDeclaration
-    mkAbstract d =
-      case d of
-        NiceMutual r termCheck pc ds     -> NiceMutual r termCheck pc <$> mapM mkAbstract ds
-        FunDef r ds f a tc x cs          -> (\ a -> FunDef r ds f a tc x) <$> setAbstract a <*> mapM mkAbstractClause cs
-        DataDef r f a x ps pc cs         -> (\ a -> DataDef r f a x ps pc) <$> setAbstract a <*> mapM mkAbstract cs
-        RecDef r f a x i e c ps pc cs    -> (\ a -> RecDef r f a x i e c ps pc) <$> setAbstract a <*> mapM mkAbstract cs
-        NiceFunClause r p a termCheck catchall d  -> (\ a -> NiceFunClause r p a termCheck catchall d) <$> setAbstract a
-        -- no effect on fields or primitives, the InAbstract field there is unused
-        NiceField r i f p _ x e          -> return $ NiceField r i f p AbstractDef x e
-        PrimitiveFunction r f p _ x e    -> return $ PrimitiveFunction r f p AbstractDef x e
-        NiceUnquoteDecl r f p i _ t x e  -> return $ NiceUnquoteDecl r f p i AbstractDef t x e
-        NiceUnquoteDef r f p _ t x e     -> return $ NiceUnquoteDef r f p AbstractDef t x e
-        NiceModule{}                     -> return d
-        NiceModuleMacro{}                -> return d
-        Axiom{}                          -> return d
-        NicePragma{}                     -> return d
-        NiceOpen{}                       -> return d
-        NiceImport{}                     -> return d
-        FunSig{}                         -> return d
-        NiceRecSig{}                     -> return d
-        NiceDataSig{}                    -> return d
-        NicePatternSyn{}                 -> return d
-
-    setAbstract :: Updater IsAbstract
-    setAbstract a = case a of
-      AbstractDef -> return a
-      ConcreteDef -> dirty $ AbstractDef
-
-    mkAbstractClause :: Updater Clause
-    mkAbstractClause (Clause x catchall lhs rhs wh with) = do
-        wh <- mkAbstractWhere wh
-        Clause x catchall lhs rhs wh <$> mapM mkAbstractClause with
-
-    mkAbstractWhere :: Updater WhereClause
-    mkAbstractWhere  NoWhere         = return $ NoWhere
-    mkAbstractWhere (AnyWhere ds)    = dirty $ AnyWhere [Abstract noRange ds]
-    mkAbstractWhere (SomeWhere m ds) = dirty $SomeWhere m [Abstract noRange ds]
-
-    privateBlock _ [] = return []
-    privateBlock r ds = do
-      let (ds', anyChange) = runChange $ mapM mkPrivate ds
-      if anyChange then return ds' else throwError $ UselessPrivate r
-
-    -- Make a declaration private.
-    -- Andreas, 2012-11-17:
-    -- Mark computation 'dirty' if there was a declaration that could be privatized.
-    -- If no privatization is taking place, we want to complain about 'UselessPrivate'.
-    -- Alternatively, we could only dirty if a non-private thing was privatized.
-    -- Then, nested 'private's would sometimes also be complained about.
-    mkPrivate :: Updater NiceDeclaration
-    mkPrivate d =
-      case d of
-        Axiom r f p i rel x e            -> (\ p -> Axiom r f p i rel x e) <$> setPrivate p
-        NiceField r i f p a x e          -> (\ p -> NiceField r i f p a x e) <$> setPrivate p
-        PrimitiveFunction r f p a x e    -> (\ p -> PrimitiveFunction r f p a x e) <$> setPrivate p
-        NiceMutual r termCheck pc ds     -> NiceMutual r termCheck pc <$> mapM mkPrivate ds
-        NiceModule r p a x tel ds        -> (\ p -> NiceModule r p a x tel ds) <$> setPrivate p
-        NiceModuleMacro r p x ma op is   -> (\ p -> NiceModuleMacro r p x ma op is) <$> setPrivate p
-        FunSig r f p i m rel tc x e      -> (\ p -> FunSig r f p i m rel tc x e) <$> setPrivate p
-        NiceRecSig r f p x ls t pc       -> (\ p -> NiceRecSig r f p x ls t pc) <$> setPrivate p
-        NiceDataSig r f p x ls t pc      -> (\ p -> NiceDataSig r f p x ls t pc) <$> setPrivate p
-        NiceFunClause r p a termCheck catchall d -> (\ p -> NiceFunClause r p a termCheck catchall d) <$> setPrivate p
-        NiceUnquoteDecl r f p i a t x e  -> (\ p -> NiceUnquoteDecl r f p i a t x e) <$> setPrivate p
-        NiceUnquoteDef r f p a t x e     -> (\ p -> NiceUnquoteDef r f p a t x e) <$> setPrivate p
-        NicePragma _ _                   -> return $ d
-        NiceOpen _ _ _                   -> return $ d
-        NiceImport _ _ _ _ _             -> return $ d
-        FunDef{}                         -> return $ d
-        DataDef{}                        -> return $ d
-        RecDef{}                         -> return $ d
-        NicePatternSyn _ _ _ _ _         -> return $ d
-
-    setPrivate :: Updater Access
-    setPrivate p = case p of
-      PrivateAccess -> return p
-      _             -> dirty $ PrivateAccess
-
-    -- Andreas, 2012-11-22: Q: is this necessary?
-    -- Are where clauses not always private?
-    mkPrivateClause :: Updater Clause
-    mkPrivateClause (Clause x catchall lhs rhs wh with) = do
-        wh <- mkPrivateWhere wh
-        Clause x catchall lhs rhs wh <$> mapM mkPrivateClause with
-
-    mkPrivateWhere :: Updater WhereClause
-    mkPrivateWhere  NoWhere         = return $ NoWhere
-    mkPrivateWhere (AnyWhere ds)    = dirty  $ AnyWhere [Private (getRange ds) ds]
-    mkPrivateWhere (SomeWhere m ds) = dirty  $ SomeWhere m [Private (getRange ds) ds]
-
-    instanceBlock _ [] = return []
-    instanceBlock r ds = do
-      let (ds', anyChange) = runChange $ mapM mkInstance ds
-      if anyChange then return ds' else throwError $ UselessInstance r
-
-    -- Make a declaration eligible for instance search.
-    mkInstance :: Updater NiceDeclaration
-    mkInstance d =
-      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 m rel tc x e      -> (\ i -> FunSig r f p i m 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  -- Field instance are handled by the parser
-        PrimitiveFunction{}              -> return d
-        NiceUnquoteDef{}                 -> return d
-        NiceRecSig{}                     -> return d
-        NiceDataSig{}                    -> return d
-        NiceModuleMacro{}                -> return d
-        NiceModule{}                     -> return d
-        NicePragma{}                     -> return d
-        NiceOpen{}                       -> return d
-        NiceImport{}                     -> return d
-        DataDef{}                        -> return d
-        RecDef{}                         -> return d
-        NicePatternSyn{}                 -> return d
-
-    setInstance :: Updater IsInstance
-    setInstance i = case i of
-      InstanceDef -> return i
-      _           -> dirty $ InstanceDef
-
-    macroBlock r ds = mapM mkMacro ds
-
-    mkMacro :: NiceDeclaration -> Nice NiceDeclaration
-    mkMacro d =
-      case d of
-        FunSig r f p i _ rel tc x e -> return $ FunSig r f p i MacroDef rel tc x e
-        FunDef{}                    -> return d
-        _                           -> throwError (BadMacroDef d)
-
--- | Add more fixities. Throw an exception for multiple fixity declarations.
---   OR:  Disjoint union of fixity maps.  Throws exception if not disjoint.
-
-plusFixities :: Fixities -> Fixities -> Nice Fixities
-plusFixities m1 m2
-    -- If maps are not disjoint, report conflicts as exception.
-    | not (null isect) = throwError $ MultipleFixityDecls isect
-    -- Otherwise, do the union.
-    | otherwise        = return $ Map.unionWithKey mergeFixites m1 m2
-  where
-    --  Merge two fixities, assuming there is no conflict
-    mergeFixites name (Fixity' f1 s1) (Fixity' f2 s2) = Fixity' f s
-              where f | f1 == noFixity = f2
-                      | f2 == noFixity = f1
-                      | otherwise = __IMPOSSIBLE__
-                    s | s1 == noNotation = s2
-                      | s2 == noNotation = s1
-                      | otherwise = __IMPOSSIBLE__
-
-    -- Compute a list of conflicts in a format suitable for error reporting.
-    isect = [ (x, map (Map.findWithDefault __IMPOSSIBLE__ x) [m1,m2])
-            | (x, False) <- Map.assocs $ Map.intersectionWith compatible m1 m2 ]
-
-    -- Check for no conflict.
-    compatible (Fixity' f1 s1) (Fixity' f2 s2) = (f1 == noFixity || f2 == noFixity) &&
-                                                 (s1 == noNotation || s2 == noNotation)
-
--- | While 'Fixities' is not a monoid under disjoint union (which might fail),
---   we get the monoid instance for the monadic @Nice Fixities@ which propagates
---   the first error.
-instance Monoid (Nice Fixities) where
-  mempty        = return $ Map.empty
-  mappend c1 c2 = plusFixities ==<< (c1, c2)
-
--- | Get the fixities from the current block.
---   Doesn't go inside modules and where blocks.
---   The reason for this is that fixity declarations have to appear at the same
---   level (or possibly outside an abstract or mutual block) as its target
---   declaration.
-fixities :: [Declaration] -> Nice Fixities
-fixities = foldMap $ \ d -> case d of
-  -- These declarations define fixities:
-  Syntax x syn    -> return $ Map.singleton x $ Fixity' noFixity syn
-  Infix  f xs     -> return $ Map.fromList $ map (,Fixity' f noNotation) xs
-  -- We look into these blocks:
-  Mutual    _ ds' -> fixities ds'
-  Abstract  _ ds' -> fixities ds'
-  Private   _ ds' -> fixities ds'
-  InstanceB _ ds' -> fixities ds'
-  Macro     _ ds' -> fixities ds'
-  -- All other declarations are ignored.
-  -- We expand these boring cases to trigger a revisit
-  -- in case the @Declaration@ type is extended in the future.
-  TypeSig     {}  -> mempty
-  Field       {}  -> mempty
-  FunClause   {}  -> mempty
-  DataSig     {}  -> mempty
-  Data        {}  -> mempty
-  RecordSig   {}  -> mempty
-  Record      {}  -> mempty
-  PatternSyn  {}  -> mempty
-  Postulate   {}  -> mempty
-  Primitive   {}  -> mempty
-  Open        {}  -> mempty
-  Import      {}  -> mempty
-  ModuleMacro {}  -> mempty
-  Module      {}  -> mempty
-  UnquoteDecl {}  -> mempty
-  UnquoteDef  {}  -> mempty
-  Pragma      {}  -> mempty
-
-
--- Andreas, 2012-04-07
--- The following function is only used twice, for building a Let, and for
--- printing an error message.
-
--- | (Approximately) convert a 'NiceDeclaration' back to a 'Declaration'.
-notSoNiceDeclaration :: NiceDeclaration -> Declaration
-notSoNiceDeclaration d =
-  case d of
-    Axiom _ _ _ _ rel x e            -> TypeSig rel x e
-    NiceField _ i _ _ _ x argt       -> Field i x argt
-    PrimitiveFunction r _ _ _ x e    -> Primitive r [TypeSig defaultArgInfo x e]
-    NiceMutual r _ _ ds              -> Mutual r $ map notSoNiceDeclaration ds
-    NiceModule r _ _ x tel ds        -> Module r x tel ds
-    NiceModuleMacro r _ x ma o dir   -> ModuleMacro r x ma o dir
-    NiceOpen r x dir                 -> Open r x dir
-    NiceImport r x as o dir          -> Import r x as o dir
-    NicePragma _ p                   -> Pragma p
-    NiceRecSig r _ _ x bs e _        -> RecordSig r x bs e
-    NiceDataSig r _ _ x bs e _       -> DataSig r Inductive x bs e
-    NiceFunClause _ _ _ _ _ d        -> d
-    FunSig _ _ _ _ _ rel tc x e      -> TypeSig rel x e
-    FunDef r [d] _ _ _ _ _           -> d
-    FunDef r ds _ _ _ _ _            -> Mutual r ds -- Andreas, 2012-04-07 Hack!
-    DataDef r _ _ x bs _ cs          -> Data r Inductive x bs Nothing $ map notSoNiceDeclaration cs
-    RecDef r _ _ x i e c bs _ ds     -> Record r x i e (unThing <$> c) bs Nothing $ map notSoNiceDeclaration ds
-      where unThing (ThingWithFixity c _, inst) = (c, inst)
-    NicePatternSyn r _ n as p        -> PatternSyn r n as p
-    NiceUnquoteDecl r _ _ _ _ _ x e  -> UnquoteDecl r x e
-    NiceUnquoteDef r _ _ _ _ x e     -> UnquoteDef r x e
-
--- | Has the 'NiceDeclaration' a field of type 'IsAbstract'?
-niceHasAbstract :: NiceDeclaration -> Maybe IsAbstract
-niceHasAbstract d =
-  case d of
-    Axiom{}                         -> Nothing
-    NiceField _ _ _ _ a _ _         -> Just a
-    PrimitiveFunction _ _ _ a _ _   -> Just a
-    NiceMutual{}                    -> Nothing
-    NiceModule _ _ a _ _ _          -> Just a
-    NiceModuleMacro{}               -> Nothing
-    NiceOpen{}                      -> Nothing
-    NiceImport{}                    -> Nothing
-    NicePragma{}                    -> Nothing
-    NiceRecSig{}                    -> Nothing
-    NiceDataSig{}                   -> Nothing
-    NiceFunClause _ _ a _ _ _       -> Just a
-    FunSig{}                        -> Nothing
-    FunDef _ _ _ a _ _ _            -> Just a
-    DataDef _ _ a _ _ _ _           -> Just a
-    RecDef _ _ a _ _ _ _ _ _ _      -> Just a
-    NicePatternSyn{}                -> Nothing
-    NiceUnquoteDecl _ _ _ _ a _ _ _ -> Just a
+{-# LANGUAGE GADTs               #-}
+{-# LANGUAGE ScopedTypeVariables #-}
+
+-- | Preprocess 'Agda.Syntax.Concrete.Declaration's, producing 'NiceDeclaration's.
+--
+--   * Attach fixity and syntax declarations to the definition they refer to.
+--
+--   * Distribute the following attributes to the individual definitions:
+--       @abstract@,
+--       @instance@,
+--       @postulate@,
+--       @primitive@,
+--       @private@,
+--       termination pragmas.
+--
+--   * Gather the function clauses belonging to one function definition.
+--
+--   * Expand ellipsis @...@ in function clauses following @with@.
+--
+--   * Infer mutual blocks.
+--     A block starts when a lone signature is encountered, and ends when
+--     all lone signatures have seen their definition.
+--
+--   * Report basic well-formedness error,
+--     when one of the above transformation fails.
+
+module Agda.Syntax.Concrete.Definitions
+    ( NiceDeclaration(..)
+    , NiceConstructor, NiceTypeSignature
+    , Clause(..)
+    , DeclarationException(..)
+    , Nice, runNice
+    , niceDeclarations
+    , notSoNiceDeclarations
+    , niceHasAbstract
+    , Measure
+    ) where
+
+import Prelude hiding (null)
+
+import Control.Arrow ((***))
+import Control.Applicative hiding (empty)
+import Control.Monad.State
+
+#if __GLASGOW_HASKELL__ <= 708
+import Data.Foldable ( foldMap )
+#endif
+
+import qualified Data.Map as Map
+import Data.Map (Map)
+import Data.Maybe
+import Data.Semigroup ( Semigroup, Monoid, (<>), mempty, mappend )
+import Data.List as List hiding (null)
+import qualified Data.Set as Set
+import Data.Traversable (Traversable, traverse)
+import Data.Typeable (Typeable)
+
+import Agda.Syntax.Concrete
+import Agda.Syntax.Common hiding (TerminationCheck())
+import qualified Agda.Syntax.Common as Common
+import Agda.Syntax.Position
+import Agda.Syntax.Fixity
+import Agda.Syntax.Notation
+import Agda.Syntax.Concrete.Pretty ()
+
+import Agda.TypeChecking.Positivity.Occurrence
+
+import Agda.Utils.Except ( Error(strMsg), MonadError(throwError) )
+import Agda.Utils.Functor
+import Agda.Utils.Lens
+import Agda.Utils.List (caseList, headMaybe, isSublistOf)
+import Agda.Utils.Monad
+import Agda.Utils.Null
+import qualified Agda.Utils.Pretty as Pretty
+import Agda.Utils.Pretty hiding ((<>))
+import Agda.Utils.Singleton
+import Agda.Utils.Tuple
+import Agda.Utils.Update
+
+#include "undefined.h"
+import Agda.Utils.Impossible
+
+{--------------------------------------------------------------------------
+    Types
+ --------------------------------------------------------------------------}
+
+{-| The nice declarations. No fixity declarations and function definitions are
+    contained in a single constructor instead of spread out between type
+    signatures and clauses. The @private@, @postulate@, @abstract@ and @instance@
+    modifiers have been distributed to the individual declarations.
+
+    Observe the order of components:
+
+      Range
+      Fixity'
+      Access
+      IsAbstract
+      IsInstance
+      TerminationCheck
+      PositivityCheck
+
+      further attributes
+
+      (Q)Name
+
+      content (Expr, Declaration ...)
+-}
+data NiceDeclaration
+  = Axiom Range Fixity' Access IsAbstract IsInstance ArgInfo (Maybe [Occurrence]) Name Expr
+      -- ^ 'IsAbstract' argument: We record whether a declaration was made in an @abstract@ block.
+      --
+      --   'ArgInfo' argument: Axioms and functions can be declared irrelevant.
+      --   ('Hiding' should be 'NotHidden'.)
+      --
+      --   @Maybe [Occurrence]@ argument: Polarities can be assigned to identifiers.
+  | NiceField Range Fixity' Access IsAbstract IsInstance Name (Arg Expr)
+  | PrimitiveFunction Range Fixity' Access IsAbstract Name Expr
+  | NiceMutual Range TerminationCheck PositivityCheck [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 IsAbstract PositivityCheck Name [LamBinding] Expr
+  | NiceDataSig Range Fixity' Access IsAbstract PositivityCheck Name [LamBinding] Expr
+  | NiceFunClause Range Access IsAbstract TerminationCheck Catchall 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 IsAbstract IsInstance IsMacro 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 PositivityCheck Name [LamBinding] [NiceConstructor]
+  | RecDef Range Fixity' IsAbstract PositivityCheck Name (Maybe (Ranged Induction)) (Maybe Bool) (Maybe (ThingWithFixity Name, IsInstance)) [LamBinding] [NiceDeclaration]
+  | NicePatternSyn Range Fixity' Name [Arg Name] Pattern
+  | NiceUnquoteDecl Range [Fixity'] Access IsAbstract IsInstance TerminationCheck [Name] Expr
+  | NiceUnquoteDef Range [Fixity'] Access IsAbstract TerminationCheck [Name] Expr
+  deriving (Typeable, Show)
+
+type TerminationCheck = Common.TerminationCheck Measure
+
+-- | Termination measure is, for now, a variable name.
+type Measure = Name
+
+type Catchall = Bool
+
+-- | Only 'Axiom's.
+type NiceConstructor = NiceTypeSignature
+
+-- | Only 'Axiom's.
+type NiceTypeSignature  = NiceDeclaration
+
+-- | One clause in a function definition. There is no guarantee that the 'LHS'
+--   actually declares the 'Name'. We will have to check that later.
+data Clause = Clause Name Catchall LHS RHS WhereClause [Clause]
+    deriving (Typeable, Show)
+
+-- | The exception type.
+data DeclarationException
+        = MultipleFixityDecls [(Name, [Fixity'])]
+        | MultiplePolarityPragmas [Name]
+        | 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?
+        | MissingDataSignature Name
+        | WrongDefinition Name DataRecOrFun DataRecOrFun
+        | WrongParameters Name
+        | NotAllowedInMutual NiceDeclaration
+        | UnknownNamesInFixityDecl [Name]
+        | UnknownNamesInPolarityPragmas [Name]
+        | PolarityPragmasButNotPostulates [Name]
+        | Codata Range
+        | DeclarationPanic String
+        | UselessPrivate Range
+        | UselessAbstract Range
+        | UselessInstance Range
+        | WrongContentBlock KindOfBlock Range
+        | AmbiguousFunClauses LHS [Name] -- ^ in a mutual block, a clause could belong to any of the @[Name]@ type signatures
+        | InvalidTerminationCheckPragma Range
+        | InvalidMeasureMutual Range
+          -- ^ In a mutual block, all or none need a MEASURE pragma.
+          --   Range is of mutual block.
+        | PragmaNoTerminationCheck Range
+          -- ^ Pragma @{-# NO_TERMINATION_CHECK #-}@ has been replaced
+          --   by {-# TERMINATING #-} and {-# NON_TERMINATING #-}.
+        | InvalidCatchallPragma Range
+        | UnquoteDefRequiresSignature [Name]
+        | BadMacroDef NiceDeclaration
+        | InvalidNoPositivityCheckPragma Range
+
+    deriving (Typeable)
+
+-- | Several declarations expect only type signatures as sub-declarations.  These are:
+data KindOfBlock
+  = PostulateBlock  -- ^ @postulate@
+  | PrimitiveBlock  -- ^ @primitive@.  Ensured by parser.
+  | InstanceBlock   -- ^ @instance@.  Actually, here all kinds of sub-declarations are allowed a priori.
+  | FieldBlock      -- ^ @field@.  Ensured by parser.
+  | DataBlock       -- ^ @data ... where@.  Here we got a bad error message for Agda-2.5 (Issue 1698).
+  deriving (Typeable, Eq, Ord, Show)
+
+
+instance HasRange DeclarationException where
+  getRange (MultipleFixityDecls xs)             = getRange (fst $ head xs)
+  getRange (MultiplePolarityPragmas xs)         = getRange (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
+  getRange (MissingDataSignature x)             = getRange x
+  getRange (WrongDefinition x k k')             = getRange x
+  getRange (WrongParameters x)                  = getRange x
+  getRange (AmbiguousFunClauses lhs xs)         = getRange lhs
+  getRange (NotAllowedInMutual x)               = getRange x
+  getRange (UnknownNamesInFixityDecl xs)        = getRange . head $ xs
+  getRange (UnknownNamesInPolarityPragmas xs)   = getRange . head $ xs
+  getRange (PolarityPragmasButNotPostulates xs) = getRange . head $ xs
+  getRange (Codata r)                           = r
+  getRange (DeclarationPanic _)                 = noRange
+  getRange (UselessPrivate r)                   = r
+  getRange (UselessAbstract r)                  = r
+  getRange (UselessInstance r)                  = r
+  getRange (WrongContentBlock _ r)              = r
+  getRange (InvalidTerminationCheckPragma r)    = r
+  getRange (InvalidMeasureMutual r)             = r
+  getRange (PragmaNoTerminationCheck r)         = r
+  getRange (InvalidCatchallPragma r)            = r
+  getRange (UnquoteDefRequiresSignature x)      = getRange x
+  getRange (BadMacroDef d)                      = getRange d
+  getRange (InvalidNoPositivityCheckPragma r)   = r
+
+instance HasRange NiceDeclaration where
+  getRange (Axiom r _ _ _ _ _ _ _ _)         = r
+  getRange (NiceField r _ _ _ _ _ _)         = r
+  getRange (NiceMutual r _ _ _)              = r
+  getRange (NiceModule r _ _ _ _ _ )         = r
+  getRange (NiceModuleMacro r _ _ _ _ _)     = r
+  getRange (NiceOpen r _ _)                  = r
+  getRange (NiceImport r _ _ _ _)            = r
+  getRange (NicePragma r _)                  = r
+  getRange (PrimitiveFunction r _ _ _ _ _)   = r
+  getRange (FunSig r _ _ _ _ _ _ _ _ _)      = r
+  getRange (FunDef r _ _ _ _ _ _)            = r
+  getRange (DataDef r _ _ _ _ _ _)           = r
+  getRange (RecDef r _ _ _ _ _ _ _ _ _)      = r
+  getRange (NiceRecSig r _ _ _ _ _ _ _)      = r
+  getRange (NiceDataSig r _ _ _ _ _ _ _)     = r
+  getRange (NicePatternSyn r _ _ _ _)        = r
+  getRange (NiceFunClause r _ _ _ _ _)       = r
+  getRange (NiceUnquoteDecl r _ _ _ _ _ _ _) = r
+  getRange (NiceUnquoteDef r _ _ _ _ _ _)    = r
+
+instance Error DeclarationException where
+  strMsg = DeclarationPanic
+
+-- These error messages can (should) be terminated by a dot ".",
+-- there is no error context printed after them.
+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 Pretty.<> text ": " <+> fsep (map pretty fs)
+  pretty (MultiplePolarityPragmas xs) = fsep $
+    pwords "Multiple polarity pragmas for" ++ map pretty xs
+  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]
+  pretty (MissingWithClauses x) = fsep $
+    pwords "Missing with-clauses for function" ++ [pretty x]
+  pretty (MissingTypeSignature x) = fsep $
+    pwords "Missing type signature for left hand side" ++ [pretty x]
+  pretty (MissingDataSignature x) = fsep $
+    pwords "Missing type signature for " ++ [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')
+  pretty (WrongParameters x) = fsep $
+    pwords "List of parameters does not match previous signature for" ++ [pretty x]
+  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
+  pretty (UnknownNamesInPolarityPragmas xs) = fsep $
+    pwords "The following names are not declared in the same scope as their polarity pragmas (they could for instance be out of scope, imported from another module, or declared in a super module):" ++ map pretty xs
+  pretty (PolarityPragmasButNotPostulates xs) = fsep $
+    pwords "Polarity pragmas have been given for the following identifiers which are not postulates:" ++ map pretty xs
+  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."
+  pretty (UselessAbstract _)      = fsep $
+    pwords "Using abstract here has no effect. Abstract applies only definitions like data definitions, record type definitions and function clauses."
+  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."
+  pretty (WrongContentBlock b _)      = fsep . pwords $
+    case b of
+      PostulateBlock -> "A postulate block can only contain type signatures, possibly under keyword instance"
+      DataBlock -> "A data definition can only contain type signatures, possibly under keyword instance"
+      _ -> __IMPOSSIBLE__
+  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 #-}."
+  pretty (InvalidTerminationCheckPragma _) = fsep $
+    pwords "Termination checking pragmas can only precede a mutual block or a function definition."
+  pretty (InvalidMeasureMutual _) = fsep $
+    pwords "In a mutual block, either all functions must have the same (or no) termination checking pragma."
+  pretty (InvalidCatchallPragma _) = fsep $
+    pwords "The CATCHALL pragma can only preceed a function clause."
+  pretty (UnquoteDefRequiresSignature xs) = fsep $
+    pwords "Missing type signatures for unquoteDef" ++ map pretty xs
+  pretty (BadMacroDef nd) = fsep $
+    [text $ declName nd] ++ pwords "are not allowed in macro blocks"
+  pretty (NotAllowedInMutual nd) = fsep $
+    [text $ declName nd] ++ pwords "are not allowed in mutual blocks"
+  pretty (Codata _) = text $
+    "The codata construction has been removed. " ++
+    "Use the INFINITY builtin instead."
+  pretty (DeclarationPanic s) = text s
+  pretty (InvalidNoPositivityCheckPragma _) = fsep $
+    pwords "No positivity checking pragmas can only precede a mutual block or a data/record definition."
+
+declName :: NiceDeclaration -> String
+declName Axiom{}             = "Postulates"
+declName NiceField{}         = "Fields"
+declName NiceMutual{}        = "Mutual blocks"
+declName NiceModule{}        = "Modules"
+declName NiceModuleMacro{}   = "Modules"
+declName NiceOpen{}          = "Open declarations"
+declName NiceImport{}        = "Import statements"
+declName NicePragma{}        = "Pragmas"
+declName PrimitiveFunction{} = "Primitive declarations"
+declName NicePatternSyn{}    = "Pattern synonyms"
+declName NiceUnquoteDecl{}   = "Unquoted declarations"
+declName NiceUnquoteDef{}    = "Unquoted definitions"
+declName NiceRecSig{}        = "Records"
+declName NiceDataSig{}       = "Data types"
+declName NiceFunClause{}     = "Functions without a type signature"
+declName FunSig{}            = "Type signatures"
+declName FunDef{}            = "Function definitions"
+declName RecDef{}            = "Records"
+declName DataDef{}           = "Data types"
+
+{--------------------------------------------------------------------------
+    The niceifier
+ --------------------------------------------------------------------------}
+
+data InMutual
+  = InMutual    -- ^ we are nicifying a mutual block
+  | NotInMutual -- ^ we are nicifying decls not in a mutual block
+    deriving (Eq, Show)
+
+-- | The kind of the forward declaration, remembering the parameters.
+
+data DataRecOrFun
+  = DataName PositivityCheck Params  -- ^ name of a data with parameters
+  | RecName  PositivityCheck Params  -- ^ name of a record with parameters
+  | FunName  TerminationCheck        -- ^ name of a function
+
+-- Ignore pragmas when checking equality
+instance Eq DataRecOrFun where
+  DataName _ p == DataName _ q = p == q
+  RecName  _ p == RecName  _ q = p == q
+  FunName  _   == FunName  _   = True
+  _            == _            = False
+
+type Params = [Hiding]
+
+instance Show DataRecOrFun where
+  show (DataName _ n) = "data type" --  "with " ++ show n ++ " visible parameters"
+  show (RecName _ n)  = "record type" -- "with " ++ show n ++ " visible parameters"
+  show (FunName{})    = "function"
+
+isFunName :: DataRecOrFun -> Bool
+isFunName (FunName{}) = True
+isFunName _           = False
+
+sameKind :: DataRecOrFun -> DataRecOrFun -> Bool
+sameKind DataName{} DataName{} = True
+sameKind RecName{} RecName{} = True
+sameKind FunName{} FunName{} = True
+sameKind _ _ = False
+
+terminationCheck :: DataRecOrFun -> TerminationCheck
+terminationCheck (FunName tc) = tc
+terminationCheck _            = TerminationCheck
+
+positivityCheck :: DataRecOrFun -> PositivityCheck
+positivityCheck (DataName pc _) = pc
+positivityCheck (RecName pc _)  = pc
+positivityCheck _               = True
+
+-- | Check that declarations in a mutual block are consistently
+--   equipped with MEASURE pragmas, or whether there is a
+--   NO_TERMINATION_CHECK pragma.
+combineTermChecks :: Range -> [TerminationCheck] -> Nice TerminationCheck
+combineTermChecks r tcs = loop tcs where
+  loop []         = return TerminationCheck
+  loop (tc : tcs) = do
+    let failure r = throwError $ InvalidMeasureMutual r
+    tc' <- loop tcs
+    case (tc, tc') of
+      (TerminationCheck      , tc'                   ) -> return tc'
+      (tc                    , TerminationCheck      ) -> return tc
+      (NonTerminating        , NonTerminating        ) -> return NonTerminating
+      (NoTerminationCheck    , NoTerminationCheck    ) -> return NoTerminationCheck
+      (NoTerminationCheck    , Terminating           ) -> return Terminating
+      (Terminating           , NoTerminationCheck    ) -> return Terminating
+      (Terminating           , Terminating           ) -> return Terminating
+      (TerminationMeasure{}  , TerminationMeasure{}  ) -> return tc
+      (TerminationMeasure r _, NoTerminationCheck    ) -> failure r
+      (TerminationMeasure r _, Terminating           ) -> failure r
+      (NoTerminationCheck    , TerminationMeasure r _) -> failure r
+      (Terminating           , TerminationMeasure r _) -> failure r
+      (TerminationMeasure r _, NonTerminating        ) -> failure r
+      (NonTerminating        , TerminationMeasure r _) -> failure r
+      (NoTerminationCheck    , NonTerminating        ) -> failure r
+      (Terminating           , NonTerminating        ) -> failure r
+      (NonTerminating        , NoTerminationCheck    ) -> failure r
+      (NonTerminating        , Terminating           ) -> failure r
+
+
+-- | Nicifier monad.
+
+type Nice = StateT NiceEnv (Either DeclarationException)
+
+-- | Nicifier state.
+
+data NiceEnv = NiceEnv
+  { _loneSigs :: LoneSigs
+    -- ^ Lone type signatures that wait for their definition.
+  , _termChk  :: TerminationCheck
+    -- ^ Termination checking pragma waiting for a definition.
+  , _posChk   :: PositivityCheck
+    -- ^ Positivity checking pragma waiting for a definition.
+  , _catchall :: Catchall
+    -- ^ Catchall pragma waiting for a function clause.
+  , fixs     :: Fixities
+  , pols     :: Polarities
+  }
+
+type LoneSigs   = Map Name DataRecOrFun
+type Fixities   = Map Name Fixity'
+type Polarities = Map Name [Occurrence]
+
+-- | Initial nicifier state.
+
+initNiceEnv :: NiceEnv
+initNiceEnv = NiceEnv
+  { _loneSigs = empty
+  , _termChk  = TerminationCheck
+  , _posChk   = True
+  , _catchall = False
+  , fixs      = empty
+  , pols      = empty
+  }
+
+-- * Handling the lone signatures, stored to infer mutual blocks.
+
+-- | Lens for field '_loneSigs'.
+
+loneSigs :: Lens' LoneSigs NiceEnv
+loneSigs f e = f (_loneSigs e) <&> \ s -> e { _loneSigs = s }
+
+-- | Adding a lone signature to the state.
+
+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 %= Map.delete x
+
+-- | Search for forward type signature.
+
+getSig :: Name -> Nice (Maybe DataRecOrFun)
+getSig x = Map.lookup x <$> use loneSigs
+
+-- | Check that no lone signatures are left in the state.
+
+noLoneSigs :: Nice Bool
+noLoneSigs = null <$> use loneSigs
+
+-- | Ensure that all forward declarations have been given a definition.
+
+checkLoneSigs :: [(Name, a)] -> Nice ()
+checkLoneSigs xs =
+  case xs of
+    []       -> return ()
+    (x, _):_ -> throwError $ MissingDefinition x
+
+-- | Lens for field '_termChk'.
+
+terminationCheckPragma :: Lens' TerminationCheck NiceEnv
+terminationCheckPragma f e = f (_termChk e) <&> \ s -> e { _termChk = s }
+
+withTerminationCheckPragma :: TerminationCheck -> Nice a -> Nice a
+withTerminationCheckPragma tc f = do
+  tc_old <- use terminationCheckPragma
+  terminationCheckPragma .= tc
+  result <- f
+  terminationCheckPragma .= tc_old
+  return result
+
+-- | Lens for field '_posChk'.
+
+positivityCheckPragma :: Lens' PositivityCheck NiceEnv
+positivityCheckPragma f e = f (_posChk e) <&> \ s -> e { _posChk = s }
+
+withPositivityCheckPragma :: PositivityCheck -> Nice a -> Nice a
+withPositivityCheckPragma pc f = do
+  pc_old <- use positivityCheckPragma
+  positivityCheckPragma .= pc
+  result <- f
+  positivityCheckPragma .= pc_old
+  return result
+
+-- | Lens for field '_catchall'.
+
+catchallPragma :: Lens' Catchall NiceEnv
+catchallPragma f e = f (_catchall e) <&> \ s -> e { _catchall = s }
+
+-- | Get current catchall pragma, and reset it for the next clause.
+
+popCatchallPragma :: Nice Catchall
+popCatchallPragma = do
+  ca <- use catchallPragma
+  catchallPragma .= False
+  return ca
+
+withCatchallPragma :: Catchall -> Nice a -> Nice a
+withCatchallPragma ca f = do
+  ca_old <- use catchallPragma
+  catchallPragma .= ca
+  result <- f
+  catchallPragma .= ca_old
+  return result
+
+-- | Check whether name is not "_" and return its fixity.
+getFixity :: Name -> Nice Fixity'
+getFixity x = Map.findWithDefault noFixity' x <$> gets fixs -- WAS: defaultFixity'
+
+-- | Fail if the name is @_@. Otherwise the name's polarity, if any,
+-- is removed from the state and returned.
+getPolarity :: Name -> Nice (Maybe [Occurrence])
+getPolarity x = do
+  p <- gets (Map.lookup x . pols)
+  modify (\s -> s { pols = Map.delete x (pols s) })
+  return p
+
+runNice :: Nice a -> Either DeclarationException a
+runNice nice = nice `evalStateT` initNiceEnv
+
+data DeclKind
+    = LoneSig DataRecOrFun Name
+    | LoneDefs DataRecOrFun [Name]
+    | OtherDecl
+  deriving (Eq, Show)
+
+declKind :: NiceDeclaration -> DeclKind
+declKind (FunSig _ _ _ _ _ _ _ tc x _)    = LoneSig (FunName tc) x
+declKind (NiceRecSig _ _ _ _ pc x pars _) = LoneSig (RecName pc $ parameters pars) x
+declKind (NiceDataSig _ _ _ _ pc x pars _)= LoneSig (DataName pc $ parameters pars) x
+declKind (FunDef _ _ _ _ tc x _)          = LoneDefs (FunName tc) [x]
+declKind (DataDef _ _ _ pc x pars _)      = LoneDefs (DataName pc $ parameters pars) [x]
+declKind (RecDef _ _ _ pc x _ _ _ pars _) = LoneDefs (RecName pc $ parameters pars) [x]
+declKind (NiceUnquoteDef _ _ _ _ tc xs _) = LoneDefs (FunName tc) xs
+declKind Axiom{}                          = OtherDecl
+declKind NiceField{}                      = OtherDecl
+declKind PrimitiveFunction{}              = OtherDecl
+declKind NiceMutual{}                     = OtherDecl
+declKind NiceModule{}                     = OtherDecl
+declKind NiceModuleMacro{}                = OtherDecl
+declKind NiceOpen{}                       = OtherDecl
+declKind NiceImport{}                     = OtherDecl
+declKind NicePragma{}                     = OtherDecl
+declKind NiceFunClause{}                  = OtherDecl
+declKind NicePatternSyn{}                 = OtherDecl
+declKind NiceUnquoteDecl{}                = OtherDecl
+
+-- | Compute visible parameters of a data or record signature or definition.
+parameters :: [LamBinding] -> Params
+parameters = List.concat . List.map numP where
+  numP (DomainFree i _) = [argInfoHiding i]
+  numP (DomainFull (TypedBindings _ (Arg i (TBind _ xs _)))) = List.replicate (length xs) $ argInfoHiding i
+  numP (DomainFull (TypedBindings _ (Arg _ TLet{})))         = []
+
+-- | Main.
+niceDeclarations :: [Declaration] -> Nice [NiceDeclaration]
+niceDeclarations ds = do
+  -- Get fixity and syntax declarations.
+  (fixs, polarities) <- fixitiesAndPolarities ds
+  let declared    = Set.fromList (concatMap declaredNames ds)
+      unknownFixs = Map.keysSet fixs       Set.\\ declared
+      unknownPols = Map.keysSet polarities Set.\\ declared
+  case (Set.null unknownFixs, Set.null unknownPols) of
+    -- If we have fixity/syntax decls for names not declared
+    -- in the current scope, fail.
+    (False, _)   -> throwError $ UnknownNamesInFixityDecl
+                                   (Set.toList unknownFixs)
+    -- Fail if there are polarity pragmas with undeclared names.
+    (_, False)   -> throwError $ UnknownNamesInPolarityPragmas
+                                   (Set.toList unknownPols)
+    (True, True) -> localState $ do
+      -- Run the nicifier in an initial environment of fixity decls
+      -- and polarities.
+      put $ initNiceEnv { fixs = fixs, pols = polarities }
+      ds <- nice ds
+      -- Check that every polarity pragma was used.
+      unusedPolarities <- gets (Map.keys . pols)
+      unless (null unusedPolarities) $ do
+        throwError $ PolarityPragmasButNotPostulates unusedPolarities
+      -- Check that every signature got its definition.
+      checkLoneSigs . Map.toList =<< use loneSigs
+      -- Note that loneSigs is ensured to be empty.
+      -- (Important, since inferMutualBlocks also uses loneSigs state).
+      inferMutualBlocks ds
+  where
+    -- Compute the names defined in a declaration.
+    -- We stay in the current scope, i.e., do not go into modules.
+    declaredNames :: Declaration -> [Name]
+    declaredNames d = case d of
+      TypeSig _ x _        -> [x]
+      Field _ x _          -> [x]
+      FunClause (LHS p [] [] []) _ _ _
+        | IdentP (QName x) <- removeSingletonRawAppP p
+                           -> [x]
+      FunClause{}          -> []
+      DataSig _ _ x _ _    -> [x]
+      Data _ _ x _ _ cs    -> x : concatMap declaredNames cs
+      RecordSig _ x _ _    -> [x]
+      Record _ x _ _ c _ _ _ -> x : foldMap (:[]) (fst <$> c)
+      Infix _ _            -> []
+      Syntax _ _           -> []
+      PatternSyn _ x _ _   -> [x]
+      Mutual    _ ds       -> concatMap declaredNames ds
+      Abstract  _ ds       -> concatMap declaredNames ds
+      Private _ _ ds       -> concatMap declaredNames ds
+      InstanceB _ ds       -> concatMap declaredNames ds
+      Macro     _ ds       -> concatMap declaredNames ds
+      Postulate _ ds       -> concatMap declaredNames ds
+      Primitive _ ds       -> concatMap declaredNames ds
+      Open{}               -> []
+      Import{}             -> []
+      ModuleMacro{}        -> []
+      Module{}             -> []
+      UnquoteDecl _ xs _   -> xs
+      UnquoteDef{}         -> []
+      Pragma{}             -> []
+
+    inferMutualBlocks :: [NiceDeclaration] -> Nice [NiceDeclaration]
+    inferMutualBlocks [] = return []
+    inferMutualBlocks (d : ds) =
+      case declKind d of
+        OtherDecl    -> (d :) <$> inferMutualBlocks ds
+        LoneDefs _ xs -> __IMPOSSIBLE__
+        LoneSig k x  -> do
+          addLoneSig x k
+          ((tcs, pcs), (ds0, ds1)) <- untilAllDefined ([terminationCheck k], [positivityCheck k]) ds
+          tc <- combineTermChecks (getRange d) tcs
+
+          -- Record modules are, for performance reasons, not always
+          -- placed in mutual blocks.
+
+          -- ASR (01 January 2016): If the record module has a
+          -- NO_POSITIVITY_CHECK pragma, it is placed in a mutual
+          -- block. See Issue 1760.
+          let prefix :: [NiceDeclaration] -> [NiceDeclaration]
+              prefix = case (d, ds0) of
+                (NiceRecSig{}, [r@(RecDef _ _ _ True _ _ _ _ _ _)]) -> ([d, r] ++)
+                _                                                   ->
+                  (NiceMutual (getRange (d : ds0)) tc (and pcs) (d : ds0) :)
+
+          prefix <$> inferMutualBlocks ds1
+      where
+        untilAllDefined :: ([TerminationCheck], [PositivityCheck])
+                        -> [NiceDeclaration]
+                        -> Nice (([TerminationCheck], [PositivityCheck]), ([NiceDeclaration], [NiceDeclaration]))
+        untilAllDefined (tc, pc) ds = do
+          done <- noLoneSigs
+          if done then return ((tc, pc), ([], ds)) else
+            case ds of
+              []     -> __IMPOSSIBLE__ <$ (checkLoneSigs . Map.toList =<< use loneSigs)
+              d : ds -> case declKind d of
+                LoneSig k x ->
+                  addLoneSig x k >> cons d (untilAllDefined (terminationCheck k : tc, positivityCheck k : pc) ds)
+                LoneDefs k xs -> do
+                  mapM_ removeLoneSig xs
+                  cons d (untilAllDefined (terminationCheck k : tc, positivityCheck k : pc) ds)
+                OtherDecl   -> cons d (untilAllDefined (tc, pc) ds)
+          where
+            -- ASR (26 December 2015): Type annotated version of the @cons@ function.
+            -- cons d = fmap $
+            --            (id :: (([TerminationCheck], [PositivityCheck]) -> ([TerminationCheck], [PositivityCheck])))
+            --            *** (d :)
+            --            *** (id :: [NiceDeclaration] -> [NiceDeclaration])
+            cons d = fmap (id *** (d :) *** id)
+
+    notMeasure TerminationMeasure{} = False
+    notMeasure _ = True
+
+    nice :: [Declaration] -> Nice [NiceDeclaration]
+    nice [] = return []
+    nice ds = do
+      (xs , ys) <- nice1 ds
+      (xs ++) <$> nice ys
+
+    nice1 :: [Declaration] -> Nice ([NiceDeclaration], [Declaration])
+    nice1 []     = __IMPOSSIBLE__
+    nice1 (d:ds) = case d of
+
+        (TypeSig info x t)            -> do
+          termCheck <- use terminationCheckPragma
+          fx <- getFixity x
+          -- register x as lone type signature, to recognize clauses later
+          addLoneSig x (FunName termCheck)
+          return ([FunSig (getRange d) fx PublicAccess ConcreteDef NotInstanceDef NotMacroDef info termCheck x t] , ds)
+
+        (FunClause lhs _ _ _)         -> do
+          termCheck <- use terminationCheckPragma
+          catchall  <- popCatchallPragma
+          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
+          case [ (x, (fits, rest))
+               | x <- xs
+               , let (fits, rest) =
+                      -- Anonymous declarations only have 1 clause each!
+                      if isNoName x then ([d], ds)
+                      else span (couldBeFunClauseOf (Map.lookup x fixs) x) (d : ds)
+               , not (null fits)
+               ] of
+
+            -- case: clauses match none of the sigs
+            [] -> case lhs of
+              -- Subcase: The lhs is single identifier (potentially anonymous).
+              -- Treat it as a function clause without a type signature.
+              LHS p [] [] [] | Just x <- isSingleIdentifierP p -> do
+                d  <- mkFunDef defaultArgInfo termCheck x Nothing [d] -- fun def without type signature is relevant
+                return (d , ds)
+              -- Subcase: The lhs is a proper pattern.
+              -- This could be a let-pattern binding. Pass it on.
+              -- A missing type signature error might be raise in ConcreteToAbstract
+              _ -> do
+                return ([NiceFunClause (getRange d) PublicAccess ConcreteDef termCheck catchall d] , ds)
+
+            -- case: clauses match exactly one of the sigs
+            [(x,(fits,rest))] -> do
+               removeLoneSig x
+               cs  <- mkClauses x (expandEllipsis fits) False
+               fx  <- getFixity x
+               return ([FunDef (getRange fits) fits fx ConcreteDef termCheck x cs] , rest)
+
+            -- case: clauses match more than one sigs (ambiguity)
+            l -> throwError $ AmbiguousFunClauses lhs $ reverse $ map fst l -- "ambiguous function clause; cannot assign it uniquely to one type signature"
+
+        Field{}                       -> (,ds) <$> niceAxioms FieldBlock [ d ]
+        DataSig r CoInductive _ _ _   -> throwError (Codata r)
+        Data r CoInductive _ _ _ _    -> throwError (Codata r)
+
+        (DataSig r Inductive x tel t) -> do
+          pc <- use positivityCheckPragma
+          addLoneSig x (DataName pc $ parameters tel)
+          (,) <$> dataOrRec pc DataDef NiceDataSig (niceAxioms DataBlock) r x tel (Just t) Nothing
+              <*> return ds
+
+        (Data r Inductive x tel t cs) -> do
+          pc <- use positivityCheckPragma
+          t <- defaultTypeSig (DataName pc $ parameters tel) x t
+          (,) <$> dataOrRec pc DataDef NiceDataSig (niceAxioms DataBlock) r x tel t (Just cs)
+              <*> return ds
+
+        (RecordSig r x tel t)         -> do
+          pc <- use positivityCheckPragma
+          addLoneSig x (RecName pc $ parameters tel)
+          fx <- getFixity x
+          return ([NiceRecSig r fx PublicAccess ConcreteDef pc x tel t] , ds)
+
+        (Record r x i e c tel t cs)   -> do
+          pc <- use positivityCheckPragma
+          t <- defaultTypeSig (RecName pc $ parameters tel) x t
+          c <- traverse (\(cname, cinst) -> do fix <- getFixity cname; return (ThingWithFixity cname fix, cinst)) c
+          (,) <$> dataOrRec pc (\ r f a pc x tel cs -> RecDef r f a pc x i e c tel cs) NiceRecSig
+                    niceDeclarations r x tel t (Just cs)
+              <*> return ds
+
+        Mutual r ds' ->
+          (,ds) <$> (singleton <$> (mkOldMutual r =<< nice ds'))
+
+        Abstract r ds' ->
+          (,ds) <$> (abstractBlock r =<< nice ds')
+
+        Private r o ds' ->
+          (,ds) <$> (privateBlock r o =<< nice ds')
+
+        InstanceB r ds' ->
+          (,ds) <$> (instanceBlock r =<< nice ds')
+
+        Macro r ds' ->
+          (,ds) <$> (macroBlock r =<< nice ds')
+
+        Postulate _ ds' ->
+          (,ds) <$> (mapM setPolarity =<< niceAxioms PostulateBlock ds')
+          where
+          setPolarity (Axiom r f acc a i arg Nothing x e) = do
+            mp <- getPolarity x
+            return (Axiom r f acc a i arg mp x e)
+          setPolarity (Axiom _ _ _ _ _ _ (Just _) _ _) = __IMPOSSIBLE__
+          setPolarity d = return d
+
+        Primitive _ ds' -> (,ds) <$> (map toPrim <$> niceAxioms PrimitiveBlock ds')
+
+        Module r x tel ds' -> return $
+          ([NiceModule r PublicAccess ConcreteDef x tel ds'] , ds)
+
+        ModuleMacro r x modapp op is -> return $
+          ([NiceModuleMacro r PublicAccess x modapp op is] , ds)
+
+        -- Fixity and syntax declarations and polarity pragmas have
+        -- already been processed.
+        Infix _ _  -> return ([], ds)
+        Syntax _ _ -> return ([], ds)
+
+        PatternSyn r n as p -> do
+          fx <- getFixity n
+          return ([NicePatternSyn r fx n as p] , ds)
+        Open r x is         -> return ([NiceOpen r x is] , ds)
+        Import r x as op is -> return ([NiceImport r x as op is] , ds)
+
+        UnquoteDecl r xs e -> do
+          fxs <- mapM getFixity xs
+          tc  <- use terminationCheckPragma
+          return ([NiceUnquoteDecl r fxs PublicAccess ConcreteDef NotInstanceDef tc xs e] , ds)
+
+        UnquoteDef r xs e -> do
+          fxs  <- mapM getFixity xs
+          sigs <- map fst . filter (isFunName . snd) . Map.toList <$> use loneSigs
+          let missing = filter (`notElem` sigs) xs
+          if null missing
+            then do
+              mapM_ removeLoneSig xs
+              return ([NiceUnquoteDef r fxs PublicAccess ConcreteDef TerminationCheck xs e] , ds)
+            else throwError $ UnquoteDefRequiresSignature missing
+
+        Pragma p -> nicePragma p ds
+
+    nicePragma :: Pragma -> [Declaration] -> Nice ([NiceDeclaration], [Declaration])
+
+    nicePragma (TerminationCheckPragma r (TerminationMeasure _ x)) ds =
+      if canHaveTerminationMeasure ds then
+        withTerminationCheckPragma (TerminationMeasure r x) $ nice1 ds
+      else
+        throwError $ InvalidTerminationCheckPragma r
+
+    nicePragma (TerminationCheckPragma r NoTerminationCheck) ds =
+      throwError $ PragmaNoTerminationCheck r
+
+    nicePragma (TerminationCheckPragma r tc) ds =
+      if canHaveTerminationCheckPragma ds then
+        withTerminationCheckPragma tc $ nice1 ds
+      else
+        throwError $ InvalidTerminationCheckPragma r
+
+    nicePragma (CatchallPragma r) ds =
+      if canHaveCatchallPragma ds then
+        withCatchallPragma True $ nice1 ds
+      else
+        throwError $ InvalidCatchallPragma r
+
+    nicePragma (NoPositivityCheckPragma r) ds =
+      if canHaveNoPositivityCheckPragma ds then
+        withPositivityCheckPragma False $ nice1 ds
+      else
+        throwError $ InvalidNoPositivityCheckPragma r
+
+    nicePragma (PolarityPragma{}) ds = return ([], ds)
+
+    nicePragma p ds = return ([NicePragma (getRange p) p], ds)
+
+    canHaveTerminationMeasure :: [Declaration] -> Bool
+    canHaveTerminationMeasure [] = False
+    canHaveTerminationMeasure (d:ds) = case d of
+      TypeSig{} -> True
+      (Pragma p) | isAttachedPragma p -> canHaveTerminationMeasure ds
+      _         -> False
+
+    canHaveTerminationCheckPragma :: [Declaration] -> Bool
+    canHaveTerminationCheckPragma []     = False
+    canHaveTerminationCheckPragma (d:ds) = case d of
+      Mutual{}      -> True
+      TypeSig{}     -> True
+      FunClause{}   -> True
+      UnquoteDecl{} -> True
+      (Pragma p) | isAttachedPragma p -> canHaveTerminationCheckPragma ds
+      _             -> False
+
+    canHaveCatchallPragma :: [Declaration] -> Bool
+    canHaveCatchallPragma []     = False
+    canHaveCatchallPragma (d:ds) = case d of
+      FunClause{} -> True
+      (Pragma p) | isAttachedPragma p -> canHaveCatchallPragma ds
+      _           -> False
+
+    canHaveNoPositivityCheckPragma :: [Declaration] -> Bool
+    canHaveNoPositivityCheckPragma []     = False
+    canHaveNoPositivityCheckPragma (d:ds) = case d of
+      Mutual{}                    -> True
+      (Data _ Inductive _ _ _ _)  -> True
+      (DataSig _ Inductive _ _ _) -> True
+      Record{}                    -> True
+      RecordSig{}                 -> True
+      (Pragma p) | isAttachedPragma p -> canHaveNoPositivityCheckPragma ds
+      _                           -> False
+
+    isAttachedPragma :: Pragma -> Bool
+    isAttachedPragma p = case p of
+      TerminationCheckPragma{}  -> True
+      CatchallPragma{}          -> True
+      NoPositivityCheckPragma{} -> True
+      _                         -> False
+
+    -- We could add a default type signature here, but at the moment we can't
+    -- infer the type of a record or datatype, so better to just fail here.
+    defaultTypeSig :: DataRecOrFun -> Name -> Maybe Expr -> Nice (Maybe Expr)
+    defaultTypeSig k x t@Just{} = return t
+    defaultTypeSig k x Nothing  = do
+      mk <- getSig x
+      case mk of
+        Nothing -> throwError $ MissingDataSignature x
+        Just k' | k == k'       -> Nothing <$ removeLoneSig x
+                | sameKind k k' -> throwError $ WrongParameters x
+                | otherwise     -> throwError $ WrongDefinition x k' k
+
+    dataOrRec :: forall a .
+                 PositivityCheck ->
+                 (Range -> Fixity' -> IsAbstract -> PositivityCheck -> Name -> [LamBinding] ->
+                   [NiceConstructor] -> NiceDeclaration) ->
+                 (Range -> Fixity' -> Access -> IsAbstract -> PositivityCheck -> Name -> [LamBinding] -> Expr ->
+                   NiceDeclaration) ->
+                 ([a] -> Nice [NiceDeclaration]) ->
+                 Range ->
+                 Name ->
+                 [LamBinding] ->
+                 Maybe Expr ->
+                 Maybe [a] ->
+                 Nice [NiceDeclaration]
+    dataOrRec pc mkDef mkSig niceD r x tel mt mcs = do
+      mds <- traverse niceD mcs
+      f   <- getFixity x
+      return $ catMaybes $
+        [ mt <&> \ t -> mkSig (fuseRange x t) f PublicAccess ConcreteDef pc x tel t
+        , mkDef r f ConcreteDef pc x (concatMap dropType tel) <$> mds
+        ]
+      where
+        dropType :: LamBinding -> [LamBinding]
+        dropType (DomainFull (TypedBindings _r (Arg ai (TBind _ xs _)))) =
+          map (mergeHiding . fmap (DomainFree ai)) xs
+        dropType (DomainFull (TypedBindings _r (Arg _ TLet{}))) = []
+        dropType b@DomainFree{} = [b]
+
+    -- Translate axioms
+    niceAxioms :: KindOfBlock -> [TypeSignatureOrInstanceBlock] -> Nice [NiceDeclaration]
+    niceAxioms b ds = liftM List.concat $ mapM (niceAxiom b) ds
+
+    niceAxiom :: KindOfBlock -> TypeSignatureOrInstanceBlock -> Nice [NiceDeclaration]
+    niceAxiom b d = case d of
+      TypeSig rel x t -> do
+        fx <- getFixity x
+        return [ Axiom (getRange d) fx PublicAccess ConcreteDef NotInstanceDef rel Nothing x t ]
+      Field i x argt -> do
+        fx <- getFixity x
+        return [ NiceField (getRange d) fx PublicAccess ConcreteDef i x argt ]
+      InstanceB r decls -> do
+        instanceBlock r =<< niceAxioms InstanceBlock decls
+      Pragma p@(RewritePragma r _) -> do
+        return [ NicePragma r p ]
+      _ -> throwError $ WrongContentBlock b $ getRange d
+
+    toPrim :: NiceDeclaration -> NiceDeclaration
+    toPrim (Axiom r f p a i rel Nothing x t) = PrimitiveFunction r f p a x t
+    toPrim _                               = __IMPOSSIBLE__
+
+    -- Create a function definition.
+    mkFunDef info termCheck x mt ds0 = do
+      cs <- mkClauses x (expandEllipsis ds0) False
+      f  <- getFixity x
+      return [ FunSig (fuseRange x t) f PublicAccess ConcreteDef NotInstanceDef NotMacroDef info termCheck x t
+             , FunDef (getRange ds0) ds0 f ConcreteDef termCheck x cs ]
+        where
+          t = case mt of
+                Just t  -> t
+                Nothing -> underscore (getRange x)
+
+    underscore r = Underscore r Nothing
+
+
+    expandEllipsis :: [Declaration] -> [Declaration]
+    expandEllipsis [] = []
+    expandEllipsis (d@(FunClause Ellipsis{} _ _ _) : ds) =
+      d : expandEllipsis ds
+    expandEllipsis (d@(FunClause lhs@(LHS p ps _ _) _ _ _) : ds) =
+      d : expand (setInserted p) (map setInserted ps) ds
+      where
+        expand _ _ [] = []
+        expand p ps (d@(Pragma (CatchallPragma r)) : ds) = d : expand p ps ds
+        expand p ps (FunClause (Ellipsis r ps' eqs []) rhs wh ca : ds) =
+          FunClause (LHS (setRange r p) ((setRange r ps) ++ ps') eqs []) rhs wh ca : expand p ps ds
+        expand p ps (FunClause (Ellipsis r ps' eqs es) rhs wh ca : ds) =
+          FunClause (LHS (setRange r p) ((setRange r ps) ++ ps') eqs es) rhs wh ca : expand p (ps ++ ps') ds
+        expand p ps (d@(FunClause (LHS _ _ _ []) _ _ _) : ds) =
+          d : expand p ps ds
+        expand _ _ (d@(FunClause (LHS p ps _ (_ : _)) _ _ _) : ds) =
+          d : expand p ps ds
+        expand _ _ (_ : ds) = __IMPOSSIBLE__
+    expandEllipsis (_ : ds) = __IMPOSSIBLE__
+
+    setInserted :: Pattern -> Pattern
+    setInserted p = case p of
+      IdentP{} -> p
+      QuoteP{} -> p
+      AppP p q -> AppP (setInserted p) (fmap (fmap setInserted) q)
+      RawAppP r ps -> RawAppP r (map setInserted ps)
+      OpAppP r c ns ps -> OpAppP r c ns (map (fmap $ fmap setInserted) ps)
+      HiddenP r p -> HiddenP r (fmap setInserted p)
+      InstanceP r p -> InstanceP r (fmap setInserted p)
+      ParenP r p -> ParenP r (setInserted p)
+      WildP{} -> p
+      AbsurdP{} -> p
+      AsP r n p -> AsP r n (setInserted p)
+      DotP r _ e -> DotP r Inserted e
+      LitP{} -> p
+      RecP r fs -> RecP r (map (fmap setInserted) fs)
+
+    -- Turn function clauses into nice function clauses.
+    mkClauses :: Name -> [Declaration] -> Catchall -> Nice [Clause]
+    mkClauses _ [] _ = return []
+    mkClauses x (Pragma (CatchallPragma r) : cs) True  = throwError $ InvalidCatchallPragma r
+    mkClauses x (Pragma (CatchallPragma r) : cs) False = do
+      when (null cs) $ throwError $ InvalidCatchallPragma r
+      mkClauses x cs True
+    mkClauses x (FunClause lhs@(LHS _ _ _ []) rhs wh ca : cs) catchall =
+      (Clause x (ca || catchall) lhs rhs wh [] :) <$> mkClauses x cs False
+    mkClauses x (FunClause lhs@(LHS _ ps _ es) rhs wh ca : cs) catchall = do
+      when (null with) $ throwError $ MissingWithClauses x
+      wcs <- mkClauses x with False
+      (Clause x (ca || catchall) lhs rhs wh wcs :) <$> mkClauses x cs' False
+      where
+        (with, cs') = subClauses cs
+
+        -- A clause is a subclause if the number of with-patterns is
+        -- greater or equal to the current number of with-patterns plus the
+        -- number of with arguments.
+        subClauses :: [Declaration] -> ([Declaration],[Declaration])
+        subClauses (c@(FunClause (LHS _ ps' _ _) _ _ _) : cs)
+         | length ps' >= length ps + length es = mapFst (c:) (subClauses cs)
+         | otherwise                           = ([], c:cs)
+        subClauses (c@(FunClause (Ellipsis _ ps' _ _) _ _ _) : cs)
+         = mapFst (c:) (subClauses cs)
+        subClauses (c@(Pragma (CatchallPragma r)) : cs) = case subClauses cs of
+          ([], cs') -> ([], c:cs')
+          (cs, cs') -> (c:cs, cs')
+        subClauses [] = ([],[])
+        subClauses _  = __IMPOSSIBLE__
+    mkClauses x (FunClause lhs@Ellipsis{} rhs wh ca : cs) catchall =
+      (Clause x (ca || catchall) lhs rhs wh [] :) <$> mkClauses x cs False   -- Will result in an error later.
+    mkClauses _ _ _ = __IMPOSSIBLE__
+
+    -- for finding clauses for a type sig in mutual blocks
+    couldBeFunClauseOf :: Maybe Fixity' -> Name -> Declaration -> Bool
+    couldBeFunClauseOf mFixity x (Pragma (CatchallPragma{})) = True
+    couldBeFunClauseOf mFixity x (FunClause Ellipsis{} _ _ _) = True
+    couldBeFunClauseOf mFixity x (FunClause (LHS p _ _ _) _ _ _) =
+      let
+      pns        = patternNames p
+      xStrings   = nameStringParts x
+      patStrings = concatMap nameStringParts pns
+      in
+--          trace ("x = " ++ show x) $
+--          trace ("pns = " ++ show pns) $
+--          trace ("xStrings = " ++ show xStrings) $
+--          trace ("patStrings = " ++ show patStrings) $
+--          trace ("mFixity = " ++ show mFixity) $
+      case (headMaybe pns, mFixity) of
+        -- first identifier in the patterns is the fun.symbol?
+        (Just y, _) | x == y -> True -- trace ("couldBe since y = " ++ show y) $ True
+        -- are the parts of x contained in p
+        _ | xStrings `isSublistOf` patStrings -> True -- trace ("couldBe since isSublistOf") $ True
+        -- looking for a mixfix fun.symb
+        (_, Just fix) ->  -- also matches in case of a postfix
+           let notStrings = stringParts (theNotation fix)
+           in  -- trace ("notStrings = " ++ show notStrings) $
+               -- trace ("patStrings = " ++ show patStrings) $
+               (not $ null notStrings) && (notStrings `isSublistOf` patStrings)
+        -- not a notation, not first id: give up
+        _ -> False -- trace ("couldBe not (case default)") $ False
+    couldBeFunClauseOf _ _ _ = False -- trace ("couldBe not (fun default)") $ False
+
+    -- ASR (27 May 2014). Commented out unused code.
+    -- @isFunClauseOf@ is for non-mutual blocks where clauses must follow the
+    -- type sig immediately
+    -- isFunClauseOf :: Name -> Declaration -> Bool
+    -- isFunClauseOf x (FunClause Ellipsis{} _ _) = True
+    -- isFunClauseOf x (FunClause (LHS p _ _ _) _ _) =
+    --  -- p is the whole left hand side, excluding "with" patterns and clauses
+    --   case removeSingletonRawAppP p of
+    --     IdentP (QName q)    -> x == q  -- lhs is just an identifier
+    --     _                   -> True
+    --         -- more complicated lhss must come with type signatures, so we just assume
+    --         -- it's part of the current definition
+    -- isFunClauseOf _ _ = False
+
+    isSingleIdentifierP :: Pattern -> Maybe Name
+    isSingleIdentifierP p = case removeSingletonRawAppP p of
+      IdentP (QName x) -> Just x
+      WildP r          -> Just $ noName r
+      _                -> Nothing
+
+    removeSingletonRawAppP :: Pattern -> Pattern
+    removeSingletonRawAppP p = case p of
+        RawAppP _ [p'] -> removeSingletonRawAppP p'
+        ParenP _ p'    -> removeSingletonRawAppP p'
+        _ -> p
+
+    -- Make an old style mutual block from a list of mutual declarations
+    mkOldMutual :: Range -> [NiceDeclaration] -> Nice NiceDeclaration
+    mkOldMutual r ds = do
+        -- Check that there aren't any missing definitions
+        checkLoneSigs loneNames
+        -- Check that there are no declarations that aren't allowed in old style mutual blocks
+        case filter notAllowedInMutual ds of
+          []  -> return ()
+          (NiceFunClause _ _ _ _ s_ (FunClause lhs _ _ _)):_ -> throwError $ MissingTypeSignature lhs
+          d:_ -> throwError $ NotAllowedInMutual d
+        tc0 <- use terminationCheckPragma
+        let tcs = map termCheck ds
+        tc <- combineTermChecks r (tc0:tcs)
+
+        pc0 <- use positivityCheckPragma
+        let pc :: PositivityCheck
+            pc = pc0 && all positivityCheckOldMutual ds
+
+        return $ NiceMutual r tc pc $ sigs ++ other
+      where
+        -- Andreas, 2013-11-23 allow postulates in mutual blocks
+        notAllowedInMutual Axiom{} = False
+        notAllowedInMutual d       = declKind d == OtherDecl
+        -- Pull type signatures to the top
+        (sigs, other) = partition isTypeSig ds
+        isTypeSig Axiom{}                     = True
+        isTypeSig d | LoneSig{} <- declKind d = True
+        isTypeSig _                           = False
+
+        sigNames  = [ (x, k) | LoneSig k x <- map declKind ds ]
+        defNames  = [ (x, k) | LoneDefs k xs <- map declKind ds, x <- xs ]
+        -- compute the set difference with equality just on names
+        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
+        -- inner declarations comes with a {-# NO_TERMINATION_CHECK #-}
+        termCheck (FunSig _ _ _ _ _ _ _ tc _ _)      = tc
+        termCheck (FunDef _ _ _ _ tc _ _)            = tc
+        -- ASR (28 December 2015): Is this equation necessary?
+        termCheck (NiceMutual _ tc _ _)              = __IMPOSSIBLE__
+        termCheck (NiceUnquoteDecl _ _ _ _ _ tc _ _) = tc
+        termCheck (NiceUnquoteDef _ _ _ _ tc _ _)    = tc
+        termCheck Axiom{}                            = TerminationCheck
+        termCheck NiceField{}                        = TerminationCheck
+        termCheck PrimitiveFunction{}                = TerminationCheck
+        termCheck NiceModule{}                       = TerminationCheck
+        termCheck NiceModuleMacro{}                  = TerminationCheck
+        termCheck NiceOpen{}                         = TerminationCheck
+        termCheck NiceImport{}                       = TerminationCheck
+        termCheck NicePragma{}                       = TerminationCheck
+        termCheck NiceRecSig{}                       = TerminationCheck
+        termCheck NiceDataSig{}                      = TerminationCheck
+        termCheck NiceFunClause{}                    = TerminationCheck
+        termCheck DataDef{}                          = TerminationCheck
+        termCheck RecDef{}                           = TerminationCheck
+        termCheck NicePatternSyn{}                   = TerminationCheck
+
+        -- ASR (26 December 2015): Do not positivity check a mutual
+        -- block if any of its inner declarations comes with a
+        -- NO_POSITIVITY_CHECK pragma. See Issue 1614.
+        positivityCheckOldMutual :: NiceDeclaration -> PositivityCheck
+        positivityCheckOldMutual (DataDef _ _ _ pc _ _ _)      = pc
+        positivityCheckOldMutual (NiceDataSig _ _ _ _ pc _ _ _)= pc
+        positivityCheckOldMutual (NiceMutual _ _ pc _)         = __IMPOSSIBLE__
+        positivityCheckOldMutual (NiceRecSig _ _ _ _ pc _ _ _) = pc
+        positivityCheckOldMutual (RecDef _ _ _ pc _ _ _ _ _ _) = pc
+        positivityCheckOldMutual _                             = True
+
+        -- A mutual block cannot have a measure,
+        -- but it can skip termination check.
+
+    abstractBlock _ [] = return []
+    abstractBlock r ds = do
+      let (ds', anyChange) = runChange $ mkAbstract ds
+          inherited        = r == noRange
+          -- hack to avoid failing on inherited abstract blocks in where clauses
+      if anyChange || inherited then return ds' else throwError $ UselessAbstract r
+
+    privateBlock _ _ [] = return []
+    privateBlock r o ds = do
+      let (ds', anyChange) = runChange $ mkPrivate o ds
+      if anyChange then return ds' else
+        if o == UserWritten then throwError $ UselessPrivate r else return ds -- no change!
+
+    instanceBlock _ [] = return []
+    instanceBlock r ds = do
+      let (ds', anyChange) = runChange $ mapM mkInstance ds
+      if anyChange then return ds' else throwError $ UselessInstance r
+
+    -- Make a declaration eligible for instance search.
+    mkInstance :: Updater NiceDeclaration
+    mkInstance d =
+      case d of
+        Axiom r f p a i rel mp x e       -> (\ i -> Axiom r f p a i rel mp x e) <$> setInstance i
+        FunSig r f p a i m rel tc x e    -> (\ i -> FunSig r f p a i m rel tc x e) <$> setInstance i
+        NiceUnquoteDecl r f p a i tc x e -> (\ i -> NiceUnquoteDecl r f p a i tc x e) <$> setInstance i
+        NiceMutual{}                     -> return d
+        NiceFunClause{}                  -> return d
+        FunDef{}                         -> return d
+        NiceField{}                      -> return d  -- Field instance are handled by the parser
+        PrimitiveFunction{}              -> return d
+        NiceUnquoteDef{}                 -> return d
+        NiceRecSig{}                     -> return d
+        NiceDataSig{}                    -> return d
+        NiceModuleMacro{}                -> return d
+        NiceModule{}                     -> return d
+        NicePragma{}                     -> return d
+        NiceOpen{}                       -> return d
+        NiceImport{}                     -> return d
+        DataDef{}                        -> return d
+        RecDef{}                         -> return d
+        NicePatternSyn{}                 -> return d
+
+    setInstance :: Updater IsInstance
+    setInstance i = case i of
+      InstanceDef -> return i
+      _           -> dirty $ InstanceDef
+
+    macroBlock r ds = mapM mkMacro ds
+
+    mkMacro :: NiceDeclaration -> Nice NiceDeclaration
+    mkMacro d =
+      case d of
+        FunSig r f p a i _ rel tc x e -> return $ FunSig r f p a i MacroDef rel tc x e
+        FunDef{}                    -> return d
+        _                           -> throwError (BadMacroDef d)
+
+-- | Make a declaration abstract.
+--
+-- Mark computation as 'dirty' if there was a declaration that could be made abstract.
+-- If no abstraction is taking place, we want to complain about 'UselessAbstract'.
+--
+-- Alternatively, we could only flag 'dirty' if a non-abstract thing was abstracted.
+-- Then, nested @abstract@s would sometimes also be complained about.
+
+class MakeAbstract a where
+  mkAbstract :: Updater a
+  default mkAbstract :: (Traversable f, MakeAbstract a', a ~ f a') => Updater a
+  mkAbstract = traverse mkAbstract
+
+instance MakeAbstract a => MakeAbstract [a] where
+  -- Default definition kicks in here!
+  -- But note that we still have to declare the instance!
+
+-- Leads to overlap with 'WhereClause':
+-- instance (Traversable f, MakeAbstract a) => MakeAbstract (f a) where
+--   mkAbstract = traverse mkAbstract
+
+instance MakeAbstract IsAbstract where
+  mkAbstract a = case a of
+    AbstractDef -> return a
+    ConcreteDef -> dirty $ AbstractDef
+
+instance MakeAbstract NiceDeclaration where
+  mkAbstract d =
+    case d of
+      NiceMutual r termCheck pc ds     -> NiceMutual r termCheck pc <$> mkAbstract ds
+      FunDef r ds f a tc x cs          -> (\ a -> FunDef r ds f a tc x) <$> mkAbstract a <*> mkAbstract cs
+      DataDef r f a pc x ps cs         -> (\ a -> DataDef r f a pc x ps) <$> mkAbstract a <*> mkAbstract cs
+      RecDef r f a pc x i e c ps cs    -> (\ a -> RecDef r f a pc x i e c ps) <$> mkAbstract a <*> mkAbstract cs
+      NiceFunClause r p a termCheck catchall d  -> (\ a -> NiceFunClause r p a termCheck catchall d) <$> mkAbstract a
+      -- The following declarations have an @InAbstract@ field
+      -- but are not really definitions, so we do count them into
+      -- the declarations which can be made abstract
+      -- (thus, do not notify progress with @dirty@).
+      Axiom r f p a i rel mp x e       -> return $ Axiom             r f p AbstractDef i rel mp x e
+      FunSig r f p a i m rel tc x e    -> return $ FunSig            r f p AbstractDef i m rel tc x e
+      NiceRecSig r f p a pc x ls t     -> return $ NiceRecSig        r f p AbstractDef pc x ls t
+      NiceDataSig r f p a pc x ls t    -> return $ NiceDataSig       r f p AbstractDef pc x ls t
+      NiceField r f p _ i x e          -> return $ NiceField         r f p AbstractDef i x e
+      PrimitiveFunction r f p _ x e    -> return $ PrimitiveFunction r f p AbstractDef x e
+      -- Andreas, 2016-07-17 it does have effect on unquoted defs.
+      -- Need to set updater state to dirty!
+      NiceUnquoteDecl r f p _ i t x e  -> dirty $ NiceUnquoteDecl r f p AbstractDef i t x e
+      NiceUnquoteDef r f p _ t x e     -> dirty $ NiceUnquoteDef r f p AbstractDef t x e
+      NiceModule{}                     -> return d
+      NiceModuleMacro{}                -> return d
+      NicePragma{}                     -> return d
+      NiceOpen{}                       -> return d
+      NiceImport{}                     -> return d
+      NicePatternSyn{}                 -> return d
+
+instance MakeAbstract Clause where
+  mkAbstract (Clause x catchall lhs rhs wh with) = do
+    Clause x catchall lhs rhs <$> mkAbstract wh <*> mkAbstract with
+
+-- | Contents of a @where@ clause are abstract if the parent is.
+instance MakeAbstract WhereClause where
+  mkAbstract  NoWhere           = return $ NoWhere
+  mkAbstract (AnyWhere ds)      = dirty $ AnyWhere [Abstract noRange ds]
+  mkAbstract (SomeWhere m a ds) = dirty $ SomeWhere m a [Abstract noRange ds]
+
+-- | Make a declaration private.
+--
+-- Andreas, 2012-11-17:
+-- Mark computation as 'dirty' if there was a declaration that could be privatized.
+-- If no privatization is taking place, we want to complain about 'UselessPrivate'.
+--
+-- Alternatively, we could only flag 'dirty' if a non-private thing was privatized.
+-- Then, nested @private@s would sometimes also be complained about.
+
+class MakePrivate a where
+  mkPrivate :: Origin -> Updater a
+  default mkPrivate :: (Traversable f, MakePrivate a', a ~ f a') => Origin -> Updater a
+  mkPrivate o = traverse $ mkPrivate o
+
+instance MakePrivate a => MakePrivate [a] where
+  -- Default definition kicks in here!
+  -- But note that we still have to declare the instance!
+
+-- Leads to overlap with 'WhereClause':
+-- instance (Traversable f, MakePrivate a) => MakePrivate (f a) where
+--   mkPrivate = traverse mkPrivate
+
+instance MakePrivate Access where
+  mkPrivate o p = case p of
+    PrivateAccess{} -> return p  -- OR? return $ PrivateAccess o
+    _               -> dirty $ PrivateAccess o
+
+instance MakePrivate NiceDeclaration where
+  mkPrivate o d =
+    case d of
+      Axiom r f p a i rel mp x e               -> (\ p -> Axiom r f p a i rel mp x e)               <$> mkPrivate o p
+      NiceField r f p a i x e                  -> (\ p -> NiceField r f p a i x e)                  <$> mkPrivate o p
+      PrimitiveFunction r f p a x e            -> (\ p -> PrimitiveFunction r f p a x e)            <$> mkPrivate o p
+      NiceMutual r termCheck pc ds             -> (\ p -> NiceMutual r termCheck pc p)              <$> mkPrivate o ds
+      NiceModule r p a x tel ds                -> (\ p -> NiceModule r p a x tel ds)                <$> mkPrivate o p
+      NiceModuleMacro r p x ma op is           -> (\ p -> NiceModuleMacro r p x ma op is)           <$> mkPrivate o p
+      FunSig r f p a i m rel tc x e            -> (\ p -> FunSig r f p a i m rel tc x e)            <$> mkPrivate o p
+      NiceRecSig r f p a pc x ls t             -> (\ p -> NiceRecSig r f p a pc x ls t)             <$> mkPrivate o p
+      NiceDataSig r f p a pc x ls t            -> (\ p -> NiceDataSig r f p a pc x ls t)            <$> mkPrivate o p
+      NiceFunClause r p a termCheck catchall d -> (\ p -> NiceFunClause r p a termCheck catchall d) <$> mkPrivate o p
+      NiceUnquoteDecl r f p a i t x e          -> (\ p -> NiceUnquoteDecl r f p a i t x e)          <$> mkPrivate o p
+      NiceUnquoteDef r f p a t x e             -> (\ p -> NiceUnquoteDef r f p a t x e)             <$> mkPrivate o p
+      NicePragma _ _                           -> return $ d
+      NiceOpen _ _ _                           -> return $ d
+      NiceImport _ _ _ _ _                     -> return $ d
+      -- Andreas, 2016-07-08, issue #2089
+      -- we need to propagate 'private' to the named where modules
+      FunDef r ds f a tc x cls                 -> FunDef r ds f a tc x <$> mkPrivate o cls
+      DataDef{}                                -> return $ d
+      RecDef{}                                 -> return $ d
+      NicePatternSyn _ _ _ _ _                 -> return $ d
+
+instance MakePrivate Clause where
+  mkPrivate o (Clause x catchall lhs rhs wh with) = do
+    Clause x catchall lhs rhs <$> mkPrivate o wh <*> mkPrivate o with
+
+instance MakePrivate WhereClause where
+  mkPrivate o  NoWhere         = return $ NoWhere
+  -- @where@-declarations are protected behind an anonymous module,
+  -- thus, they are effectively private by default.
+  mkPrivate o (AnyWhere ds)    = return $ AnyWhere ds
+  -- Andreas, 2016-07-08
+  -- A @where@-module is private if the parent function is private.
+  -- The contents of this module are not private, unless declared so!
+  -- Thus, we do not recurse into the @ds@ (could not anyway).
+  mkPrivate o (SomeWhere m a ds) = mkPrivate o a <&> \ a' -> SomeWhere m a' ds
+
+-- | Add more fixities. Throw an exception for multiple fixity declarations.
+--   OR:  Disjoint union of fixity maps.  Throws exception if not disjoint.
+
+plusFixities :: Fixities -> Fixities -> Nice Fixities
+plusFixities m1 m2
+    -- If maps are not disjoint, report conflicts as exception.
+    | not (null isect) = throwError $ MultipleFixityDecls isect
+    -- Otherwise, do the union.
+    | otherwise        = return $ Map.unionWithKey mergeFixites m1 m2
+  where
+    --  Merge two fixities, assuming there is no conflict
+    mergeFixites name (Fixity' f1 s1 r1) (Fixity' f2 s2 r2) = Fixity' f s $ fuseRange r1 r2
+              where f | f1 == noFixity = f2
+                      | f2 == noFixity = f1
+                      | otherwise = __IMPOSSIBLE__
+                    s | s1 == noNotation = s2
+                      | s2 == noNotation = s1
+                      | otherwise = __IMPOSSIBLE__
+
+    -- Compute a list of conflicts in a format suitable for error reporting.
+    isect = [ (x, map (Map.findWithDefault __IMPOSSIBLE__ x) [m1,m2])
+            | (x, False) <- Map.assocs $ Map.intersectionWith compatible m1 m2 ]
+
+    -- Check for no conflict.
+    compatible (Fixity' f1 s1 _) (Fixity' f2 s2 _) =
+      (f1 == noFixity   || f2 == noFixity  ) &&
+      (s1 == noNotation || s2 == noNotation)
+
+-- | While 'Fixities' and Polarities are not semigroups under disjoint
+--   union (which might fail), we get a semigroup instance for the
+--   monadic @Nice (Fixities, Polarities)@ which propagates the first
+--   error.
+instance Semigroup (Nice (Fixities, Polarities)) where
+  c1 <> c2 = do
+    (f1, p1) <- c1
+    (f2, p2) <- c2
+    f <- plusFixities f1 f2
+    p <- mergePolarities p1 p2
+    return (f, p)
+    where
+    mergePolarities p1 p2
+      | Set.null i = return (Map.union p1 p2)
+      | otherwise  = throwError $ MultiplePolarityPragmas (Set.toList i)
+      where
+      i = Set.intersection (Map.keysSet p1) (Map.keysSet p2)
+
+instance Monoid (Nice (Fixities, Polarities)) where
+  mempty  = return (Map.empty, Map.empty)
+  mappend = (<>)
+
+-- | Get the fixities and polarity pragmas from the current block.
+--   Doesn't go inside modules and where blocks.
+--   The reason for this is that these declarations have to appear at the same
+--   level (or possibly outside an abstract or mutual block) as their target
+--   declaration.
+fixitiesAndPolarities :: [Declaration] -> Nice (Fixities, Polarities)
+fixitiesAndPolarities = foldMap $ \ d -> case d of
+  -- These declarations define polarities:
+  Pragma (PolarityPragma _ x occs) -> return (Map.empty, Map.singleton x occs)
+  -- These declarations define fixities:
+  Syntax x syn    -> return ( Map.singleton x (Fixity' noFixity syn $ getRange x)
+                            , Map.empty
+                            )
+  Infix  f xs     -> return ( Map.fromList $ for xs $ \ x -> (x, Fixity' f noNotation$ getRange x)
+                            , Map.empty
+                            )
+  -- We look into these blocks:
+  Mutual    _ ds' -> fixitiesAndPolarities ds'
+  Abstract  _ ds' -> fixitiesAndPolarities ds'
+  Private _ _ ds' -> fixitiesAndPolarities ds'
+  InstanceB _ ds' -> fixitiesAndPolarities ds'
+  Macro     _ ds' -> fixitiesAndPolarities ds'
+  -- All other declarations are ignored.
+  -- We expand these boring cases to trigger a revisit
+  -- in case the @Declaration@ type is extended in the future.
+  TypeSig     {}  -> mempty
+  Field       {}  -> mempty
+  FunClause   {}  -> mempty
+  DataSig     {}  -> mempty
+  Data        {}  -> mempty
+  RecordSig   {}  -> mempty
+  Record      {}  -> mempty
+  PatternSyn  {}  -> mempty
+  Postulate   {}  -> mempty
+  Primitive   {}  -> mempty
+  Open        {}  -> mempty
+  Import      {}  -> mempty
+  ModuleMacro {}  -> mempty
+  Module      {}  -> mempty
+  UnquoteDecl {}  -> mempty
+  UnquoteDef  {}  -> mempty
+  Pragma      {}  -> mempty
+
+
+-- The following function is (at the time of writing) only used three
+-- times: for building Lets, and for printing error messages.
+
+-- | (Approximately) convert a 'NiceDeclaration' back to a list of
+-- 'Declaration's.
+notSoNiceDeclarations :: NiceDeclaration -> [Declaration]
+notSoNiceDeclarations d =
+  case d of
+    Axiom _ _ _ _ i rel mp x e       -> (case mp of
+                                           Nothing   -> []
+                                           Just occs -> [Pragma (PolarityPragma noRange x occs)]) ++
+                                        inst i [TypeSig rel x e]
+    NiceField _ _ _ _ i x argt       -> [Field i x argt]
+    PrimitiveFunction r _ _ _ x e    -> [Primitive r [TypeSig defaultArgInfo x e]]
+    NiceMutual r _ _ ds              -> [Mutual r $ concatMap notSoNiceDeclarations ds]
+    NiceModule r _ _ x tel ds        -> [Module r x tel ds]
+    NiceModuleMacro r _ x ma o dir   -> [ModuleMacro r x ma o dir]
+    NiceOpen r x dir                 -> [Open r x dir]
+    NiceImport r x as o dir          -> [Import r x as o dir]
+    NicePragma _ p                   -> [Pragma p]
+    NiceRecSig r _ _ _ _ x bs e      -> [RecordSig r x bs e]
+    NiceDataSig r _ _ _ _ x bs e     -> [DataSig r Inductive x bs e]
+    NiceFunClause _ _ _ _ _ d        -> [d]
+    FunSig _ _ _ _ i _ rel tc x e    -> inst i [TypeSig rel x e]
+    FunDef _r ds _ _ _ _ _           -> ds
+    DataDef r _ _ _ x bs cs          -> [Data r Inductive x bs Nothing $ concatMap notSoNiceDeclarations cs]
+    RecDef r _ _ _ x i e c bs ds     -> [Record r x i e (unThing <$> c) bs Nothing $ concatMap notSoNiceDeclarations ds]
+      where unThing (ThingWithFixity c _, inst) = (c, inst)
+    NicePatternSyn r _ n as p        -> [PatternSyn r n as p]
+    NiceUnquoteDecl r _ _ _ i _ x e  -> inst i [UnquoteDecl r x e]
+    NiceUnquoteDef r _ _ _ _ x e     -> [UnquoteDef r x e]
+  where
+    inst InstanceDef    ds = [InstanceB (getRange ds) ds]
+    inst NotInstanceDef ds = ds
+
+-- | Has the 'NiceDeclaration' a field of type 'IsAbstract'?
+niceHasAbstract :: NiceDeclaration -> Maybe IsAbstract
+niceHasAbstract d =
+  case d of
+    Axiom{}                         -> Nothing
+    NiceField _ _ _ a _ _ _         -> Just a
+    PrimitiveFunction _ _ _ a _ _   -> Just a
+    NiceMutual{}                    -> Nothing
+    NiceModule _ _ a _ _ _          -> Just a
+    NiceModuleMacro{}               -> Nothing
+    NiceOpen{}                      -> Nothing
+    NiceImport{}                    -> Nothing
+    NicePragma{}                    -> Nothing
+    NiceRecSig{}                    -> Nothing
+    NiceDataSig{}                   -> Nothing
+    NiceFunClause _ _ a _ _ _       -> Just a
+    FunSig{}                        -> Nothing
+    FunDef _ _ _ a _ _ _            -> Just a
+    DataDef _ _ a _ _ _ _           -> Just a
+    RecDef _ _ a _ _ _ _ _ _ _      -> Just a
+    NicePatternSyn{}                -> Nothing
+    NiceUnquoteDecl _ _ _ a _ _ _ _ -> Just a
     NiceUnquoteDef _ _ _ a _ _ _    -> Just a
diff --git a/src/full/Agda/Syntax/Concrete/Generic.hs b/src/full/Agda/Syntax/Concrete/Generic.hs
--- a/src/full/Agda/Syntax/Concrete/Generic.hs
+++ b/src/full/Agda/Syntax/Concrete/Generic.hs
@@ -1,5 +1,4 @@
 {-# LANGUAGE CPP               #-}
-{-# LANGUAGE FlexibleInstances #-}
 
 -- | Generic traversal and reduce for concrete syntax,
 --   in the style of "Agda.Syntax.Internal.Generic".
@@ -143,6 +142,7 @@
      RecUpdate r e es   -> f $ RecUpdate r (mapE e)   $ mapE es
      Let r ds e         -> f $ Let r       (mapE ds)  $ mapE e
      Paren r e          -> f $ Paren r                $ mapE e
+     IdiomBrackets r e  -> f $ IdiomBrackets r        $ mapE e
      Absurd{}           -> f $ e0
      As r x e           -> f $ As r x                 $ mapE e
      Dot r e            -> f $ Dot r                  $ mapE e
@@ -210,7 +210,7 @@
      PatternSyn{}              -> e0
      Mutual    r ds            -> Mutual    r                          $ mapE ds
      Abstract  r ds            -> Abstract  r                          $ mapE ds
-     Private   r ds            -> Private   r                          $ mapE ds
+     Private   r o ds          -> Private   r o                        $ mapE ds
      InstanceB r ds            -> InstanceB r                          $ mapE ds
      Macro     r ds            -> Macro     r                          $ mapE ds
      Postulate r ds            -> Postulate r                          $ mapE ds
diff --git a/src/full/Agda/Syntax/Concrete/Name.hs b/src/full/Agda/Syntax/Concrete/Name.hs
--- a/src/full/Agda/Syntax/Concrete/Name.hs
+++ b/src/full/Agda/Syntax/Concrete/Name.hs
@@ -1,9 +1,7 @@
 {-# LANGUAGE CPP #-}
 {-# LANGUAGE DeriveDataTypeable #-}
 {-# LANGUAGE DeriveGeneric #-}
-{-# LANGUAGE FlexibleInstances #-}
-{-# LANGUAGE PatternGuards #-}
-{-# LANGUAGE StandaloneDeriving #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
 
 {-| Names in the concrete syntax are just strings (or lists of strings for
     qualified names).
@@ -21,12 +19,12 @@
 
 import System.FilePath
 
-import Test.QuickCheck
-
 import Agda.Syntax.Common
 import Agda.Syntax.Position
+
 import Agda.Utils.FileName
 import Agda.Utils.Pretty
+import Agda.Utils.Size
 
 #include "undefined.h"
 import Agda.Utils.Impossible
@@ -111,7 +109,7 @@
 
 newtype TopLevelModuleName
   = TopLevelModuleName { moduleNameParts :: [String] }
-  deriving (Show, Eq, Ord, Typeable)
+  deriving (Show, Eq, Ord, Typeable, Sized)
 
 ------------------------------------------------------------------------
 -- * Operations on 'Name' and 'NamePart'
@@ -202,6 +200,17 @@
 toTopLevelModuleName :: QName -> TopLevelModuleName
 toTopLevelModuleName = TopLevelModuleName . map prettyShow . qnameParts
 
+-- | Turns a top level module into a qualified name with 'noRange'.
+
+fromTopLevelModuleName :: TopLevelModuleName -> QName
+fromTopLevelModuleName (TopLevelModuleName [])     = __IMPOSSIBLE__
+fromTopLevelModuleName (TopLevelModuleName (x:xs)) = loop x xs
+  where
+  loop x []       = QName (mk x)
+  loop x (y : ys) = Qual  (mk x) $ loop y ys
+  mk :: String -> Name
+  mk x = Name noRange [Id x]
+
 -- | Turns a top-level module name into a file name with the given
 -- suffix.
 
@@ -250,6 +259,7 @@
   isNoName (NoName _ _)    = True
   isNoName (Name _ [Hole]) = True   -- TODO: Track down where these come from
   isNoName (Name _ [])     = True
+  isNoName (Name _ [Id x]) = isNoName x
   isNoName _               = False
 
 instance IsNoName QName where
@@ -292,42 +302,13 @@
   pretty (Id s) = text $ rawNameToString s
 
 instance Pretty QName where
-  pretty (Qual m x) = pretty m <> pretty "." <> pretty x
+  pretty (Qual m x)
+    | isUnderscore m = pretty x -- don't print anonymous modules
+    | otherwise      = pretty m <> pretty "." <> pretty x
   pretty (QName x)  = pretty x
 
 instance Pretty TopLevelModuleName where
   pretty (TopLevelModuleName ms) = text $ intercalate "." ms
-
-------------------------------------------------------------------------
--- * QuickCheck instances
-------------------------------------------------------------------------
-
-instance Arbitrary TopLevelModuleName where
-  arbitrary = TopLevelModuleName <$> listOf1 (listOf1 $ elements "AB")
-
-instance CoArbitrary TopLevelModuleName where
-  coarbitrary (TopLevelModuleName m) = coarbitrary m
-
-instance Arbitrary Name where
-  arbitrary = oneof
-    [ Name   <$> arbitrary <*> parts
-    , NoName <$> arbitrary <*> arbitrary
-    ]
-    where
-    parts = do
-      parts         <- listOf1 (elements ["x", "y", "z"])
-      startWithHole <- arbitrary
-      endWithHole   <- arbitrary
-      return $
-        (if startWithHole then (Hole :)    else id) $
-        (if endWithHole   then (++ [Hole]) else id) $
-        intersperse Hole (map Id parts)
-
-instance CoArbitrary NamePart
-
-instance CoArbitrary Name where
-  coarbitrary (Name _ ns)  = variant 0 . coarbitrary ns
-  coarbitrary (NoName _ i) = variant 1 . coarbitrary i
 
 ------------------------------------------------------------------------
 -- * Range instances
diff --git a/src/full/Agda/Syntax/Concrete/Operators.hs b/src/full/Agda/Syntax/Concrete/Operators.hs
--- a/src/full/Agda/Syntax/Concrete/Operators.hs
+++ b/src/full/Agda/Syntax/Concrete/Operators.hs
@@ -1,5 +1,4 @@
 {-# LANGUAGE CPP                 #-}
-{-# LANGUAGE DataKinds           #-}
 {-# LANGUAGE GADTs               #-}
 {-# LANGUAGE ScopedTypeVariables #-}
 
@@ -40,6 +39,7 @@
 import Agda.Syntax.Common
 import Agda.Syntax.Concrete hiding (appView)
 import Agda.Syntax.Concrete.Operators.Parser
+import Agda.Syntax.Concrete.Operators.Parser.Monad hiding (parse)
 import qualified Agda.Syntax.Abstract.Name as A
 import Agda.Syntax.Position
 import Agda.Syntax.Fixity
@@ -53,7 +53,6 @@
 import Agda.TypeChecking.Monad.Options
 
 import Agda.Utils.Either
-import Agda.Utils.Parser.MemoisedCPS (memoise)
 import Agda.Utils.Pretty
 #if MIN_VERSION_base(4,8,0)
 import Agda.Utils.List hiding ( uncons )
@@ -346,44 +345,49 @@
       , "relatedOperators   = " ++ show relatedOperators
       ]
 
-    return (parseSections, everything, Data.Function.fix $ \p -> Parsers
-        { pTop    = memoise TopK $
-                    Fold.asum $
-                      foldr ($) (pApp p)
-                        (map (\(l, ns) higher ->
-                                 mkP (Right l) parseSections
-                                     (pTop p) ns higher True)
-                             relatedOperators) :
-                      map (\(k, n) ->
-                              mkP (Left k) parseSections
-                                  (pTop p) [n] (pApp p) False)
-                          (zip [0..] unrelatedOperators)
-        , pApp    = memoise AppK $ appP (pNonfix p) (pArgs p)
-        , pArgs   = argsP (pNonfix p)
-        , pNonfix = memoise NonfixK $
-                    Fold.asum $
-                      pAtom p :
-                      flip map nonWithSections (\sect ->
-                        let n = sectNotation sect
+    let g = Data.Function.fix $ \p -> Parsers
+              { pTop    = memoise TopK $
+                          Fold.asum $
+                            foldr ($) (pApp p)
+                              (map (\(l, ns) higher ->
+                                       mkP (Right l) parseSections
+                                           (pTop p) ns higher True)
+                                   relatedOperators) :
+                            map (\(k, n) ->
+                                    mkP (Left k) parseSections
+                                        (pTop p) [n] (pApp p) False)
+                                (zip [0..] unrelatedOperators)
+              , pApp    = memoise AppK $ appP (pNonfix p) (pArgs p)
+              , pArgs   = argsP (pNonfix p)
+              , pNonfix = memoise NonfixK $
+                          Fold.asum $
+                            pAtom p :
+                            flip map nonWithSections (\sect ->
+                              let n = sectNotation sect
 
-                            inner :: forall k. NK k ->
-                                     Parser e (OperatorType k e)
-                            inner = opP parseSections (pTop p) n
-                        in
-                        case notationKind (notation n) of
-                          InfixNotation ->
-                            flip ($) <$> placeholder Beginning
-                                     <*> inner In
-                                     <*> placeholder End
-                          PrefixNotation ->
-                            inner Pre <*> placeholder End
-                          PostfixNotation ->
-                            flip ($) <$> placeholder Beginning
-                                     <*> inner Post
-                          NonfixNotation -> inner Non
-                          NoNotation     -> __IMPOSSIBLE__)
-        , pAtom   = atomP isAtom
-        })
+                                  inner :: forall k. NK k ->
+                                           Parser e (OperatorType k e)
+                                  inner = opP parseSections (pTop p) n
+                              in
+                              case notationKind (notation n) of
+                                InfixNotation ->
+                                  flip ($) <$> placeholder Beginning
+                                           <*> inner In
+                                           <*> placeholder End
+                                PrefixNotation ->
+                                  inner Pre <*> placeholder End
+                                PostfixNotation ->
+                                  flip ($) <$> placeholder Beginning
+                                           <*> inner Post
+                                NonfixNotation -> inner Non
+                                NoNotation     -> __IMPOSSIBLE__)
+              , pAtom   = atomP isAtom
+              }
+
+    reportSDoc "scope.grammar" 10 $ return $
+      text "Operator grammar:" $$ nest 2 (grammar (pTop g))
+
+    return (parseSections, everything, g)
     where
         level :: NewNotation -> PrecedenceLevel
         level = fixityLevel . notaFixity
@@ -451,11 +455,11 @@
             nonAssoc :: Maybe (Parser e e)
             nonAssoc = case filter (isInfix NonAssoc) ops of
               []  -> Nothing
-              ops -> Just $ do
-                x <- noPlaceholder <$> higher
-                f <- choice In ops
-                y <- noPlaceholder <$> higher
-                return (f x y)
+              ops -> Just $
+                (\x f y -> f (noPlaceholder x) (noPlaceholder y))
+                  <$> higher
+                  <*> choice In ops
+                  <*> higher
 
             or p1 []   p2 []   = Nothing
             or p1 []   p2 ops2 = Just (p2 ops2)
@@ -474,7 +478,8 @@
             preRights = do
               preRight <- preRight
               return $ Data.Function.fix $ \preRights ->
-                preRight <*> (noPlaceholder <$> (preRights <|> higher))
+                memoiseIfPrinting (PreRightsK key) $
+                  preRight <*> (noPlaceholder <$> (preRights <|> higher))
 
             postLeft :: Maybe (Parser e (MaybePlaceholder e -> e))
             postLeft =
@@ -524,7 +529,7 @@
     HiddenP _ _      -> fail "bad hidden argument"
     InstanceP _ _    -> fail "bad instance argument"
     AsP r x p        -> AsP r x <$> parsePat prs p
-    DotP r e         -> return $ DotP r e
+    DotP r o e       -> return $ DotP r o e
     ParenP r p       -> fullParen' <$> parsePat prs p
     WildP _          -> return p
     AbsurdP _        -> return p
@@ -578,6 +583,8 @@
 parseLHS' ::
   LHSOrPatSyn -> Maybe QName -> Pattern ->
   ScopeM (ParseLHS, [NotationSection])
+parseLHS' IsLHS (Just qn) (RawAppP _ [WildP{}]) =
+    return (Right (qn, LHSHead qn []), [])
 parseLHS' lhsOrPatSyn top p = do
     let names = patternQNames p
         ms    = qualifierModules names
diff --git a/src/full/Agda/Syntax/Concrete/Operators/Parser.hs b/src/full/Agda/Syntax/Concrete/Operators/Parser.hs
--- a/src/full/Agda/Syntax/Concrete/Operators/Parser.hs
+++ b/src/full/Agda/Syntax/Concrete/Operators/Parser.hs
@@ -1,6 +1,4 @@
 {-# LANGUAGE CPP                 #-}
-{-# LANGUAGE DataKinds           #-}
-{-# LANGUAGE DeriveGeneric       #-}
 {-# LANGUAGE GADTs               #-}
 {-# LANGUAGE ScopedTypeVariables #-}
 {-# LANGUAGE TypeFamilies        #-}
@@ -15,7 +13,7 @@
 import qualified Data.Strict.Maybe as Strict
 import Data.Set (Set)
 
-import GHC.Generics (Generic)
+import Text.PrettyPrint.HughesPJ hiding (empty)
 
 import Agda.Syntax.Position
 import qualified Agda.Syntax.Abstract.Name as A
@@ -23,28 +21,16 @@
 import Agda.Syntax.Fixity
 import Agda.Syntax.Notation
 import Agda.Syntax.Concrete
-
-import qualified Agda.Utils.Parser.MemoisedCPS as MemoisedCPS
-import Agda.Utils.Parser.MemoisedCPS hiding (Parser, parse)
-import qualified Agda.Utils.Parser.MemoisedCPS as Parser
+import Agda.Syntax.Concrete.Operators.Parser.Monad hiding (parse)
+import qualified Agda.Syntax.Concrete.Operators.Parser.Monad as P
 
 #include "undefined.h"
 import Agda.Utils.Impossible
 
-data MemoKey = NodeK      (Either Integer Integer)
-             | PostLeftsK (Either Integer Integer)
-             | TopK
-             | AppK
-             | NonfixK
-  deriving (Eq, Generic)
-
-instance Hashable MemoKey
-
-type Parser tok a =
-  MemoisedCPS.Parser MemoKey tok (MaybePlaceholder tok) a
-
 placeholder :: PositionInName -> Parser e (MaybePlaceholder e)
-placeholder p = sat $ \t ->
+placeholder p =
+  annotate (const $ text ("_" ++ show p)) $
+  sat $ \t ->
   case t of
     Placeholder p' | p' == p -> True
     _                        -> False
@@ -150,9 +136,8 @@
 -- within their respective identifiers.
 
 parse :: IsExpr e => (ParseSections, Parser e a) -> [e] -> [a]
-parse (DoNotParseSections, p) es = Parser.parse p (map noPlaceholder es)
-parse (ParseSections,      p) es = Parser.parse p
-                                     (concat $ map splitExpr es)
+parse (DoNotParseSections, p) es = P.parse p (map noPlaceholder es)
+parse (ParseSections,      p) es = P.parse p (concat $ map splitExpr es)
   where
   splitExpr :: IsExpr e => e -> [MaybePlaceholder e]
   splitExpr e = case exprView e of
@@ -194,7 +179,7 @@
 
 -- | Parse a specific identifier as a NamePart
 partP :: IsExpr e => [Name] -> RawName -> Parser e Range
-partP ms s = do
+partP ms s = annotate (const $ text (show str)) $ do
     tok <- notPlaceholder
     case isLocal tok of
       Just p  -> return p
@@ -277,9 +262,9 @@
 opP :: forall e k. IsExpr e
     => ParseSections
     -> Parser e e -> NewNotation -> NK k -> Parser e (OperatorType k e)
-opP parseSections p (NewNotation q names _ syn isOp) kind = do
-
-  (range, hs) <- worker (init $ qnameParts q) withoutExternalHoles
+opP parseSections p (NewNotation q names _ syn isOp) kind =
+  flip fmap (worker (init $ qnameParts q)
+                    withoutExternalHoles) $ \(range, hs) ->
 
   let (normal, binders) = partitionEithers hs
       lastHole          = maximum $ mapMaybe holeTarget syn
@@ -299,8 +284,9 @@
         where
         args = map (findExprFor (f normal) binders) [0..lastHole]
         q'   = setRange range q
+  in
 
-  return $ case kind of
+  case kind of
     In   -> \x y -> app (\es -> (x, leadingHole) : es ++ [(y, trailingHole)])
     Pre  -> \  y -> app (\es ->                    es ++ [(y, trailingHole)])
     Post -> \x   -> app (\es -> (x, leadingHole) : es)
@@ -325,32 +311,31 @@
     Parser e (Range, [Either (MaybePlaceholder e, NamedArg Int)
                              (LamBinding, Int)])
   worker ms []              = return (noRange, [])
-  worker ms (IdPart x : xs) = do
-    r1       <- partP ms x
-    (r2, es) <- worker [] xs
-                -- Only the first
-                -- part is qualified.
-    return (fuseRanges r1 r2, es)
-  worker ms (NormalHole h : xs) = do
-    e <- maybePlaceholder
-           (if isOp && parseSections == ParseSections
-            then Just Middle else Nothing)
-           p
-    (r, es) <- worker ms xs
-    return (r, Left (e, h) : es)
-  worker ms (WildHole h : xs) = do
-    (r, es) <- worker ms xs
-    return (r, Right (mkBinding h $ Name noRange [Hole]) : es)
+  worker ms (IdPart x : xs) =
+    (\r1 (r2, es) -> (fuseRanges r1 r2, es))
+      <$> partP ms x
+      <*> worker [] xs
+          -- Only the first part is qualified.
+  worker ms (NormalHole h : xs) =
+    (\e (r, es) -> (r, Left (e, h) : es))
+      <$> maybePlaceholder
+            (if isOp && parseSections == ParseSections
+             then Just Middle else Nothing)
+            p
+      <*> worker ms xs
+  worker ms (WildHole h : xs) =
+    (\(r, es) -> (r, Right (mkBinding h $ Name noRange [Hole]) : es))
+      <$> worker ms xs
   worker ms (BindHole h : xs) = do
-    e <- wildOrUnqualifiedName
-    case e of
-      Just name -> ret name
-      Nothing   -> ret (Name noRange [Hole])
-    where
-    ret x = do
-      (r, es) <- worker ms xs
-      return (r, Right (mkBinding h x) : es)
-      -- Andreas, 2011-04-07 put just 'Relevant' here, is this correct?
+    (\e (r, es) ->
+        let x = case e of
+                  Just name -> name
+                  Nothing   -> Name noRange [Hole]
+        in (r, Right (mkBinding h x) : es))
+           -- Andreas, 2011-04-07 put just 'Relevant' here, is this
+           -- correct?
+      <$> wildOrUnqualifiedName
+      <*> worker ms xs
 
   mkBinding h x = (DomainFree defaultArgInfo $ mkBoundName_ x, h)
 
@@ -375,7 +360,8 @@
     isPlaceholder Placeholder{}   = 1
 
 argsP :: IsExpr e => Parser e e -> Parser e [NamedArg e]
-argsP p = many (nothidden <|> hidden <|> instanceH)
+argsP p = many (annotate (const $ text "<argument>") $
+                  nothidden <|> hidden <|> instanceH)
     where
         isHidden (HiddenArgV _) = True
         isHidden _              = False
@@ -399,15 +385,12 @@
             return $ hide $ defaultArg e
 
 appP :: IsExpr e => Parser e e -> Parser e [NamedArg e] -> Parser e e
-appP p pa = do
-    h  <- p
-    es <- pa
-    return $ foldl app h es
+appP p pa = foldl app <$> p <*> pa
     where
         app e = unExprView . AppV e
 
 atomP :: IsExpr e => (QName -> Bool) -> Parser e e
-atomP p = do
+atomP p = annotate (const $ text "<atom>") $ do
     e <- notPlaceholder
     case exprView e of
         LocalV x | not (p x) -> empty
diff --git a/src/full/Agda/Syntax/Concrete/Operators/Parser/Monad.hs b/src/full/Agda/Syntax/Concrete/Operators/Parser/Monad.hs
new file mode 100644
--- /dev/null
+++ b/src/full/Agda/Syntax/Concrete/Operators/Parser/Monad.hs
@@ -0,0 +1,100 @@
+------------------------------------------------------------------------
+-- | The parser monad used by the operator parser
+------------------------------------------------------------------------
+
+{-# LANGUAGE CPP                 #-}
+{-# LANGUAGE DeriveGeneric       #-}
+{-# LANGUAGE Rank2Types          #-}
+{-# LANGUAGE ScopedTypeVariables #-}
+
+module Agda.Syntax.Concrete.Operators.Parser.Monad
+  ( MemoKey(..)
+  , Parser
+  , parse
+  , token
+  , sat
+  , tok
+  , annotate
+  , memoise
+  , memoiseIfPrinting
+  , grammar
+  ) where
+
+import Data.Hashable
+import GHC.Generics (Generic)
+import Text.PrettyPrint.HughesPJ
+
+import Agda.Syntax.Common
+import qualified Agda.Utils.Parser.MemoisedCPS as Parser
+
+-- | Memoisation keys.
+
+data MemoKey = NodeK      (Either Integer Integer)
+             | PostLeftsK (Either Integer Integer)
+             | PreRightsK (Either Integer Integer)
+             | TopK
+             | AppK
+             | NonfixK
+  deriving (Eq, Show, Generic)
+
+instance Hashable MemoKey
+
+-- | The parser monad.
+
+type Parser tok a =
+#ifdef DEBUG
+  Parser.ParserWithGrammar
+#else
+  Parser.Parser
+#endif
+    MemoKey tok (MaybePlaceholder tok) a
+
+-- | Runs the parser.
+
+parse :: forall tok a. Parser tok a -> [MaybePlaceholder tok] -> [a]
+parse = Parser.parse
+
+-- | Parses a single token.
+
+token :: Parser tok (MaybePlaceholder tok)
+token = Parser.token
+
+-- | Parses a token satisfying the given predicate.
+
+sat :: (MaybePlaceholder tok -> Bool) ->
+       Parser tok (MaybePlaceholder tok)
+sat = Parser.sat
+
+-- | Parses a given token.
+
+tok :: (Eq tok, Show tok) =>
+       MaybePlaceholder tok -> Parser tok (MaybePlaceholder tok)
+tok = Parser.tok
+
+-- | Uses the given function to modify the printed representation (if
+-- any) of the given parser.
+
+annotate :: (Doc -> Doc) -> Parser tok a -> Parser tok a
+annotate = Parser.annotate
+
+-- | Memoises the given parser.
+--
+-- Every memoised parser must be annotated with a /unique/ key.
+-- (Parametrised parsers must use distinct keys for distinct inputs.)
+
+memoise :: MemoKey -> Parser tok tok -> Parser tok tok
+memoise = Parser.memoise
+
+-- | Memoises the given parser, but only if printing, not if parsing.
+--
+-- Every memoised parser must be annotated with a /unique/ key.
+-- (Parametrised parsers must use distinct keys for distinct inputs.)
+
+memoiseIfPrinting :: MemoKey -> Parser tok tok -> Parser tok tok
+memoiseIfPrinting = Parser.memoiseIfPrinting
+
+-- | Tries to print the parser, or returns 'empty', depending on the
+-- implementation. This function might not terminate.
+
+grammar :: Parser tok a -> Doc
+grammar = Parser.grammar
diff --git a/src/full/Agda/Syntax/Concrete/Pretty.hs b/src/full/Agda/Syntax/Concrete/Pretty.hs
--- a/src/full/Agda/Syntax/Concrete/Pretty.hs
+++ b/src/full/Agda/Syntax/Concrete/Pretty.hs
@@ -1,8 +1,6 @@
 {-# OPTIONS_GHC -fno-warn-orphans #-}
 
 {-# LANGUAGE CPP #-}
-{-# LANGUAGE FlexibleContexts #-}
-{-# LANGUAGE FlexibleInstances #-}
 
 {-| Pretty printer for the concrete syntax.
 -}
@@ -20,6 +18,9 @@
 import Agda.Syntax.Notation
 import Agda.Syntax.Position
 
+import Agda.TypeChecking.Positivity.Occurrence
+
+import Agda.Utils.Function
 import Agda.Utils.Functor
 import Agda.Utils.Null
 import Agda.Utils.Pretty
@@ -162,6 +163,7 @@
                     , text "in" <+> pretty e
                     ]
             Paren _ e -> parens $ pretty e
+            IdiomBrackets _ e -> text "(|" <+> pretty e <+> text "|)"
             As _ x e  -> pretty x <> text "@" <> pretty e
             Dot _ e   -> text "." <> pretty e
             Absurd _  -> text "()"
@@ -255,8 +257,9 @@
   pretty (AnyWhere [Module _ x [] ds]) | isNoName (unqualify x)
                        = vcat [ text "where", nest 2 (vcat $ map pretty ds) ]
   pretty (AnyWhere ds) = vcat [ text "where", nest 2 (vcat $ map pretty ds) ]
-  pretty (SomeWhere m ds) =
-    vcat [ hsep [ text "module", pretty m, text "where" ]
+  pretty (SomeWhere m a ds) =
+    vcat [ hsep $ applyWhen (a == PrivateAccess UserWritten) (text "private" :)
+             [ text "module", pretty m, text "where" ]
          , nest 2 (vcat $ map pretty ds)
          ]
 
@@ -300,13 +303,16 @@
                     ]
             Field inst x (Arg i e) ->
                 sep [ text "field"
-                    , nest 2 $ mkInst inst $
+                    , nest 2 $ mkInst inst $ mkOverlap i $
                       prettyRelevance i $ prettyHiding i id $
                         pretty $ TypeSig (i {argInfoRelevance = Relevant}) x e
                     ]
                 where
                   mkInst InstanceDef    d = sep [ text "instance", nest 2 d ]
                   mkInst NotInstanceDef d = d
+
+                  mkOverlap i d | argInfoOverlappable i = text "overlap" <+> d
+                                | otherwise             = d
             FunClause lhs rhs wh _ ->
                 sep [ pretty lhs
                     , nest 2 $ pretty rhs
@@ -376,7 +382,7 @@
                                      <+> text "=" <+> pretty p
             Mutual _ ds     -> namedBlock "mutual" ds
             Abstract _ ds   -> namedBlock "abstract" ds
-            Private _ ds    -> namedBlock "private" ds
+            Private _ _ ds  -> namedBlock "private" ds
             InstanceB _ ds  -> namedBlock "instance" ds
             Macro _ ds      -> namedBlock "macro" ds
             Postulate _ ds  -> namedBlock "postulate" ds
@@ -424,8 +430,8 @@
 instance Pretty Pragma where
     pretty (OptionsPragma _ opts) = fsep $ map text $ "OPTIONS" : opts
     pretty (BuiltinPragma _ b x)  = hsep [ text "BUILTIN", text b, pretty x ]
-    pretty (RewritePragma _ x)    =
-      hsep [ text "REWRITE", pretty x ]
+    pretty (RewritePragma _ xs)    =
+      hsep [ text "REWRITE", hsep $ map pretty xs ]
     pretty (CompiledPragma _ x hs) =
       hsep [ text "COMPILED", pretty x, text hs ]
     pretty (CompiledExportPragma _ x hs) =
@@ -446,8 +452,6 @@
       hsep $ [ text "COMPILED_DATA_UHC", pretty x] ++ map text (crd : crcs)
     pretty (HaskellCodePragma _ s) =
       vcat (text "HASKELL" : map text (lines s))
-    pretty (NoSmashingPragma _ i) =
-      hsep $ [text "NO_SMASHING", pretty i]
     pretty (StaticPragma _ i) =
       hsep $ [text "STATIC", pretty i]
     pretty (InlinePragma _ i) =
@@ -468,6 +472,8 @@
     pretty (CatchallPragma _) = text "CATCHALL"
     pretty (DisplayPragma _ lhs rhs) = text "DISPLAY" <+> sep [ pretty lhs <+> text "=", nest 2 $ pretty rhs ]
     pretty (NoPositivityCheckPragma _) = text "NO_POSITIVITY_CHECK"
+    pretty (PolarityPragma _ q occs) =
+      hsep (text "NO_POSITIVITY_CHECK" : pretty q : map pretty occs)
 
 instance Pretty Fixity where
     pretty (Fixity _ Unrelated   _)   = __IMPOSSIBLE__
@@ -478,6 +484,17 @@
             RightAssoc -> "infixr"
             NonAssoc   -> "infix"
 
+instance Pretty Occurrence where
+  pretty Unused    = text "_"
+  pretty Mixed     = text "*"
+  pretty JustNeg   = text "-"
+  pretty JustPos   = text "+"
+  pretty StrictPos = text "++"
+
+  -- No syntax has been assigned to GuardPos.
+
+  pretty GuardPos  = __IMPOSSIBLE__
+
 instance Pretty GenPart where
     pretty (IdPart x)   = text x
     pretty BindHole{}   = underscore
@@ -488,20 +505,20 @@
     pretty = hcat . map pretty
 
 instance Pretty Fixity' where
-    pretty (Fixity' fix nota)
+    pretty (Fixity' fix nota _)
       | nota == noNotation = pretty fix
       | otherwise          = text "syntax" <+> pretty nota
 
-instance Pretty e => Pretty (Arg e) where
  -- Andreas 2010-09-21: do not print relevance in general, only in function types!
  -- Andreas 2010-09-24: and in record fields
-    pretty a = -- pRelevance r $
-               -- TODO guilhem: print colors
-               prettyHiding (argInfo a) id $ pretty $ unArg a
+instance Pretty a => Pretty (Arg a) where
+  prettyPrec p (Arg ai e) = prettyHiding ai id $ prettyPrec p' e
+      where p' | getHiding ai == NotHidden = p
+               | otherwise                 = 0
 
 instance Pretty e => Pretty (Named_ e) where
-    pretty (Named Nothing e) = pretty e
-    pretty (Named (Just s) e) = sep [ text (rawNameToString $ rangedThing s) <+> text "=", pretty e ]
+    prettyPrec p (Named Nothing e) = prettyPrec p e
+    prettyPrec p (Named (Just s) e) = mparens (p > 0) $ sep [ text (rawNameToString $ rangedThing s) <+> text "=", pretty e ]
 
 instance Pretty [Pattern] where
     pretty = fsep . map pretty
@@ -518,7 +535,7 @@
             ParenP _ p      -> parens $ pretty p
             WildP _         -> underscore
             AsP _ x p       -> pretty x <> text "@" <> pretty p
-            DotP _ p        -> text "." <> pretty p
+            DotP _ _ p      -> text "." <> pretty p
             AbsurdP _       -> text "()"
             LitP l          -> pretty l
             QuoteP _        -> text "quote"
diff --git a/src/full/Agda/Syntax/Fixity.hs b/src/full/Agda/Syntax/Fixity.hs
--- a/src/full/Agda/Syntax/Fixity.hs
+++ b/src/full/Agda/Syntax/Fixity.hs
@@ -1,9 +1,5 @@
 {-# LANGUAGE CPP #-}
 {-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveFoldable #-}
-{-# LANGUAGE DeriveFunctor #-}
-{-# LANGUAGE DeriveTraversable #-}
-{-# LANGUAGE PatternGuards #-}
 
 {-| Definitions for fixity, precedence levels, and declared syntax.
 -}
@@ -41,9 +37,15 @@
 data Fixity' = Fixity'
     { theFixity   :: !Fixity
     , theNotation :: Notation
+    , theNameRange :: Range
+      -- ^ Range of the name in the fixity declaration
+      --   (used for correct highlighting, see issue #2140).
     }
-  deriving (Typeable, Show, Eq)
+  deriving (Typeable, Show)
 
+instance Eq Fixity' where
+  Fixity' f n _ == Fixity' f' n' _ = f == f' && n == n'
+
 -- | Decorating something with @Fixity'@.
 data ThingWithFixity x = ThingWithFixity x Fixity'
   deriving (Functor, Foldable, Traversable, Typeable, Show)
@@ -75,7 +77,7 @@
   , notation       = if null syn then syntaxOf (unqualify q) else syn
   , notaIsOperator = null syn
   }
-  where Fixity' f syn = A.nameFixity n
+  where Fixity' f syn _ = A.nameFixity n
 
 -- | Replace 'noFixity' by 'defaultFixity'.
 useDefaultFixity :: NewNotation -> NewNotation
@@ -114,7 +116,7 @@
     mkSyn n (Id x : xs) = IdPart x : mkSyn n xs
 
 noFixity' :: Fixity'
-noFixity' = Fixity' noFixity noNotation
+noFixity' = Fixity' noFixity noNotation noRange
 
 -- | Merges 'NewNotation's that have the same precedence level and
 -- notation, with two exceptions:
@@ -208,7 +210,11 @@
 
 -- | Precedence levels for operators.
 
-data PrecedenceLevel = Unrelated | Related !Integer
+data PrecedenceLevel
+  = Unrelated
+    -- ^ No fixity declared.
+  | Related !Integer
+    -- ^ Fixity level declared as the @Integer@.
   deriving (Eq, Ord, Show, Typeable)
 
 -- | Associativity.
@@ -218,11 +224,12 @@
 
 -- | Fixity of operators.
 
-data Fixity =
-  Fixity { fixityRange :: Range
-         , fixityLevel :: !PrecedenceLevel
-         , fixityAssoc :: !Associativity
-         }
+data Fixity = Fixity
+  { fixityRange :: Range
+    -- ^ Range of the whole fixity declaration.
+  , fixityLevel :: !PrecedenceLevel
+  , fixityAssoc :: !Associativity
+  }
   deriving (Typeable, Show)
 
 instance Eq Fixity where
@@ -318,7 +325,7 @@
   killRange f = f { fixityRange = noRange }
 
 instance KillRange Fixity' where
-  killRange (Fixity' f n) = killRange2 Fixity' f n
+  killRange (Fixity' f n r) = killRange3 Fixity' f n r
 
 instance KillRange x => KillRange (ThingWithFixity x) where
   killRange (ThingWithFixity c f) = ThingWithFixity (killRange c) f
@@ -345,7 +352,7 @@
 ------------------------------------------------------------------------
 
 instance NFData Fixity' where
-  rnf (Fixity' _ a) = rnf a
+  rnf (Fixity' _ a _) = rnf a
 
 -- | Ranges are not forced.
 
diff --git a/src/full/Agda/Syntax/IdiomBrackets.hs b/src/full/Agda/Syntax/IdiomBrackets.hs
new file mode 100644
--- /dev/null
+++ b/src/full/Agda/Syntax/IdiomBrackets.hs
@@ -0,0 +1,48 @@
+module Agda.Syntax.IdiomBrackets (parseIdiomBrackets) where
+
+import Control.Applicative
+import Control.Monad
+
+import Agda.Syntax.Common
+import Agda.Syntax.Position
+import Agda.Syntax.Concrete
+import Agda.Syntax.Concrete.Operators
+
+import Agda.Syntax.Scope.Monad
+import Agda.TypeChecking.Monad
+
+parseIdiomBrackets :: Range -> Expr -> ScopeM Expr
+parseIdiomBrackets r e = do
+  let qPure = QName $ Name noRange [Id "pure"]
+      qAp   = QName $ Name noRange [Hole, Id "<*>", Hole]
+      ePure = App r (Ident qPure) . defaultNamedArg
+      eAp a b = App r (App r (Ident qAp) (defaultNamedArg a)) (defaultNamedArg b)
+  mapM_ ensureInScope [qPure, qAp]
+  case e of
+    RawApp _ es -> do
+      e : es <- appViewM =<< parseApplication es
+      return $ foldl eAp (ePure e) es
+    _ -> return $ ePure e
+
+appViewM :: Expr -> ScopeM [Expr]
+appViewM e =
+  case e of
+    App{}           -> let AppView e' es = appView e in (e' :) <$> mapM onlyVisible es
+    OpApp _ op _ es -> (Ident op :) <$> mapM (ordinary <=< noPlaceholder <=< onlyVisible) es
+    _               -> return [e]
+  where
+    onlyVisible a
+      | defaultNamedArg () == (fmap (() <$) a) = return $ namedArg a
+      | otherwise = genericError $ "Only regular arguments are allowed in idiom brackets (no implicit or instance arguments)"
+    noPlaceholder Placeholder{}       = genericError "Naked sections are not allowed in idiom brackets"
+    noPlaceholder (NoPlaceholder _ x) = return x
+
+    ordinary (Ordinary a) = return a
+    ordinary _ = genericError "Binding syntax is not allowed in idiom brackets"
+
+ensureInScope :: QName -> ScopeM ()
+ensureInScope q = do
+  r <- resolveName q
+  case r of
+    UnknownName -> genericError $ show q ++ " needs to be in scope to use idiom brackets (| ... |)"
+    _ -> return ()
diff --git a/src/full/Agda/Syntax/Info.hs b/src/full/Agda/Syntax/Info.hs
--- a/src/full/Agda/Syntax/Info.hs
+++ b/src/full/Agda/Syntax/Info.hs
@@ -1,7 +1,5 @@
 {-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE FlexibleContexts #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
-{-# LANGUAGE StandaloneDeriving #-}
 {-# LANGUAGE UndecidableInstances #-}
 
 {-| An info object contains additional information about a piece of abstract
@@ -169,6 +167,10 @@
   }
   deriving (Typeable, Show, Eq)
 
+-- | Default value for 'MutualInfo'.
+instance Null MutualInfo where
+  empty = MutualInfo TerminationCheck True noRange
+
 instance HasRange MutualInfo where
   getRange = mutualRange
 
@@ -203,7 +205,7 @@
 
 -- | Constructor pattern info.
 data ConPatInfo = ConPatInfo
-  { patOrigin   :: ConPOrigin
+  { patOrigin   :: ConOrigin
     -- ^ Does this pattern come form the eta-expansion of an implicit pattern?
     ---  Or from a user written constructor or record pattern?
   , patInfo     :: PatInfo
@@ -211,7 +213,7 @@
   deriving (Typeable, Eq)
 
 instance Show ConPatInfo where
-  show (ConPatInfo po i) = applyWhen (po == ConPImplicit) ("implicit " ++) $ show i
+  show (ConPatInfo po i) = applyWhen (po == ConOSystem) ("implicit " ++) $ show i
 
 instance HasRange ConPatInfo where
   getRange = getRange . patInfo
diff --git a/src/full/Agda/Syntax/Internal.hs b/src/full/Agda/Syntax/Internal.hs
--- a/src/full/Agda/Syntax/Internal.hs
+++ b/src/full/Agda/Syntax/Internal.hs
@@ -1,15 +1,8 @@
 {-# LANGUAGE BangPatterns               #-}
 {-# LANGUAGE CPP                        #-}
 {-# LANGUAGE DeriveDataTypeable         #-}
-{-# LANGUAGE DeriveFoldable             #-}
-{-# LANGUAGE DeriveFunctor              #-}
-{-# LANGUAGE DeriveTraversable          #-}
-{-# LANGUAGE FlexibleInstances          #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
-{-# LANGUAGE MultiParamTypeClasses      #-}
-{-# LANGUAGE StandaloneDeriving         #-}
 {-# LANGUAGE TemplateHaskell            #-}
-{-# LANGUAGE TupleSections              #-}
 #if __GLASGOW_HASKELL__ <= 708
 {-# LANGUAGE OverlappingInstances #-}
 #endif
@@ -25,12 +18,13 @@
 
 import Control.Applicative hiding (empty)
 import Control.Monad.Identity hiding (mapM)
+import Control.DeepSeq
 
 import Data.Foldable ( Foldable, foldMap )
 import Data.Function
 import qualified Data.List as List
 import Data.Maybe
-import Data.Monoid
+import Data.Semigroup (Semigroup, Monoid, (<>), mempty, mappend, Sum(..))
 
 -- base-4.7 defines the Num instance for Sum
 #if !(MIN_VERSION_base(4,7,0))
@@ -43,7 +37,7 @@
 import Agda.Syntax.Position
 import Agda.Syntax.Common
 import Agda.Syntax.Literal
-import Agda.Syntax.Abstract (IsProjP(..))
+import Agda.Syntax.Concrete.Pretty (prettyHiding)
 import Agda.Syntax.Abstract.Name
 
 import Agda.Utils.Empty
@@ -62,7 +56,8 @@
 import Agda.Utils.Permutation
 import Agda.Utils.Pointer
 import Agda.Utils.Size
-import Agda.Utils.Pretty as P
+import qualified Agda.Utils.Pretty as P
+import Agda.Utils.Pretty hiding ((<>))
 import Agda.Utils.Tuple
 
 #include "undefined.h"
@@ -123,7 +118,7 @@
           | Lam ArgInfo (Abs Term)        -- ^ Terms are beta normal. Relevance is ignored
           | Lit Literal
           | Def QName Elims               -- ^ @f es@, possibly a delta/iota-redex
-          | Con ConHead Args              -- ^ @c vs@
+          | Con ConHead ConInfo Args      -- ^ @c vs@ or @record { fs = vs }@
           | Pi (Dom Type) (Abs Type)      -- ^ dependent or non-dependent function space
           | Sort Sort
           | Level Level
@@ -136,9 +131,13 @@
             -- ^ Explicit sharing
   deriving (Typeable, Show)
 
+type ConInfo = ConOrigin
+
 -- | Eliminations, subsuming applications and projections.
 --
-data Elim' a = Apply (Arg a) | Proj QName -- ^ name of a record projection
+data Elim' a
+  = Apply (Arg a)         -- ^ Application.
+  | Proj ProjOrigin QName -- ^ Projection.  'QName' is name of a record projection.
   deriving (Typeable, Show, Functor, Foldable, Traversable)
 
 type Elim = Elim' Term
@@ -295,18 +294,21 @@
 -- | '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
+instance Semigroup NotBlocked where
+  ReallyNotBlocked <> b = b
   -- MissingClauses is dominant (absorptive)
-  b@MissingClauses `mappend` _ = b
-  _ `mappend` b@MissingClauses = b
+  b@MissingClauses <> _ = b
+  _ <> b@MissingClauses = b
   -- StuckOn is second strongest
-  b@StuckOn{}      `mappend` _ = b
-  _ `mappend` b@StuckOn{}      = b
-  b `mappend` _                = b
+  b@StuckOn{}      <> _ = b
+  _ <> b@StuckOn{}      = b
+  b <> _                = b
 
+instance Monoid NotBlocked where
+  -- ReallyNotBlocked is neutral
+  mempty = ReallyNotBlocked
+  mappend = (<>)
+
 -- | Something where a meta variable may block reduction.
 data Blocked t
   = Blocked    { theBlockingMeta :: MetaId    , ignoreBlocking :: t }
@@ -329,11 +331,14 @@
 -- | @'Blocked' t@ without the @t@.
 type Blocked_ = Blocked ()
 
+instance Semigroup Blocked_ where
+  b@Blocked{}    <> _              = b
+  _              <> b@Blocked{}    = b
+  NotBlocked x _ <> NotBlocked y _ = NotBlocked (x <> y) ()
+
 instance Monoid Blocked_ where
   mempty = notBlocked ()
-  b@Blocked{}    `mappend` _              = b
-  _              `mappend` b@Blocked{}    = b
-  NotBlocked x _ `mappend` NotBlocked y _ = NotBlocked (x `mappend` y) ()
+  mappend = (<>)
 
 -- See issues 1573 and 1674.
 #if !MIN_VERSION_transformers(0,4,1)
@@ -379,12 +384,12 @@
 -- * Definitions
 ---------------------------------------------------------------------------
 
--- | A clause is a list of patterns and the clause body should @Bind@.
+-- | A clause is a list of patterns and the clause body.
 --
 --  The telescope contains the types of the pattern variables and the
 --  de Bruijn indices say how to get from the order the variables occur in
 --  the patterns to the order they occur in the telescope. The body
---  binds the variables in the order they appear in the patterns.
+--  binds the variables in the order they appear in the telescope.
 --
 --  @clauseTel ~ permute clausePerm (patternVars namedClausePats)@
 --
@@ -395,37 +400,25 @@
 data Clause = Clause
     { clauseRange     :: Range
     , clauseTel       :: Telescope
-      -- ^ @Δ@: The types of the pattern variables.
+      -- ^ @Δ@: The types of the pattern variables in dependency order.
     , namedClausePats :: [NamedArg DeBruijnPattern]
-      -- ^ @let Γ = patternVars namedClausePats@
-    , clauseBody      :: ClauseBody
-      -- ^ @λΓ.v@
+      -- ^ @Δ ⊢ ps@.  The de Bruijn indices refer to @Δ@.
+    , clauseBody      :: Maybe Term
+      -- ^ @Just v@ with @Δ ⊢ v@ for a regular clause, or @Nothing@ for an
+      --   absurd one.
     , clauseType      :: Maybe (Arg Type)
       -- ^ @Δ ⊢ 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.
     , clauseCatchall  :: Bool
+      -- ^ Clause has been labelled as CATCHALL.
     }
   deriving (Typeable, Show)
 
 clausePats :: Clause -> [Arg DeBruijnPattern]
 clausePats = map (fmap namedThing) . namedClausePats
 
-data ClauseBodyF a = Body a
-                   | Bind (Abs (ClauseBodyF a))
-                   | NoBody    -- ^ for absurd clauses.
-  deriving (Typeable, Show, Functor, Foldable, Traversable)
-
-type ClauseBody = ClauseBodyF Term
-
-imapClauseBody :: (Nat -> a -> b) -> ClauseBodyF a -> ClauseBodyF b
-imapClauseBody f b = go 0 b
-  where
-    go i  (Body x)  = Body (f i x)
-    go _   NoBody   = NoBody
-    go !i (Bind b)  = Bind $ go (i + 1) <$> b
-
 instance HasRange Clause where
   getRange = clauseRange
 
@@ -454,22 +447,30 @@
     --   The subpatterns do not contain any projection copatterns.
   | LitP Literal
     -- ^ E.g. @5@, @"hello"@.
-  | ProjP QName
+  | ProjP ProjOrigin QName
     -- ^ Projection copattern.  Can only appear by itself.
   deriving (Typeable, Show, Functor, Foldable, Traversable)
 
 type Pattern = Pattern' PatVarName
     -- ^ The @PatVarName@ is a name suggestion.
 
+varP :: ArgName -> Pattern
+varP = VarP
+
 -- | Type used when numbering pattern variables.
-type DeBruijnPattern = Pattern' (Int, PatVarName)
+data DBPatVar = DBPatVar
+  { dbPatVarName  :: PatVarName
+  , dbPatVarIndex :: Int
+  } deriving (Typeable, Show)
 
-namedVarP :: PatVarName -> Named (Ranged PatVarName) Pattern
-namedVarP x = Named named $ VarP x
+type DeBruijnPattern = Pattern' DBPatVar
+
+namedVarP :: PatVarName -> Named_ Pattern
+namedVarP x = Named named $ varP x
   where named = if isUnderscore x then Nothing else Just $ unranged x
 
-namedDBVarP :: Int -> PatVarName -> Named (Ranged PatVarName) DeBruijnPattern
-namedDBVarP m = (fmap . fmap) (m,) . namedVarP
+namedDBVarP :: Int -> PatVarName -> Named_ DeBruijnPattern
+namedDBVarP m = (fmap . fmap) (\x -> DBPatVar x m) . namedVarP
 
 -- | The @ConPatternInfo@ states whether the constructor belongs to
 --   a record type (@Just@) or data type (@Nothing@).
@@ -479,7 +480,7 @@
 --   The scope used for the type is given by any outer scope
 --   plus the clause's telescope ('clauseTel').
 data ConPatternInfo = ConPatternInfo
-  { conPRecord :: Maybe ConPOrigin
+  { conPRecord :: Maybe ConOrigin
     -- ^ @Nothing@ if data constructor.
     --   @Just@ if record constructor.
   , conPType   :: Maybe (Arg Type)
@@ -495,6 +496,15 @@
 noConPatternInfo :: ConPatternInfo
 noConPatternInfo = ConPatternInfo Nothing Nothing
 
+-- | Build partial 'ConPatternInfo' from 'ConInfo'
+toConPatternInfo :: ConInfo -> ConPatternInfo
+toConPatternInfo ConORec = ConPatternInfo (Just ConORec) Nothing
+toConPatternInfo _ = noConPatternInfo
+
+-- | Build 'ConInfo' from 'ConPatternInfo'.
+fromConPatternInfo :: ConPatternInfo -> ConInfo
+fromConPatternInfo = fromMaybe ConOSystem . conPRecord
+
 -- | Extract pattern variables in left-to-right order.
 --   A 'DotP' is also treated as variable (see docu for 'Clause').
 patternVars :: Arg (Pattern' a) -> [Arg (Either a Term)]
@@ -505,8 +515,8 @@
 patternVars (Arg i ProjP{}      ) = []
 
 -- | Does the pattern perform a match that could fail?
-properlyMatching :: Pattern' a -> Bool
-properlyMatching VarP{} = False
+properlyMatching :: DeBruijnPattern -> Bool
+properlyMatching (VarP x) = isAbsurdPatternName $ dbPatVarName x
 properlyMatching DotP{} = False
 properlyMatching LitP{} = True
 properlyMatching (ConP _ ci ps) = isNothing (conPRecord ci) || -- not a record cons
@@ -514,8 +524,8 @@
 properlyMatching ProjP{} = True
 
 instance IsProjP (Pattern' a) where
-  isProjP (ProjP d) = Just d
-  isProjP _         = Nothing
+  isProjP (ProjP o d) = Just (o, AmbQ [d])
+  isProjP _ = Nothing
 
 -----------------------------------------------------------------------------
 -- * Explicit substitutions
@@ -577,7 +587,12 @@
 
 infixr 4 :#
 
+instance Null (Substitution' a) where
+  empty = IdS
+  null IdS = True
+  null _   = False
 
+
 ---------------------------------------------------------------------------
 -- * Views
 ---------------------------------------------------------------------------
@@ -635,7 +650,7 @@
 shared_ :: Term -> Term
 shared_ v@Shared{}   = v
 shared_ v@(Var _ []) = v
-shared_ v@(Con _ []) = v -- Issue 1691: sharing (zero : Nat) destroys constructorForm
+shared_ v@(Con _ _ []) = v -- Issue 1691: sharing (zero : Nat) destroys constructorForm
 shared_ v            = Shared (newPtr v)
 
 -- | Typically m would be TCM and f would be Blocked.
@@ -817,17 +832,23 @@
 
 -- | Convert top-level postfix projections into prefix projections.
 unSpine :: Term -> Term
-unSpine v =
+unSpine = unSpine' $ const True
+
+-- | Convert 'Proj' projection eliminations
+--   according to their 'ProjOrigin' into
+--   'Def' projection applications.
+unSpine' :: (ProjOrigin -> Bool) -> Term -> Term
+unSpine' p v =
   case hasElims v of
-    Just (h, es) -> unSpine' h [] es
+    Just (h, es) -> loop h [] es
     Nothing      -> v
   where
-    unSpine' :: (Elims -> Term) -> Elims -> Elims -> Term
-    unSpine' h res es =
+    loop :: (Elims -> Term) -> Elims -> Elims -> Term
+    loop h res es =
       case es of
-        []                -> v
-        e@(Apply a) : es' -> unSpine' h (e : res) es'
-        Proj f      : es' -> unSpine' (Def f) [Apply (defaultArg v)] es'
+        []                   -> v
+        Proj o f : es' | p o -> loop (Def f) [Apply (defaultArg v)] es'
+        e        : es'       -> loop h (e : res) es'
       where v = h $ reverse res
 
 -- | A view distinguishing the neutrals @Var@, @Def@, and @MetaV@ which
@@ -842,8 +863,8 @@
     Lit{}      -> Nothing
     -- Andreas, 2016-04-13, Issue 1932: We convert λ x → x .f  into f
     Lam _ (Abs _ v)  -> case ignoreSharing v of
-      Var 0 [Proj f] -> Just (Def f, [])
-      _              -> Nothing
+      Var 0 [Proj _o f] -> Just (Def f, [])
+      _ -> Nothing
     Lam{}      -> Nothing
     Pi{}       -> Nothing
     Sort{}     -> Nothing
@@ -859,30 +880,30 @@
 -}
 
 -- | Drop 'Apply' constructor. (Unsafe!)
-argFromElim :: Elim -> Arg Term
+argFromElim :: Elim' a -> Arg a
 argFromElim (Apply u) = u
 argFromElim Proj{}    = __IMPOSSIBLE__
 
 -- | Drop 'Apply' constructor. (Safe)
-isApplyElim :: Elim -> Maybe (Arg Term)
+isApplyElim :: Elim' a -> Maybe (Arg a)
 isApplyElim (Apply u) = Just u
 isApplyElim Proj{}    = Nothing
 
 -- | Drop 'Apply' constructors. (Safe)
-allApplyElims :: Elims -> Maybe Args
+allApplyElims :: [Elim' a] -> Maybe [Arg a]
 allApplyElims = mapM isApplyElim
 
 -- | Split at first non-'Apply'
-splitApplyElims :: Elims -> (Args, Elims)
+splitApplyElims :: [Elim' a] -> ([Arg a], [Elim' a])
 splitApplyElims (Apply u : es) = mapFst (u :) $ splitApplyElims es
 splitApplyElims es             = ([], es)
 
 class IsProjElim e where
-  isProjElim  :: e -> Maybe QName
+  isProjElim  :: e -> Maybe (ProjOrigin, QName)
 
 instance IsProjElim Elim where
-  isProjElim (Proj d) = Just d
-  isProjElim Apply{}  = Nothing
+  isProjElim (Proj o d) = Just (o, d)
+  isProjElim Apply{}    = Nothing
 
 -- | Discard @Proj f@ entries.
 dropProjElims :: IsProjElim e => [e] -> [e]
@@ -893,23 +914,9 @@
 argsFromElims = map argFromElim . dropProjElims
 
 -- | Drop 'Proj' constructors. (Safe)
-allProjElims :: Elims -> Maybe [QName]
+allProjElims :: Elims -> Maybe [(ProjOrigin, QName)]
 allProjElims = mapM isProjElim
 
-{- NOTE: Elim' already contains Arg.
-
--- | Commute functors 'Arg' and 'Elim\''.
-swapArgElim :: Arg (Elim' a) -> Elim' (Arg a)
-
-swapArgElim (Arg ai (Apply a)) = Apply (Arg ai a)
-swapArgElim (Arg ai (Proj  d)) = Proj  d
-
--- IMPOSSIBLE TO DEFINE
-swapElimArg :: Elim' (Arg a) -> Arg (Elim' a)
-swapElimArg (Apply (Arg ai a)) = Arg ai (Apply a)
-swapElimArg (Proj  d) = defaultArg (Proj  d)
--}
-
 ---------------------------------------------------------------------------
 -- * Null instances.
 ---------------------------------------------------------------------------
@@ -919,11 +926,6 @@
   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
@@ -988,7 +990,7 @@
   tsize v = case v of
     Var _ vs    -> 1 + tsize vs
     Def _ vs    -> 1 + tsize vs
-    Con _ vs    -> 1 + tsize vs
+    Con _ _ vs    -> 1 + tsize vs
     MetaV _ vs  -> 1 + tsize vs
     Level l     -> tsize l
     Lam _ f     -> 1 + tsize f
@@ -1038,7 +1040,7 @@
   killRange v = case v of
     Var i vs    -> killRange1 (Var i) vs
     Def c vs    -> killRange2 Def c vs
-    Con c vs    -> killRange2 Con c vs
+    Con c ci vs -> killRange3 Con c ci vs
     MetaV m vs  -> killRange1 (MetaV m) vs
     Lam i f     -> killRange2 Lam i f
     Lit l       -> killRange1 Lit l
@@ -1083,6 +1085,9 @@
 instance KillRange ConPatternInfo where
   killRange (ConPatternInfo mr mt) = killRange1 (ConPatternInfo mr) mt
 
+instance KillRange DBPatVar where
+  killRange (DBPatVar x i) = killRange2 DBPatVar x i
+
 instance KillRange a => KillRange (Pattern' a) where
   killRange p =
     case p of
@@ -1090,14 +1095,11 @@
       DotP v           -> killRange1 DotP v
       ConP con info ps -> killRange3 ConP con info ps
       LitP l           -> killRange1 LitP l
-      ProjP q          -> killRange1 ProjP q
+      ProjP o q        -> killRange1 (ProjP o) q
 
 instance KillRange Clause where
   killRange (Clause r tel ps body t catchall) = killRange6 Clause r tel ps body t catchall
 
-instance KillRange a => KillRange (ClauseBodyF a) where
-  killRange = fmap killRange
-
 instance KillRange a => KillRange (Tele a) where
   killRange = fmap killRange
 
@@ -1126,49 +1128,66 @@
 -- * Simple pretty printing
 -----------------------------------------------------------------------------
 
-instance Pretty Substitution where
-  prettyPrec p rho = brackets $ pr rho
+instance Pretty a => Pretty (Substitution' a) where
+  prettyPrec p rho = pr p rho
     where
-    pr rho = case rho of
+    pr p 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
+      EmptyS           -> text "emptyS"
+      t :# rho         -> mparens (p > 2) $ sep [ pr 2 rho P.<> text ",", prettyPrec 3 t ]
+      Strengthen _ rho -> mparens (p > 9) $ text "strS" <+> pr 10 rho
+      Wk n rho         -> mparens (p > 9) $ text ("wkS " ++ show n) <+> pr 10 rho
+      Lift n rho       -> mparens (p > 9) $ text ("liftS " ++ show n) <+> pr 10 rho
 
 instance Pretty Term where
   prettyPrec p v =
     case ignoreSharing v of
       Var x els -> text ("@" ++ show x) `pApp` els
-      Lam _ b   ->
+      Lam ai b   ->
         mparens (p > 0) $
-        sep [ text ("λ " ++ show (absName b) ++ " ->")
+        sep [ text "λ" <+> prettyHiding ai id (text . show . absName $ b) <+> text "->"
             , nest 2 $ pretty (unAbs b) ]
       Lit l                -> pretty l
       Def q els            -> text (show q) `pApp` els
-      Con c vs             -> text (show $ conName c) `pApp` map Apply vs
+      Con c ci vs          -> text (show $ conName c) `pApp` map Apply vs
       Pi a (NoAbs _ b)     -> mparens (p > 0) $
         sep [ prettyPrec 1 (unDom a) <+> text "->"
             , nest 2 $ pretty b ]
       Pi a b               -> mparens (p > 0) $
         sep [ pDom (domInfo a) (text (absName b) <+> text ":" <+> pretty (unDom a)) <+> text "->"
             , nest 2 $ pretty (unAbs b) ]
-      Sort s      -> pretty s
-      Level l     -> pretty l
+      Sort s      -> prettyPrec p s
+      Level l     -> prettyPrec p l
       MetaV x els -> pretty x `pApp` els
-      DontCare v  -> pretty v
+      DontCare v  -> prettyPrec p v
       Shared{}    -> __IMPOSSIBLE__
     where
       pApp d els = mparens (not (null els) && p > 9) $
-                   d <+> fsep (map (prettyPrec 10) els)
+                   sep [d, nest 2 $ fsep (map (prettyPrec 10) els)]
 
-      pDom i =
-        case getHiding i of
-          NotHidden -> parens
-          Hidden    -> braces
-          Instance  -> braces . braces
+pDom :: LensHiding a => a -> Doc -> Doc
+pDom i =
+  case getHiding i of
+    NotHidden -> parens
+    Hidden    -> braces
+    Instance  -> braces . braces
 
+instance Pretty Clause where
+  pretty Clause{clauseTel = tel, namedClausePats = ps, clauseBody = b, clauseType = t} =
+    sep [ pretty tel <+> text "|-"
+        , nest 2 $ sep [ fsep (map (prettyPrec 10) ps) <+> text "="
+                       , nest 2 $ pBody b t ] ]
+    where
+      pBody Nothing _ = text "(absurd)"
+      pBody (Just b) Nothing  = pretty b
+      pBody (Just b) (Just t) = sep [ pretty b <+> text ":", nest 2 $ pretty t ]
+
+instance Pretty a => Pretty (Tele (Dom a)) where
+  pretty tel = fsep [ pDom a (text x <+> text ":" <+> pretty (unDom a)) | (x, a) <- telToList tel ]
+    where
+      telToList EmptyTel = []
+      telToList (ExtendTel a tel) = (absName tel, a) : telToList (unAbs tel)
+
 instance Pretty Level where
   prettyPrec p (Max as) =
     case as of
@@ -1211,26 +1230,71 @@
   prettyPrec p (El _ a) = prettyPrec p a
 
 instance Pretty Elim where
-  prettyPrec p (Apply v) = prettyPrec p v
-  prettyPrec _ (Proj x)  = text ("." ++ show x)
+  prettyPrec p (Apply v)    = prettyPrec p v
+  prettyPrec _ (Proj _o x)  = text ("." ++ show x)
 
+instance Pretty DBPatVar where
+  prettyPrec _ x = text $ patVarNameToString (dbPatVarName x) ++ "@" ++ show (dbPatVarIndex x)
+
 instance Pretty a => Pretty (Pattern' a) where
   prettyPrec n (VarP x)      = prettyPrec n x
   prettyPrec _ (DotP t)      = text "." P.<> prettyPrec 10 t
-  prettyPrec n (ConP c i ps) = mparens (n > 0) $
-    text (show $ conName c) <+> fsep (map (pretty . namedArg) ps)
+  prettyPrec n (ConP c i nps)= mparens (n > 0) $
+    text (show $ conName c) <+> fsep (map pretty ps)
+    where ps = map (fmap namedThing) nps
   -- -- Version with printing record type:
   -- prettyPrec _ (ConP c i ps) = (if b then braces else parens) $ prTy $
   --   text (show $ conName c) <+> fsep (map (pretty . namedArg) ps)
   --   where
-  --     b = maybe False (== ConPImplicit) $ conPRecord i
+  --     b = maybe False (== ConOSystem) $ conPRecord i
   --     prTy d = caseMaybe (conPType i) d $ \ t -> d  <+> text ":" <+> pretty t
   prettyPrec _ (LitP l)      = text (show l)
-  prettyPrec _ (ProjP q)     = text (show q)
+  prettyPrec _ (ProjP _o q)  = text ("." ++ show q)
 
-instance Pretty a => Pretty (ClauseBodyF a) where
-  pretty b = case b of
-    Bind (NoAbs _ b) -> pretty b
-    Bind (Abs   x b) -> text (show x ++ ".") <+> pretty b
-    Body t           -> pretty t
-    NoBody           -> text "()"
+-----------------------------------------------------------------------------
+-- * NFData instances
+-----------------------------------------------------------------------------
+
+-- Note: only strict in the shape of the terms.
+
+instance NFData Term where
+  rnf v = case v of
+    Var _ es   -> rnf es
+    Lam _ b    -> rnf (unAbs b)
+    Lit l      -> rnf l
+    Def _ es   -> rnf es
+    Con _ _ vs -> rnf vs
+    Pi a b     -> rnf (unDom a, unAbs b)
+    Sort s     -> rnf s
+    Level l    -> rnf l
+    MetaV _ es -> rnf es
+    DontCare v -> rnf v
+    Shared{}   -> ()
+
+instance NFData Type where
+  rnf (El s v) = rnf (s, v)
+
+instance NFData Sort where
+  rnf s = case s of
+    Type l   -> rnf l
+    Prop     -> ()
+    Inf      -> ()
+    SizeUniv -> ()
+    DLub a b -> rnf (a, unAbs b)
+
+instance NFData Level where
+  rnf (Max as) = rnf as
+
+instance NFData PlusLevel where
+  rnf (ClosedLevel n) = rnf n
+  rnf (Plus n l) = rnf (n, l)
+
+instance NFData LevelAtom where
+  rnf (MetaLevel _ es)   = rnf es
+  rnf (BlockedLevel _ v) = rnf v
+  rnf (NeutralLevel _ v) = rnf v
+  rnf (UnreducedLevel v) = rnf v
+
+instance NFData a => NFData (Elim' a) where
+  rnf (Apply x) = rnf x
+  rnf Proj{}    = ()
diff --git a/src/full/Agda/Syntax/Internal/Defs.hs b/src/full/Agda/Syntax/Internal/Defs.hs
--- a/src/full/Agda/Syntax/Internal/Defs.hs
+++ b/src/full/Agda/Syntax/Internal/Defs.hs
@@ -1,4 +1,3 @@
-{-# LANGUAGE FlexibleInstances #-}
 
 -- | Extract used definitions from terms.
 module Agda.Syntax.Internal.Defs where
@@ -45,16 +44,10 @@
 instance GetDefs Clause where
   getDefs = getDefs . clauseBody
 
-instance GetDefs ClauseBody where
-  getDefs b = case b of
-    Body v -> getDefs v
-    Bind b -> getDefs b
-    NoBody -> return ()
-
 instance GetDefs Term where
   getDefs v = case v of
     Def d vs   -> doDef d >> getDefs vs
-    Con c vs   -> getDefs vs
+    Con _ _ vs -> getDefs vs
     Lit l      -> return ()
     Var i vs   -> getDefs vs
     Lam _ v    -> getDefs v
diff --git a/src/full/Agda/Syntax/Internal/Generic.hs b/src/full/Agda/Syntax/Internal/Generic.hs
--- a/src/full/Agda/Syntax/Internal/Generic.hs
+++ b/src/full/Agda/Syntax/Internal/Generic.hs
@@ -1,5 +1,4 @@
 {-# LANGUAGE CPP               #-}
-{-# LANGUAGE FlexibleInstances #-}
 
 module Agda.Syntax.Internal.Generic where
 
@@ -100,13 +99,18 @@
   traverseTermM f = traverse (traverseTermM f)
   foldTerm f = foldMap (foldTerm f)
 
+instance TermLike a => TermLike (Blocked a) where
+  traverseTerm f = fmap (traverseTerm f)
+  traverseTermM f = traverse (traverseTermM f)
+  foldTerm f = foldMap (foldTerm f)
+
 -- * Real terms
 
 instance TermLike Term where
   traverseTerm f t = case t of
     Var i xs    -> f $ Var i $ traverseTerm f xs
     Def c xs    -> f $ Def c $ traverseTerm f xs
-    Con c xs    -> f $ Con c $ traverseTerm f xs
+    Con c ci xs -> f $ Con c ci $ traverseTerm f xs
     Lam h b     -> f $ Lam h $ traverseTerm f b
     Pi a b      -> f $ uncurry Pi $ traverseTerm f (a, b)
     MetaV m xs  -> f $ MetaV m $ traverseTerm f xs
@@ -119,7 +123,7 @@
   traverseTermM f t = case t of
     Var i xs    -> f =<< Var i <$> traverseTermM f xs
     Def c xs    -> f =<< Def c <$> traverseTermM f xs
-    Con c xs    -> f =<< Con c <$> traverseTermM f xs
+    Con c ci xs -> f =<< Con c ci <$> traverseTermM f xs
     Lam h b     -> f =<< Lam h <$> traverseTermM f b
     Pi a b      -> f =<< uncurry Pi <$> traverseTermM f (a, b)
     MetaV m xs  -> f =<< MetaV m <$> traverseTermM f xs
@@ -132,7 +136,7 @@
   foldTerm f t = f t `mappend` case t of
     Var i xs    -> foldTerm f xs
     Def c xs    -> foldTerm f xs
-    Con c xs    -> foldTerm f xs
+    Con c ci xs -> foldTerm f xs
     Lam h b     -> foldTerm f b
     Pi a b      -> foldTerm f (a, b)
     MetaV m xs  -> foldTerm f xs
diff --git a/src/full/Agda/Syntax/Internal/Names.hs b/src/full/Agda/Syntax/Internal/Names.hs
--- a/src/full/Agda/Syntax/Internal/Names.hs
+++ b/src/full/Agda/Syntax/Internal/Names.hs
@@ -19,6 +19,7 @@
 import Agda.TypeChecking.Monad.Base
 import Agda.TypeChecking.CompiledClause
 
+import Agda.Utils.Functor
 import Agda.Utils.Impossible
 #include "undefined.h"
 
@@ -36,7 +37,6 @@
 instance NamesIn a => NamesIn (Abs a)         where namesIn = namesInFoldable
 instance NamesIn a => NamesIn (WithArity a)   where namesIn = namesInFoldable
 instance NamesIn a => NamesIn (Tele a)        where namesIn = namesInFoldable
-instance NamesIn a => NamesIn (ClauseBodyF a) where namesIn = namesInFoldable
 
 instance NamesIn a => NamesIn (C.FieldAssignment' a) where namesIn = namesInFoldable
 
@@ -55,9 +55,10 @@
     Function    { funClauses = cl, funCompiled = cc }              -> namesIn (cl, cc)
     Datatype    { dataClause = cl, dataCons = cs, dataSort = s }   -> namesIn (cl, cs, s)
     Record      { recClause = cl, recConHead = c, recFields = fs } -> namesIn (cl, c, fs)
-      -- Don't need recTel or recConType since those will be reachable from the constructor
+      -- Don't need recTel since those will be reachable from the constructor
     Constructor { conSrcCon = c, conData = d }                     -> namesIn (c, d)
     Primitive   { primClauses = cl, primCompiled = cc }            -> namesIn (cl, cc)
+    AbstractDefn -> __IMPOSSIBLE__
 
 instance NamesIn Clause where
   namesIn Clause{ clauseTel = tel, namedClausePats = ps, clauseBody = b, clauseType = t } =
@@ -78,7 +79,7 @@
     LitP l        -> namesIn l
     DotP v        -> namesIn v
     ConP c _ args -> namesIn (c, args)
-    ProjP f       -> namesIn f
+    ProjP _ f     -> namesIn f
 
 instance NamesIn a => NamesIn (Type' a) where
   namesIn (El s t) = namesIn (s, t)
@@ -97,7 +98,7 @@
     Lam _ b      -> namesIn b
     Lit l        -> namesIn l
     Def f args   -> namesIn (f, args)
-    Con c args   -> namesIn (c, args)
+    Con c _ args -> namesIn (c, args)
     Pi a b       -> namesIn (a, b)
     Sort s       -> namesIn s
     Level l      -> namesIn l
@@ -131,7 +132,7 @@
 
 instance NamesIn a => NamesIn (Elim' a) where
   namesIn (Apply arg) = namesIn arg
-  namesIn (Proj f)    = namesIn f
+  namesIn (Proj _ f)  = namesIn f
 
 instance NamesIn QName   where namesIn x = Set.singleton x
 instance NamesIn ConHead where namesIn h = namesIn (conName h)
@@ -139,13 +140,15 @@
 instance NamesIn a => NamesIn (Open a) where
   namesIn = namesIn . openThing
 
+instance NamesIn a => NamesIn (Local a) where namesIn = namesIn . dget
+
 instance NamesIn DisplayForm where
   namesIn (Display _ ps v) = namesIn (ps, v)
 
 instance NamesIn DisplayTerm where
   namesIn v = case v of
-    DWithApp v us vs -> namesIn (v, us, vs)
-    DCon c vs        -> namesIn (c, vs)
+    DWithApp v us es -> namesIn (v, us, es)
+    DCon c _ vs      -> namesIn (c, vs)
     DDef f es        -> namesIn (f, es)
     DDot v           -> namesIn v
     DTerm v          -> namesIn v
@@ -160,6 +163,7 @@
   namesIn p = case p of
     A.VarP{}               -> Set.empty
     A.ConP _ c args        -> namesIn (c, args)
+    A.ProjP _ _ d          -> namesIn d
     A.DefP _ f args        -> namesIn (f, args)
     A.WildP{}              -> Set.empty
     A.AsP _ _ p            -> namesIn p
diff --git a/src/full/Agda/Syntax/Internal/Pattern.hs b/src/full/Agda/Syntax/Internal/Pattern.hs
--- a/src/full/Agda/Syntax/Internal/Pattern.hs
+++ b/src/full/Agda/Syntax/Internal/Pattern.hs
@@ -1,9 +1,4 @@
 {-# LANGUAGE CPP                    #-}
-{-# LANGUAGE FlexibleContexts       #-}
-{-# LANGUAGE FlexibleInstances      #-}
-{-# LANGUAGE FunctionalDependencies #-}
-{-# LANGUAGE MultiParamTypeClasses  #-}
-{-# LANGUAGE TupleSections          #-}
 {-# LANGUAGE UndecidableInstances   #-}  -- because of func. deps.
 
 #if __GLASGOW_HASKELL__ <= 708
@@ -24,6 +19,7 @@
 import Agda.Syntax.Internal
 import qualified Agda.Syntax.Internal as I
 
+import Agda.Utils.Empty
 import Agda.Utils.Functor
 import Agda.Utils.List
 import Agda.Utils.Permutation
@@ -62,7 +58,7 @@
 
 -- | Get the number of initial 'Apply' patterns in a clause.
 instance FunArity Clause where
-  funArity = funArity . clausePats
+  funArity = funArity . namedClausePats
 
 -- | Get the number of common initial 'Apply' patterns in a list of clauses.
 #if __GLASGOW_HASKELL__ >= 710
@@ -95,20 +91,20 @@
   labelPatVars = traverse labelPatVars
   unlabelPatVars = fmap unlabelPatVars
 
-instance LabelPatVars (Pattern' x) (Pattern' (i,x)) i where
+instance LabelPatVars Pattern DeBruijnPattern Int where
   labelPatVars p =
     case p of
-      VarP x       -> VarP . (,x) <$> next
+      VarP x       -> do i <- next
+                         return $ VarP (DBPatVar x i)
       DotP t       -> DotP t <$ next
       ConP c mt ps -> ConP c mt <$> labelPatVars ps
       LitP l       -> return $ LitP l
-      ProjP q      -> return $ ProjP q
+      ProjP o q    -> return $ ProjP o q
     where next = do (x:xs) <- get; put xs; return x
-  unlabelPatVars = fmap snd
+  unlabelPatVars = fmap dbPatVarName
 
 -- | Augment pattern variables with their de Bruijn index.
-{-# SPECIALIZE numberPatVars :: Permutation -> [NamedArg (Pattern' x)] -> [NamedArg (Pattern' (Int, x))] #-}
-{-# SPECIALIZE numberPatVars :: Permutation -> [NamedArg Pattern] -> [NamedArg DeBruijnPattern] #-}
+{-# SPECIALIZE numberPatVars :: Int -> Permutation -> [NamedArg Pattern] -> [NamedArg DeBruijnPattern] #-}
 --
 --  Example:
 --  @
@@ -123,38 +119,58 @@
 --    dBpats    = 3 .(suc 2) (cons 2 1 0 )
 --  @
 --
-numberPatVars :: LabelPatVars a b Int => Permutation -> a -> b
-numberPatVars perm ps = evalState (labelPatVars ps) $
-  permPicks $ flipP $ invertP __IMPOSSIBLE__ perm
+numberPatVars :: LabelPatVars a b Int => Int -> Permutation -> a -> b
+numberPatVars err perm ps = evalState (labelPatVars ps) $
+  permPicks $ flipP $ invertP err perm
 
 unnumberPatVars :: LabelPatVars a b i => b -> a
 unnumberPatVars = unlabelPatVars
 
-dbPatPerm :: [NamedArg DeBruijnPattern] -> Permutation
-dbPatPerm ps = Perm (size ixs) picks
+dbPatPerm :: [NamedArg DeBruijnPattern] -> Maybe Permutation
+dbPatPerm = dbPatPerm' True
+
+-- | Computes the permutation from the clause telescope
+--   to the pattern variables.
+--
+--   Use as @fromMaybe __IMPOSSIBLE__ . dbPatPerm@ to crash
+--   in a controlled way if a de Bruijn index is out of scope here.
+--
+--   The first argument controls whether dot patterns counts as variables or
+--   not.
+dbPatPerm' :: Bool -> [NamedArg DeBruijnPattern] -> Maybe Permutation
+dbPatPerm' countDots ps = Perm (size ixs) <$> picks
   where
     ixs   = concatMap (getIndices . namedThing . unArg) ps
     n     = size $ catMaybes ixs
-    picks = for (downFrom n) $ \i ->
-      fromMaybe __IMPOSSIBLE__ $ findIndex (Just i ==) ixs
+    picks = forM (downFrom n) $ \ i -> findIndex (Just i ==) ixs
 
     getIndices :: DeBruijnPattern -> [Maybe Int]
-    getIndices (VarP (i,_))  = [Just i]
+    getIndices (VarP x)      = [Just $ dbPatVarIndex x]
     getIndices (ConP c _ ps) = concatMap (getIndices . namedThing . unArg) ps
-    getIndices (DotP _)      = [Nothing]
+    getIndices (DotP _)      = [Nothing | countDots]
     getIndices (LitP _)      = []
-    getIndices (ProjP _)     = []
+    getIndices ProjP{}       = []
 
-clausePerm :: Clause -> Permutation
+
+-- | Computes the permutation from the clause telescope
+--   to the pattern variables.
+--
+--   Use as @fromMaybe __IMPOSSIBLE__ . clausePerm@ to crash
+--   in a controlled way if a de Bruijn index is out of scope here.
+clausePerm :: Clause -> Maybe Permutation
 clausePerm = dbPatPerm . namedClausePats
 
+-- | Turn a pattern into a term.
+--   Projection patterns are turned into projection eliminations,
+--   other patterns into apply elimination.
 patternToElim :: Arg DeBruijnPattern -> Elim
-patternToElim (Arg ai (VarP (i, _))) = Apply $ Arg ai $ var i
-patternToElim (Arg ai (ConP c _ ps)) = Apply $ Arg ai $ Con c $
+patternToElim (Arg ai (VarP x)) = Apply $ Arg ai $ var $ dbPatVarIndex x
+patternToElim (Arg ai (ConP c cpi ps)) = Apply $ Arg ai $ Con c ci $
       map (argFromElim . patternToElim . fmap namedThing) ps
+  where ci = fromConPatternInfo cpi
 patternToElim (Arg ai (DotP t)     ) = Apply $ Arg ai t
 patternToElim (Arg ai (LitP l)     ) = Apply $ Arg ai $ Lit l
-patternToElim (Arg ai (ProjP dest) ) = Proj  $ dest
+patternToElim (Arg ai (ProjP o dest)) = Proj o dest
 
 patternsToElims :: [NamedArg DeBruijnPattern] -> [Elim]
 patternsToElims ps = map build ps
@@ -165,23 +181,19 @@
 patternToTerm :: DeBruijnPattern -> Term
 patternToTerm p = case patternToElim (defaultArg p) of
   Apply x -> unArg x
-  Proj  f -> __IMPOSSIBLE__
-
--- patternsToElims :: Permutation -> [NamedArg Pattern] -> [Elim]
--- patternsToElims perm ps = evalState (mapM build' ps) xs
---   where
---     xs   = permute (invertP __IMPOSSIBLE__ perm) $ downFrom (size perm)
-
---     tick :: State [Int] Int
---     tick = do x : xs <- get; put xs; return x
+  Proj{}  -> __IMPOSSIBLE__
 
---     build' :: NamedArg Pattern -> State [Int] Elim
---     build' = build . fmap namedThing
+class MapNamedArg f where
+  mapNamedArg :: (NamedArg a -> NamedArg b) -> NamedArg (f a) -> NamedArg (f b)
 
---     build :: Arg Pattern -> State [Int] Elim
---     build (Arg ai (VarP _)     ) = Apply . Arg ai . var <$> tick
---     build (Arg ai (ConP c _ ps)) =
---       Apply . Arg ai . Con c <$> mapM (argFromElim <.> build') ps
---     build (Arg ai (DotP t)     ) = Apply (Arg ai t) <$ tick
---     build (Arg ai (LitP l)     ) = return $ Apply $ Arg ai $ Lit l
---     build (Arg ai (ProjP dest) ) = return $ Proj  $ dest
+instance MapNamedArg Pattern' where
+  mapNamedArg f np =
+    case namedArg np of
+      VarP  x     -> map2 VarP $ f $ map2 (const x) np
+      DotP  t     -> map2 (const $ DotP t) np  -- just Haskell type conversion
+      LitP  l     -> map2 (const $ LitP l) np  -- ditto
+      ProjP o q   -> map2 (const $ ProjP o q) np -- ditto
+      ConP c i ps -> map2 (const $ ConP c i $ map (mapNamedArg f) ps) np
+    where
+    map2 :: (a -> b) -> NamedArg a -> NamedArg b
+    map2 = fmap . fmap
diff --git a/src/full/Agda/Syntax/Internal/SanityCheck.hs b/src/full/Agda/Syntax/Internal/SanityCheck.hs
new file mode 100644
--- /dev/null
+++ b/src/full/Agda/Syntax/Internal/SanityCheck.hs
@@ -0,0 +1,72 @@
+{-# LANGUAGE CPP #-}
+-- | Sanity checking for internal syntax. Mostly checking variable scoping.
+module Agda.Syntax.Internal.SanityCheck where
+
+import Control.Monad
+import qualified Data.IntSet as Set
+
+import Text.PrettyPrint (empty)
+
+import Agda.Syntax.Internal
+import Agda.TypeChecking.Free
+import Agda.TypeChecking.Monad
+import Agda.TypeChecking.Substitute
+
+import Agda.Utils.Pretty
+import Agda.Utils.Size
+import Agda.Utils.Impossible
+
+#include "undefined.h"
+
+sanityCheckVars :: (Pretty a, FreeVS a) => Telescope -> a -> TCM ()
+sanityCheckVars tel v =
+  case filter bad (Set.toList $ allFreeVars v) of
+    [] -> return ()
+    xs -> do
+      reportSDoc "impossible" 1 . return $
+        sep [ hang (text "Sanity check failed for") 2
+                   (hang (pretty tel <+> text "|-") 2 (pretty v))
+            , text $ "out of scope: " ++ show xs ]
+      __IMPOSSIBLE__
+  where
+    n     = size tel
+    bad x = x < 0 || x >= n
+
+-- | Check that @Γ ⊢ ρ : Δ@.
+sanityCheckSubst :: (Pretty a, FreeVS a) => Telescope -> Substitution' a -> Telescope -> TCM ()
+sanityCheckSubst gamma rho delta = go gamma rho delta
+  where
+    go gamma rho delta =
+      case rho of
+        IdS      -> unless (size gamma == size delta) $ err $ text "idS:" <+> hang (pretty gamma <+> text "/=") 2 (pretty delta)
+        EmptyS   -> unless (size delta == 0) $ err $ text "emptyS:" <+> pretty delta <+> text "is not empty"
+        v :# rho -> do
+          unless (size delta > 0) $ err $ text "consS: empty target"
+          sanityCheckVars gamma v
+          sanityCheckSubst gamma rho (dropLast delta)
+        Strengthen _ rho -> do
+          unless (size delta > 0) $ err $ text "strS: empty target"
+          sanityCheckSubst gamma rho (dropLast delta)
+        Wk n rho -> do
+          unless (size gamma >= n) $ err $ text "wkS:" <+> sep [ text "|" <> pretty gamma <> text "|"
+                                                               , text $ "< " ++ show n ]
+          sanityCheckSubst (dropLastN n gamma) rho delta
+        Lift n rho -> do
+          unless (size gamma >= n) $ err $ text "liftS: source" <+> sep [ text "|" <> pretty gamma <> text "|"
+                                                                        , text $ "< " ++ show n ]
+          unless (size delta >= n) $ err $ text "liftS: target" <+> sep [ text "|" <> pretty delta <> text "|"
+                                                                        , text $ "< " ++ show n ]
+          sanityCheckSubst (dropLastN n gamma) rho (dropLastN n delta)
+
+    dropLast = telFromList . init . telToList
+    dropLastN n = telFromList . reverse . drop n . reverse . telToList
+
+    err reason = do
+      reportSDoc "impossible" 1 . return $
+        sep [ hang (text "Sanity check failed for") 2 $
+              hang (pretty gamma <+> text "|-") 2 $
+              hang (pretty rho <+> text ":") 2 $
+                    pretty delta
+            , reason ]
+      __IMPOSSIBLE__
+
diff --git a/src/full/Agda/Syntax/Literal.hs b/src/full/Agda/Syntax/Literal.hs
--- a/src/full/Agda/Syntax/Literal.hs
+++ b/src/full/Agda/Syntax/Literal.hs
@@ -5,6 +5,9 @@
 import Control.DeepSeq
 import Data.Char
 import Data.Typeable (Typeable)
+
+import Numeric.IEEE ( IEEE(identicalIEEE) )
+
 import Agda.Syntax.Position
 import Agda.Syntax.Common
 import Agda.Syntax.Abstract.Name
@@ -53,7 +56,10 @@
 
 instance Eq Literal where
   LitNat _ n    == LitNat _ m    = n == m
-  LitFloat _ x  == LitFloat _ y  = x == y
+  -- ASR (2016-09-29). We use bitwise equality for comparing Double
+  -- because Haskell's Eq, which equates 0.0 and -0.0, allows to prove
+  -- a contradiction (see Issue #2169).
+  LitFloat _ x  == LitFloat _ y  = identicalIEEE x y || (isNaN x && isNaN y)
   LitString _ s == LitString _ t = s == t
   LitChar _ c   == LitChar _ d   = c == d
   LitQName _ x  == LitQName _ y  = x == y
@@ -62,7 +68,7 @@
 
 instance Ord Literal where
   LitNat _ n    `compare` LitNat _ m    = n `compare` m
-  LitFloat _ x  `compare` LitFloat _ y  = x `compare` y
+  LitFloat _ x  `compare` LitFloat _ y  = compareFloat x y
   LitString _ s `compare` LitString _ t = s `compare` t
   LitChar _ c   `compare` LitChar _ d   = c `compare` d
   LitQName _ x  `compare` LitQName _ y  = x `compare` y
@@ -79,6 +85,23 @@
   compare _ LitQName{}  = GT
   -- compare LitMeta{} _   = LT
   -- compare _ LitMeta{}   = GT
+
+-- NOTE: This is not the same ordering as primFloatNumericalEquality!
+-- This ordering must be a total order of all allowed float values,
+-- while primFloatNumericalEquality is only a preorder
+compareFloat :: Double -> Double -> Ordering
+compareFloat x y
+  | identicalIEEE x y          = EQ
+  | isNegInf x                 = LT
+  | isNegInf y                 = GT
+  | isNaN x && isNaN y         = EQ
+  | isNaN x                    = LT
+  | isNaN y                    = GT
+  | isNegativeZero x && x == y = LT
+  | isNegativeZero y && x == y = GT
+  | otherwise                  = compare x y
+  where
+    isNegInf z = z < 0 && isInfinite z
 
 instance HasRange Literal where
   getRange (LitNat    r _) = r
diff --git a/src/full/Agda/Syntax/Parser.hs b/src/full/Agda/Syntax/Parser.hs
--- a/src/full/Agda/Syntax/Parser.hs
+++ b/src/full/Agda/Syntax/Parser.hs
@@ -1,10 +1,12 @@
+{-# LANGUAGE CPP #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
 
 module Agda.Syntax.Parser
     ( -- * Types
       Parser
       -- * Parse functions
     , Agda.Syntax.Parser.parse
-    , Agda.Syntax.Parser.parseLiterate
     , Agda.Syntax.Parser.parsePosString
     , parseFile'
       -- * Parsers
@@ -15,69 +17,147 @@
     , tokensParser
       -- * Parse errors
     , ParseError(..)
+    , ParseWarning(..)
+    , PM(..)
+    , runPMIO
     ) where
 
+import Control.Arrow (second)
 import Control.Exception
+import Control.Monad ((>=>), forM_)
+import Control.Monad.State
+import Control.Monad.Reader
+import Control.Monad.Writer hiding ((<>))
 import Data.List
+import Data.Typeable ( Typeable )
 
 import Agda.Syntax.Position
 import Agda.Syntax.Parser.Monad as M hiding (Parser, parseFlags)
 import qualified Agda.Syntax.Parser.Monad as M
 import qualified Agda.Syntax.Parser.Parser as P
 import Agda.Syntax.Parser.Lexer
+import Agda.Syntax.Parser.Literate
 import Agda.Syntax.Concrete
+import Agda.Syntax.Concrete.Definitions
 import Agda.Syntax.Parser.Tokens
 
+import Agda.Utils.Except
+  ( Error(strMsg)
+  , ExceptT
+  , MonadError(catchError, throwError)
+  , runExceptT
+  )
 import Agda.Utils.FileName
+import qualified Agda.Utils.Maybe.Strict as Strict
+import Agda.Utils.Pretty
 
+
+
+
+#if __GLASGOW_HASKELL__ <= 708
+import Control.Applicative ((<$>), Applicative)
+#endif
+
+#include "undefined.h"
+import Agda.Utils.Impossible
+
 ------------------------------------------------------------------------
 -- Wrapping parse results
 
-wrap :: ParseResult a -> a
-wrap (ParseOk _ x)      = x
-wrap (ParseFailed err)  = throw err
+wrap :: ParseResult a -> PM a
+wrap (ParseOk _ x)      = return x
+wrap (ParseFailed err)  = throwError err
 
-wrapM:: Monad m => m (ParseResult a) -> m a
-wrapM m =
-    do  r <- m
-        case r of
-            ParseOk _ x     -> return x
-            ParseFailed err -> throw err
+wrapIOM :: (MonadError e m, MonadIO m) => (IOError -> e) -> IO a -> m a
+wrapIOM f m = do
+  a <- liftIO$ (Right <$> m) `catch` (\err -> return$ Left (err :: IOError))
+  case a of
+    Right x  -> return x
+    Left err -> throwError (f err)
 
+wrapM :: IO (ParseResult a) -> PM a
+wrapM m = liftIO m >>= wrap
+
+-- | A monad for handling parse results
+newtype PM a = PM { unPM :: ExceptT ParseError (StateT [ParseWarning] IO) a }
+               deriving (Functor, Applicative, Monad,
+                         MonadError ParseError, MonadIO)
+
+warning :: ParseWarning -> PM ()
+warning w = PM (modify (w:))
+
+runPMIO :: (MonadIO m) => PM a -> m (Either ParseError a, [ParseWarning])
+runPMIO = liftIO . fmap (second reverse) . flip runStateT [] . runExceptT . unPM
+
 ------------------------------------------------------------------------
 -- Parse functions
 
 -- | Wrapped Parser type.
 
 data Parser a = Parser
-  { parser     :: M.Parser a
-  , parseFlags :: ParseFlags
+  { parser         :: M.Parser a
+  , parseFlags     :: ParseFlags
+  , parseLiterate  :: LiterateParser a
   }
 
-parse :: Parser a -> String -> IO a
+type LiterateParser a = Parser a -> [Layer] -> PM a
+
+parse :: Parser a -> String -> PM a
 parse p = wrapM . return . M.parse (parseFlags p) [normal] (parser p)
 
-parseFile :: Parser a -> AbsolutePath -> IO a
+parseFile :: Parser a -> AbsolutePath -> PM a
 parseFile p = wrapM . M.parseFile (parseFlags p) [layout, normal] (parser p)
 
-parseLiterate :: Parser a -> String -> IO a
-parseLiterate p =
-  wrapM . return . M.parse (parseFlags p) [literate, layout, code] (parser p)
+parseString :: Parser a -> String -> PM a
+parseString = parseStringFromFile Strict.Nothing
 
-parseLiterateFile :: Parser a -> AbsolutePath -> IO a
-parseLiterateFile p =
-  wrapM . M.parseFile (parseFlags p) [literate, layout, code] (parser p)
+parseStringFromFile :: SrcFile -> Parser a -> String -> PM a
+parseStringFromFile src p = wrapM . return . M.parseFromSrc (parseFlags p) [layout, normal] (parser p) src
 
-parsePosString :: Parser a -> Position -> String -> IO a
-parsePosString p pos =
-  wrapM . return . M.parsePosString pos (parseFlags p) [normal] (parser p)
+parseLiterateWithoutComments :: LiterateParser a
+parseLiterateWithoutComments p layers = parseStringFromFile (literateSrcFile layers) p $ illiterate layers
 
-parseFile' :: Parser a -> AbsolutePath -> IO a
+parseLiterateWithComments :: LiterateParser [Token]
+parseLiterateWithComments p layers = do
+  code <- map Left <$> parseLiterateWithoutComments p layers
+  let literate = Right <$> filter (not . isCode) layers
+  let (terms, overlaps) = interleaveRanges code literate
+  forM_ (map fst overlaps) $ \c ->
+    warning$ OverlappingTokensWarning { warnRange = getRange c }
+
+  return$ concat [ case m of
+                       Left t -> [t]
+                       Right (Layer Comment interval s) -> [TokTeX (interval, s)]
+                       Right (Layer Markup _ _) -> []
+                       Right (Layer Code _ _) -> []
+                   | m <- terms ]
+
+readFilePM :: AbsolutePath -> PM String
+readFilePM path = wrapIOM (ReadFileError path) (readFile (filePath path))
+
+parseLiterateFile :: Processor -> Parser a -> AbsolutePath -> PM a
+parseLiterateFile po p path = readFilePM path >>= parseLiterate p p . po (startPos (Just path))
+
+parsePosString :: Parser a -> Position -> String -> PM a
+parsePosString p pos = wrapM . return . M.parsePosString pos (parseFlags p) [normal] (parser p)
+
+-- | Extensions supported by `parseFile'`
+parseFileExts :: [String]
+parseFileExts = ".agda":literateExts
+
+parseFile' :: (Show a) => Parser a -> AbsolutePath -> PM a
 parseFile' p file =
-  if "lagda" `isSuffixOf` filePath file then
-    Agda.Syntax.Parser.parseLiterateFile p file
-   else
+  if ".agda" `isSuffixOf` filePath file then
     Agda.Syntax.Parser.parseFile p file
+  else
+    go literateProcessors
+  where
+    go [] = throwError InvalidExtensionError {
+                     errPath = file
+                   , errValidExts = parseFileExts
+                   }
+    go ((ext, po):pos) | ext `isSuffixOf` filePath file = parseLiterateFile po p file
+    go (_:pos) = go pos
 
 ------------------------------------------------------------------------
 -- Specific parsers
@@ -86,19 +166,25 @@
 
 moduleParser :: Parser Module
 moduleParser = Parser { parser = P.moduleParser
-                      , parseFlags = withoutComments }
+                      , parseFlags = withoutComments
+                      , parseLiterate = parseLiterateWithoutComments
+                      }
 
 -- | Parses a module name.
 
 moduleNameParser :: Parser QName
 moduleNameParser = Parser { parser = P.moduleNameParser
-                          , parseFlags = withoutComments }
+                          , parseFlags = withoutComments
+                          , parseLiterate = parseLiterateWithoutComments
+                          }
 
 -- | Parses an expression.
 
 exprParser :: Parser Expr
 exprParser = Parser { parser = P.exprParser
-                    , parseFlags = withoutComments }
+                    , parseFlags = withoutComments
+                    , parseLiterate = parseLiterateWithoutComments
+                    }
 
 -- | Parses an expression followed by a where clause.
 
@@ -106,13 +192,16 @@
 exprWhereParser = Parser
   { parser     = P.exprWhereParser
   , parseFlags = withoutComments
+  , parseLiterate = parseLiterateWithoutComments
   }
 
 -- | Gives the parsed token stream (including comments).
 
 tokensParser :: Parser [Token]
 tokensParser = Parser { parser = P.tokensParser
-                      , parseFlags = withComments }
+                      , parseFlags = withComments
+                      , parseLiterate = parseLiterateWithComments
+                      }
 
 -- | Keep comments in the token stream generated by the lexer.
 
diff --git a/src/full/Agda/Syntax/Parser/LexActions.hs b/src/full/Agda/Syntax/Parser/LexActions.hs
--- a/src/full/Agda/Syntax/Parser/LexActions.hs
+++ b/src/full/Agda/Syntax/Parser/LexActions.hs
@@ -72,6 +72,8 @@
 postToken (TokId (r, "\x2192")) = TokSymbol SymArrow r
 postToken (TokId (r, "\x2983")) = TokSymbol SymDoubleOpenBrace r
 postToken (TokId (r, "\x2984")) = TokSymbol SymDoubleCloseBrace r
+postToken (TokId (r, "\x2987")) = TokSymbol SymOpenIdiomBracket r
+postToken (TokId (r, "\x2988")) = TokSymbol SymCloseIdiomBracket r
 postToken (TokId (r, "\x2200")) = TokKeyword KwForall r
 postToken (TokId (r, s))
   | set == "Set" && all isSub n = TokSetN (r, readSubscript n)
diff --git a/src/full/Agda/Syntax/Parser/Lexer.x b/src/full/Agda/Syntax/Parser/Lexer.x
--- a/src/full/Agda/Syntax/Parser/Lexer.x
+++ b/src/full/Agda/Syntax/Parser/Lexer.x
@@ -14,7 +14,7 @@
     ( -- * The main function
       lexer
       -- * Lex states
-    , normal, literate, code
+    , normal, code
     , layout, empty_layout, bol, imp_dir
       -- * Alex generated functions
     , AlexReturn(..), alexScanUser
@@ -65,16 +65,6 @@
 
 tokens :-
 
--- Lexing literate files
-<tex> $white_nonl* \\ "begin{code}" $white_nonl* $ { end_ }
-<tex> .+ / { keepComments } { withInterval TokTeX }
-<tex>    .+                         ;
-<tex>    \n                         ;
-<tex> () / { eof } { end_ }
-<bol_,layout_>
-  \\ "end{code}" / { inState code } { begin_ tex }
-  -- \end{code} should only be recognized if the bottom of the stack is <code>
-
 -- White space
 <0,code,bol_,layout_,empty_layout_,imp_dir_>
     $white_nonl+    ;
@@ -105,10 +95,10 @@
 <pragma_>   "LINE"                     { keyword KwLINE }
 <pragma_>   "MEASURE"                  { keyword KwMEASURE }
 <pragma_>   "NO_POSITIVITY_CHECK"      { keyword KwNO_POSITIVITY_CHECK }
-<pragma_>   "NO_SMASHING"              { keyword KwNO_SMASHING }
 <pragma_>   "NO_TERMINATION_CHECK"     { keyword KwNO_TERMINATION_CHECK }
 <pragma_>   "NON_TERMINATING"          { keyword KwNON_TERMINATING }
 <pragma_>   "OPTIONS"                  { keyword KwOPTIONS }
+<pragma_>   "POLARITY"                 { keyword KwPOLARITY }
 <pragma_>   "REWRITE"                  { keyword KwREWRITE }
 <pragma_>   "STATIC"                   { keyword KwSTATIC }
 <pragma_>   "TERMINATING"              { keyword KwTERMINATING }
@@ -179,6 +169,7 @@
 <0,code> abstract       { keyword KwAbstract }
 <0,code> private        { keyword KwPrivate }
 <0,code> instance       { keyword KwInstance }
+<0,code> overlap        { keyword KwOverlap }
 <0,code> macro          { keyword KwMacro }
 <0,code> Set            { keyword KwSet }
 <0,code> forall         { keyword KwForall }
@@ -216,6 +207,8 @@
 <0,code> "_"            { symbol SymUnderscore }
 <0,code> "?"            { symbol SymQuestionMark }
 <0,code> "|"            { symbol SymBar }
+<0,code> "(|" /[$white] { symbol SymOpenIdiomBracket }
+<0,code> "|)"           { symbol SymCloseIdiomBracket }
 <0,code> "("            { symbol SymOpenParen }
 <0,code> ")"            { symbol SymCloseParen }
 <0,code> "->"           { symbol SymArrow }
@@ -247,12 +240,6 @@
 -- identifier 'toz' in imp_dir_ state, leading to a parse error later.
 
 {
-
--- | This is the initial state for parsing a literate file. Code blocks
---   should be enclosed in @\\begin{code}@ @\\end{code}@ pairs.
-literate :: LexState
-literate = tex
-
 
 -- | This is the initial state for parsing a regular, non-literate file.
 normal :: LexState
diff --git a/src/full/Agda/Syntax/Parser/Literate.hs b/src/full/Agda/Syntax/Parser/Literate.hs
new file mode 100644
--- /dev/null
+++ b/src/full/Agda/Syntax/Parser/Literate.hs
@@ -0,0 +1,219 @@
+{-# LANGUAGE CPP #-}
+{-# LANGUAGE ViewPatterns #-}
+-- | Preprocessors for literate code formats
+module Agda.Syntax.Parser.Literate (
+  literateProcessors,
+  literateExts,
+  literateExtsShortList,
+  literateSrcFile,
+  literateTeX,
+  literateRsT,
+  illiterate,
+  isCode,
+  Processor,
+  Layer(..),
+  LayerType(..)
+  )
+  where
+
+import Prelude hiding (getLine)
+import Data.Char (isSpace, isControl)
+import Data.List (isPrefixOf)
+import Agda.Syntax.Position
+import Text.Regex.TDFA
+
+#if __GLASGOW_HASKELL__ <= 708
+import Control.Applicative ((<$>),(<*>))
+#endif
+
+#include "undefined.h"
+import Agda.Utils.Impossible
+
+data LayerType = Markup | Comment | Code
+                deriving (Show, Eq)
+
+data Layer = Layer {
+  layerType    :: LayerType
+ ,interval     :: Interval
+ ,layerContent :: String
+} deriving (Show)
+
+instance HasRange Layer where
+  getRange = getRange . interval
+
+-- | Annotates a tokenized string with position information.
+mkLayers :: Position -> [(LayerType, String)] -> [Layer]
+mkLayers pos [] = emptyLiterate pos
+mkLayers pos ((_,""):xs) = mkLayers pos xs
+mkLayers pos ((ty,s):xs) = let next = movePosByString pos s in
+                           (Layer ty (Interval pos next) s):(mkLayers next xs)
+
+-- | Checks if a layer corresponds to Agda code
+isCode :: Layer -> Bool
+isCode Layer{layerType=Code}    = True
+isCode Layer{layerType=Markup } = False
+isCode Layer{layerType=Comment} = False
+
+-- | Type of a literate preprocessor:
+--   Invariants:
+--
+--   > f : Processor
+--
+--   prop> f pos s /= []
+--
+--   prop> f pos s >>= layerContent == s
+type Processor = Position -> String -> [Layer]
+
+literateSrcFile :: [Layer] -> SrcFile
+literateSrcFile [] = __IMPOSSIBLE__
+literateSrcFile (Layer{interval}:_) = getIntervalFile interval
+
+-- | List of valid extensions for literate Agda files, and their corresponding
+--   preprocessors.
+--
+--   If you add new extensions, remember to update test/Utils.hs so that test
+--   cases ending in the new extensions are found.
+literateProcessors :: [(String, Processor)]
+literateProcessors = map ((,) <$> (".lagda" ++) . fst <*> snd)
+                 [(""    , literateTeX)
+                 ,(".rst", literateRsT)
+                 ,(".tex", literateTeX)
+                 ]
+
+-- | Blanks the non-code parts of a given file, preserving positions of
+--   characters corresponding to code. This way, there is a direct
+--   correspondence between source positions and positions in the
+--   processed result.
+illiterate :: [Layer] -> String
+illiterate xs = concat [
+  (if isCode m then id else bleach) layerContent
+  | m@Layer{layerContent} <- xs]
+
+-- | Replaces non-space characters in a string with spaces.
+bleach :: String -> String
+bleach s = map go s
+  where
+    go c | isSpace c = c
+    go _             = ' '
+
+-- | Check if a character is a blank character.
+isBlank :: Char -> Bool
+isBlank = (&&) <$> isSpace <*> not . (== '\n')
+
+-- | Possible extensions for a literate Agda file
+literateExts :: [String]
+literateExts = map fst literateProcessors
+
+-- | Short list of extensions for literate Agda files
+--   For display purposes.
+literateExtsShortList :: [String]
+literateExtsShortList = [".lagda"]
+
+-- | break a list just *after* an element satisfying the predicate is found
+--
+--   >>> break1 even [1,3,5,2,4,7,8]
+--   ([1,3,5,2],[4,7,8])
+--
+break1 :: (a -> Bool) -> [a] -> ([a],[a])
+break1 _ []           =  ([], [])
+break1 p (x:xs) | p x = (x:[],xs)
+break1 p (x:xs)       = let (ys,zs) = break1 p xs in (x:ys,zs)
+
+-- | Returns a tuple consisting of the first line of the input, and the rest
+--   of the input.
+getLine :: String -> (String, String)
+getLine = break1 (== '\n')
+
+-- | Canonical decomposition of an empty literate file
+emptyLiterate :: Position -> [Layer]
+emptyLiterate pos = [Layer (Markup) (Interval pos pos) ""]
+
+-- | Create a regular expression that:
+--   - Must match the whole string
+--   - Works across line boundaries
+rex :: String -> Regex
+rex s = makeRegexOpts blankCompOpt{newSyntax = True} blankExecOpt$ "\\`" ++ s ++ "\\'"
+
+-- | Preprocessor for literate TeX
+literateTeX :: Position -> String -> [Layer]
+literateTeX pos s = mkLayers pos$ tex s
+  where
+  tex :: String -> [(LayerType, String)]
+  tex [] = []
+  tex s  = let (line, rest) = getLine s in
+    case r_begin `matchM` line of
+      Just (getAllTextSubmatches -> [_, pre, markup]) ->
+        (Comment, pre):(Markup, markup):code rest
+      Just _                 -> __IMPOSSIBLE__
+      Nothing                -> (Comment, line):tex rest
+
+  r_begin = rex "(.*)([[:space:]]*\\\\begin\\{code\\}[[:space:]]*)"
+
+
+  code :: String -> [(LayerType, String)]
+  code [] = []
+  code s = let (line, rest) = getLine s in
+    case r_end `matchM` line of
+      Just (getAllTextSubmatches -> [_, markup, post]) ->
+        (Markup, markup):(Comment, post):tex rest
+      Just _ -> __IMPOSSIBLE__
+      Nothing             -> (Code, line):code rest
+
+  r_end   = rex "([[:space:]]*\\\\end\\{code\\}[[:space:]]*)(.*)"
+
+
+-- | Preprocessor for reStructuredText
+literateRsT :: Position -> String -> [Layer]
+literateRsT pos s = mkLayers pos$ rst s
+  where
+  rst :: String -> [(LayerType, String)]
+  rst [] = []
+  rst s  = maybe_code s
+
+  maybe_code s =
+    if r_comment `match` line then
+      not_code
+    else case r_code `match` line of
+      []      -> not_code
+      [[_, before, "::", after]] ->
+        -- Code starts
+          if null before || isBlank (last before) then
+             (Markup,  line):code rest
+          else
+             (Comment, before ++ ":"):(Markup, ':':after):code rest
+
+      _ -> __IMPOSSIBLE__
+    where
+      (line, rest) = getLine s
+      not_code = (Comment, line):rst rest
+
+
+  -- | Finds the next indented block in the input
+  code :: String -> [(LayerType, String)]
+  code [] = []
+  code s = let (line, rest) = getLine s in
+    if all isSpace line then
+      (Markup, line):(code rest)
+    else
+      let (xs,ys) = span isBlank line in
+      case xs of
+        [] -> maybe_code s
+        _  -> (Code, line):
+              (indented xs rest)
+
+  -- | Process an indented block
+  indented :: String -> String -> [(LayerType, String)]
+  indented _   [] = []
+  indented ind s  = let (line, rest) = getLine s in
+      if all isSpace line then
+        (Code, line):(indented ind rest)
+      else if ind `isPrefixOf` line then
+        (Code, line):(indented ind rest)
+      else
+        maybe_code s
+
+  -- | Beginning of a code block
+  r_code = rex "(.*)(::)([[:space:]]*)"
+
+  -- | Beginning of a comment block
+  r_comment = rex "[[:space:]]*\\.\\.([[:space:]].*)?"
diff --git a/src/full/Agda/Syntax/Parser/LookAhead.hs b/src/full/Agda/Syntax/Parser/LookAhead.hs
--- a/src/full/Agda/Syntax/Parser/LookAhead.hs
+++ b/src/full/Agda/Syntax/Parser/LookAhead.hs
@@ -1,5 +1,4 @@
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
-{-# LANGUAGE Rank2Types                 #-}
 
 {-| When lexing by hands (for instance string literals) we need to do some
     looking ahead. The 'LookAhead' monad keeps track of the position we are
diff --git a/src/full/Agda/Syntax/Parser/Monad.hs b/src/full/Agda/Syntax/Parser/Monad.hs
--- a/src/full/Agda/Syntax/Parser/Monad.hs
+++ b/src/full/Agda/Syntax/Parser/Monad.hs
@@ -1,12 +1,12 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE DeriveDataTypeable    #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
 
 module Agda.Syntax.Parser.Monad
     ( -- * The parser monad
       Parser
     , ParseResult(..)
     , ParseState(..)
-    , ParseError(..)
+    , ParseError(..), ParseWarning(..)
     , LexState
     , LayoutContext(..)
     , ParseFlags (..)
@@ -14,8 +14,9 @@
     , initState
     , defaultParseFlags
     , parse
-    , parsePosString
     , parseFile
+    , parsePosString
+    , parseFromSrc
       -- * Manipulating the state
     , setParsePos, setLastPos, getParseInterval
     , setPrevToken
@@ -30,7 +31,7 @@
     )
     where
 
-import Control.Exception
+import Control.Exception (catch)
 import Data.Int
 import Data.Typeable ( Typeable )
 
@@ -40,12 +41,19 @@
 import Agda.Syntax.Position
 
 import Agda.Utils.Except ( MonadError(catchError, throwError) )
+#if !(MIN_VERSION_mtl(2,2,1))
+import Agda.Utils.Except ( Error(noMsg) )
+#endif
 
 import Agda.Utils.FileName
 import qualified Agda.Utils.IO.UTF8 as UTF8
+import qualified Agda.Utils.Maybe.Strict as Strict
 
 import Agda.Utils.Pretty
 
+#include "undefined.h"
+import Agda.Utils.Impossible
+
 {--------------------------------------------------------------------------
     The parse monad
  --------------------------------------------------------------------------}
@@ -92,7 +100,9 @@
   deriving Show
 
 -- | What you get if parsing fails.
-data ParseError = ParseError
+data ParseError =
+  -- | Errors that arise at a specific position in the file
+  ParseError
   { errSrcFile   :: !SrcFile
                     -- ^ The file in which the error occurred.
   , errPos       :: !PositionWithoutFile
@@ -103,10 +113,31 @@
                     -- ^ The previous token.
   , errMsg       :: String
                     -- ^ Hopefully an explanation of what happened.
+  } |
+  -- | Parse errors that concern a range in a file.
+  OverlappingTokensError
+  { errRange     :: !(Range' SrcFile)
+                    -- ^ The range of the bigger overlapping token
+  } |
+  -- | Parse errors that concern a whole file.
+  InvalidExtensionError
+  { errPath      :: !AbsolutePath
+                    -- ^ The file which the error concerns.
+  , errValidExts :: [String]
+  } |
+  ReadFileError
+  { errPath      :: !AbsolutePath
+  , errIOError   :: IOError
   }
-    deriving (Typeable)
+  deriving (Typeable)
 
-instance Exception ParseError
+-- | Warnings for parsing
+data ParseWarning =
+  -- | Parse errors that concern a range in a file.
+  OverlappingTokensWarning
+  { warnRange    :: !(Range' SrcFile)
+                    -- ^ The range of the bigger overlapping token
+  }
 
 -- | The result of parsing something.
 data ParseResult a  = ParseOk ParseState a
@@ -153,17 +184,53 @@
   show = prettyShow
 
 instance Pretty ParseError where
-  pretty err = vcat
-      [ pretty ((errPos err) { srcFile = errSrcFile err }) <> colon <+>
-        text (errMsg err)
-      , text $ errPrevToken err ++ "<ERROR>"
-      , text $ take 30 (errInput err) ++ "..."
+  pretty ParseError{errPos,errSrcFile,errMsg,errPrevToken,errInput} = vcat
+      [ pretty (errPos { srcFile = errSrcFile }) <> colon <+>
+        text errMsg
+      , text $ errPrevToken ++ "<ERROR>"
+      , text $ take 30 errInput ++ "..."
       ]
+  pretty OverlappingTokensError{errRange} = vcat
+      [ pretty errRange <> colon <+>
+        text "Multi-line comment spans one or more literate text blocks."
+      ]
+  pretty InvalidExtensionError{errPath,errValidExts} = vcat
+      [ pretty errPath <> colon <+>
+        text "Unsupported extension."
+      , text "Supported extensions are:" <+> prettyList errValidExts
+      ]
+  pretty ReadFileError{errPath,errIOError} = vcat
+      [ text "Cannot read file" <+> pretty errPath
+        -- TODO: `show` should be replaced by `displayException` once we
+        -- cease to support versions of GHC under 7.10.
+      , text "Error:" <+> text (show errIOError)
+      ]
 
 instance HasRange ParseError where
-  getRange err = posToRange' (errSrcFile err) p p
-    where p = errPos err
+  getRange ParseError{errSrcFile,errPos=p} = posToRange' errSrcFile p p
+  getRange OverlappingTokensError{errRange} = errRange
+  getRange InvalidExtensionError{errPath} = posToRange p p
+    where p = startPos (Just errPath)
+  getRange ReadFileError{errPath} = posToRange p p
+    where p = startPos (Just errPath)
 
+#if !(MIN_VERSION_mtl(2,2,1))
+-- Stupid ErrorT!
+instance Error ParseError where
+  noMsg = __IMPOSSIBLE__
+#endif
+
+instance Show ParseWarning where
+  show = prettyShow
+
+instance Pretty ParseWarning where
+  pretty OverlappingTokensWarning{warnRange} = vcat
+      [ pretty warnRange <> colon <+>
+        text "Multi-line comment spans one or more literate text blocks."
+      ]
+instance HasRange ParseWarning where
+  getRange OverlappingTokensWarning{warnRange} = warnRange
+
 {--------------------------------------------------------------------------
     Running the parser
  --------------------------------------------------------------------------}
@@ -198,7 +265,7 @@
 --   more specialised functions that supply the 'ParseFlags' and the
 --   'LexState'.
 parse :: ParseFlags -> [LexState] -> Parser a -> String -> ParseResult a
-parse flags st p input = unP p (initState Nothing flags input st)
+parse flags st p input = parseFromSrc flags st p Strict.Nothing input
 
 -- | The even more general way of parsing a string.
 parsePosString :: Position -> ParseFlags -> [LexState] -> Parser a -> String ->
@@ -214,8 +281,18 @@
 parseFile :: ParseFlags -> [LexState] -> Parser a -> AbsolutePath
           -> IO (ParseResult a)
 parseFile flags st p file =
-    do  input <- liftIO $ UTF8.readTextFile $ filePath file
-        return $ unP p (initState (Just file) flags input st)
+    do  res <- (Right <$> (UTF8.readTextFile (filePath file))) `catch`
+          (return . Left . ReadFileError file)
+        case res of
+          Left  error -> return$ ParseFailed error
+          Right input -> return$ parseFromSrc flags st p (Strict.Just file) input
+
+-- | Parses a string as if it were the contents of the given file
+--   Useful for integrating preprocessors.
+parseFromSrc :: ParseFlags -> [LexState] -> Parser a -> SrcFile -> String
+              -> ParseResult a
+parseFromSrc flags st p src input = unP p (initState (Strict.toLazy src) flags input st)
+
 
 {--------------------------------------------------------------------------
     Manipulating the state
diff --git a/src/full/Agda/Syntax/Parser/Parser.y b/src/full/Agda/Syntax/Parser/Parser.y
--- a/src/full/Agda/Syntax/Parser/Parser.y
+++ b/src/full/Agda/Syntax/Parser/Parser.y
@@ -20,7 +20,7 @@
     , exprParser
     , exprWhereParser
     , tokensParser
-    , tests
+    , splitOnDots  -- only used by the internal test-suite
     ) where
 
 import Control.Monad
@@ -45,14 +45,14 @@
 import Agda.Syntax.Notation
 import Agda.Syntax.Literal
 
+import Agda.TypeChecking.Positivity.Occurrence hiding (tests)
+
 import Agda.Utils.Either hiding (tests)
 import Agda.Utils.Hash
-import Agda.Utils.List (spanJust)
+import Agda.Utils.List ( spanJust, chopWhen )
 import Agda.Utils.Monad
 import Agda.Utils.Pretty
-import Agda.Utils.QuickCheck
 import Agda.Utils.Singleton
-import Agda.Utils.TestHelpers
 import Agda.Utils.Tuple
 
 import Agda.Utils.Impossible
@@ -97,6 +97,7 @@
     'infixl'                  { TokKeyword KwInfixL $$ }
     'infixr'                  { TokKeyword KwInfixR $$ }
     'instance'                { TokKeyword KwInstance $$ }
+    'overlap'                 { TokKeyword KwOverlap $$ }
     'let'                     { TokKeyword KwLet $$ }
     'macro'                   { TokKeyword KwMacro $$ }
     'module'                  { TokKeyword KwModule $$ }
@@ -145,11 +146,11 @@
     'IMPOSSIBLE'              { TokKeyword KwIMPOSSIBLE $$ }
     'INLINE'                  { TokKeyword KwINLINE $$ }
     'MEASURE'                 { TokKeyword KwMEASURE $$ }
-    'NO_SMASHING'             { TokKeyword KwNO_SMASHING $$ }
     'NO_TERMINATION_CHECK'    { TokKeyword KwNO_TERMINATION_CHECK $$ }
     'NO_POSITIVITY_CHECK'     { TokKeyword KwNO_POSITIVITY_CHECK $$ }
     'NON_TERMINATING'         { TokKeyword KwNON_TERMINATING $$ }
     'OPTIONS'                 { TokKeyword KwOPTIONS $$ }
+    'POLARITY'                { TokKeyword KwPOLARITY $$ }
     'REWRITE'                 { TokKeyword KwREWRITE $$ }
     'STATIC'                  { TokKeyword KwSTATIC $$ }
     'TERMINATING'             { TokKeyword KwTERMINATING $$ }
@@ -172,6 +173,8 @@
     '|'                       { TokSymbol SymBar $$ }
     '('                       { TokSymbol SymOpenParen $$ }
     ')'                       { TokSymbol SymCloseParen $$ }
+    '(|'                      { TokSymbol SymOpenIdiomBracket $$ }
+    '|)'                      { TokSymbol SymCloseIdiomBracket $$ }
     '{{'                      { TokSymbol SymDoubleOpenBrace $$ }
     '}}'                      { TokSymbol SymDoubleCloseBrace $$ }
     '{'                       { TokSymbol SymOpenBrace $$ }
@@ -224,6 +227,7 @@
     | 'infixl'                  { TokKeyword KwInfixL $1 }
     | 'infixr'                  { TokKeyword KwInfixR $1 }
     | 'instance'                { TokKeyword KwInstance $1 }
+    | 'overlap'                 { TokKeyword KwOverlap $1 }
     | 'let'                     { TokKeyword KwLet $1 }
     | 'macro'                   { TokKeyword KwMacro $1 }
     | 'module'                  { TokKeyword KwModule $1 }
@@ -272,11 +276,11 @@
     | 'IMPOSSIBLE'              { TokKeyword KwIMPOSSIBLE $1 }
     | 'INLINE'                  { TokKeyword KwINLINE $1 }
     | 'MEASURE'                 { TokKeyword KwMEASURE $1 }
-    | 'NO_SMASHING'             { TokKeyword KwNO_SMASHING $1 }
     | 'NO_TERMINATION_CHECK'    { TokKeyword KwNO_TERMINATION_CHECK $1 }
     | 'NO_POSITIVITY_CHECK'     { TokKeyword KwNO_POSITIVITY_CHECK $1 }
     | 'NON_TERMINATING'         { TokKeyword KwNON_TERMINATING $1 }
     | 'OPTIONS'                 { TokKeyword KwOPTIONS $1 }
+    | 'POLARITY'                { TokKeyword KwPOLARITY $1 }
     | 'REWRITE'                 { TokKeyword KwREWRITE $1 }
     | 'STATIC'                  { TokKeyword KwSTATIC $1 }
     | 'TERMINATING'             { TokKeyword KwTERMINATING $1 }
@@ -299,6 +303,8 @@
     | '|'                       { TokSymbol SymBar $1 }
     | '('                       { TokSymbol SymOpenParen $1 }
     | ')'                       { TokSymbol SymCloseParen $1 }
+    | '(|'                      { TokSymbol SymOpenIdiomBracket $1 }
+    | '|)'                      { TokSymbol SymCloseIdiomBracket $1 }
     | '{{'                      { TokSymbol SymDoubleOpenBrace $1 }
     | '}}'                      { TokSymbol SymDoubleCloseBrace $1 }
     | '{'                       { TokSymbol SymOpenBrace $1 }
@@ -405,8 +411,9 @@
 -- A possibly dotted identifier.
 MaybeDottedId :: { Arg Name }
 MaybeDottedId
-  : '.' Id { setRelevance Irrelevant $ defaultArg $2 }
-  | Id     { defaultArg $1 }
+  : '..' Id { setRelevance NonStrict $ defaultArg $2 }
+  | '.'  Id { setRelevance Irrelevant $ defaultArg $2 }
+  | Id      { defaultArg $1 }
 
 -- Space separated list of one or more possibly dotted identifiers.
 MaybeDottedIds :: { [Arg Name] }
@@ -563,8 +570,11 @@
 PragmaName : string {% mkName $1 }
 
 PragmaQName :: { QName }
-PragmaQName : string {% fmap QName (mkName $1) }
+PragmaQName : string {% pragmaQName $1 }  -- Issue 2125. WAS: string {% fmap QName (mkName $1) }
 
+PragmaQNames :: { [QName] }
+PragmaQNames : Strings {% mapM pragmaQName $1 }
+
 {--------------------------------------------------------------------------
     Expressions (terms and types)
  --------------------------------------------------------------------------}
@@ -628,6 +638,7 @@
 ExtendedOrAbsurdLam :: { Expr }
 ExtendedOrAbsurdLam
     : '\\'  '{' LamClauses '}'     { ExtendedLam (getRange ($1,$2,$3,$4)) (reverse $3) }
+    | '\\' 'where' vopen LamClauses close { ExtendedLam (getRange ($1, $2, $4)) (reverse $4) }
     | '\\' AbsurdLamBindings       {% case $2 of
                                        Left (bs, h) -> if null bs then return $ AbsurdLam r h else
                                                        return $ Lam r bs (AbsurdLam r h)
@@ -663,6 +674,7 @@
     | '{{' Expr DoubleCloseBrace                        { InstanceArg (getRange ($1,$2,$3))
                                                           (maybeNamed $2) }
     | '(' Expr ')'                      { Paren (getRange ($1,$2,$3)) $2 }
+    | '(|' Expr '|)'                    { IdiomBrackets (getRange ($1,$2,$3)) $2 }
     | '(' ')'                           { Absurd (fuseRange $1 $2) }
     | '{{' DoubleCloseBrace             { let r = fuseRange $1 $2 in InstanceArg r $ unnamed $ Absurd r }
     | Id '@' Expr3                      { As (getRange ($1,$2,$3)) $1 $3 }
@@ -1018,8 +1030,8 @@
 WhereClause
     : {- empty -}                      { NoWhere         }
     | 'where' Declarations0            { AnyWhere $2     }
-    | 'module' Id 'where' Declarations0 { SomeWhere $2 $4 }
-    | 'module' Underscore 'where' Declarations0 { SomeWhere $2 $4 }
+    | 'module' Id 'where' Declarations0 { SomeWhere $2 PublicAccess $4 }
+    | 'module' Underscore 'where' Declarations0 { SomeWhere $2 PublicAccess $4 }
 
 ExprWhere :: { ExprWhere }
 ExprWhere : Expr WhereClause { ExprWhere $1 $2 }
@@ -1070,6 +1082,9 @@
 ArgTypeSigs :: { [Arg Declaration] }
 ArgTypeSigs
   : ArgIds ':' Expr { map (fmap (\ x -> TypeSig defaultArgInfo x $3)) $1 }
+  | 'overlap' ArgIds ':' Expr {
+      let setOverlap (Arg i x) = Arg i{ argInfoOverlappable = True } x in
+      map (setOverlap . fmap (\ x -> TypeSig defaultArgInfo x $4)) $2 }
   | 'instance' ArgTypeSignatures {
     let
       setInstance (TypeSig info x t) = TypeSig (setHiding Instance info) x t
@@ -1155,7 +1170,7 @@
 
 -- Private can only appear on the top-level (or rather the module level).
 Private :: { Declaration }
-Private : 'private' Declarations        { Private (fuseRange $1 $2) $2 }
+Private : 'private' Declarations        { Private (fuseRange $1 $2) UserWritten $2 }
 
 
 -- Instance declarations.
@@ -1261,7 +1276,7 @@
     ; impStm asR = Import mr m (Just (AsName fresh asR)) DontOpen defaultImportDir
     ; appStm m' es =
         let r = getRange (m, es) in
-        Private r
+        Private r Inserted
           [ ModuleMacro r m'
              (SectionApp (getRange es) []
                (RawApp (getRange es) (Ident (QName fresh) : es)))
@@ -1299,18 +1314,19 @@
     } in
     [ case es of
       { []  -> Open r m dir
-      ; _   -> Private r [ ModuleMacro r (noName $ beginningOf $ getRange m)
+      ; _   -> Private r Inserted
+                 [ ModuleMacro r (noName $ beginningOf $ getRange m)
                              (SectionApp (getRange (m , es)) [] (RawApp (fuseRange m es) (Ident m : es)))
                              DoOpen dir
-                         ]
+                 ]
       }
     ]
   }
   | 'open' ModuleName '{{' '...' DoubleCloseBrace ImportDirective {
     let r = getRange $2 in
-    [ Private r [ ModuleMacro r (noName $ beginningOf $ getRange $2)
-                (RecordModuleIFS r $2) DoOpen $6
-                ]
+    [ Private r Inserted
+      [ ModuleMacro r (noName $ beginningOf $ getRange $2) (RecordModuleIFS r $2) DoOpen $6
+      ]
     ]
   }
 
@@ -1366,7 +1382,6 @@
   | CompiledUHCPragma        { $1 }
   | CompiledDataUHCPragma    { $1 }
   | HaskellPragma            { $1 }
-  | NoSmashingPragma         { $1 }
   | StaticPragma             { $1 }
   | InlinePragma             { $1 }
   | ImportPragma             { $1 }
@@ -1379,6 +1394,7 @@
   | CatchallPragma           { $1 }
   | DisplayPragma            { $1 }
   | NoPositivityCheckPragma  { $1 }
+  | PolarityPragma           { $1 }
   | OptionsPragma            { $1 }
     -- Andreas, 2014-03-06
     -- OPTIONS pragma not allowed everywhere, but don't give parse error.
@@ -1397,7 +1413,7 @@
 
 RewritePragma :: { Pragma }
 RewritePragma
-    : '{-#' 'REWRITE' PragmaQName '#-}'
+    : '{-#' 'REWRITE' PragmaQNames '#-}'
       { RewritePragma (getRange ($1,$2,$3,$4)) $3 }
 
 CompiledPragma :: { Pragma }
@@ -1449,11 +1465,6 @@
 HaskellPragma
   : '{-#' 'HASKELL' Strings '#-}' { HaskellCodePragma (getRange ($1, $2, $4)) (recoverLayout $3) }
 
-NoSmashingPragma :: { Pragma }
-NoSmashingPragma
-  : '{-#' 'NO_SMASHING' PragmaQName '#-}'
-    { NoSmashingPragma (getRange ($1,$2,$3,$4)) $3 }
-
 StaticPragma :: { Pragma }
 StaticPragma
   : '{-#' 'STATIC' PragmaQName '#-}'
@@ -1524,6 +1535,20 @@
   : '{-#' 'NO_POSITIVITY_CHECK' '#-}'
     { NoPositivityCheckPragma (getRange ($1,$2,$3)) }
 
+PolarityPragma :: { Pragma }
+PolarityPragma
+  : '{-#' 'POLARITY' PragmaName Polarities '#-}'
+    { let (rs, occs) = unzip (reverse $4) in
+      PolarityPragma (getRange ($1,$2,$3,rs,$5)) $3 occs }
+
+-- Possibly empty list of polarities. Reversed.
+Polarities :: { [(Range, Occurrence)] }
+Polarities : {- empty -}          { [] }
+           | Polarities Polarity  { $2 : $1 }
+
+Polarity :: { (Range, Occurrence) }
+Polarity : string {% polarity $1 }
+
 {--------------------------------------------------------------------------
     Sequences of declarations
  --------------------------------------------------------------------------}
@@ -1692,6 +1717,29 @@
     xs <- mapM mkName ss
     return $ foldr Qual (QName $ last xs) (init xs)
 
+-- | Create a qualified name from a string (used in pragmas).
+--   Range of each name component is range of whole string.
+--   TODO: precise ranges!
+
+pragmaQName :: (Interval, String) -> Parser QName
+pragmaQName (r, s) = do
+  let ss = chopWhen (== '.') s
+  mkQName $ map (r,) ss
+
+-- | Polarity parser.
+
+polarity :: (Interval, String) -> Parser (Range, Occurrence)
+polarity (i, s) =
+  case s of
+    "_"  -> ret Unused
+    "++" -> ret StrictPos
+    "+"  -> ret JustPos
+    "-"  -> ret JustNeg
+    "*"  -> ret Mixed
+    _    -> fail $ "Not a valid polarity: " ++ s
+  where
+  ret x = return (getRange i, x)
+
 recoverLayout :: [(Interval, String)] -> String
 recoverLayout [] = ""
 recoverLayout xs@((i, _) : _) = go (iStart i) xs
@@ -1804,13 +1852,6 @@
 splitOnDots (c   : s) = case splitOnDots s of
   p : ps -> (c : p) : ps
 
-prop_splitOnDots = and
-  [ splitOnDots ""         == [""]
-  , splitOnDots "foo.bar"  == ["foo", "bar"]
-  , splitOnDots ".foo.bar" == ["", "foo", "bar"]
-  , splitOnDots "foo.bar." == ["foo", "bar", ""]
-  , splitOnDots "foo..bar" == ["foo", "", "bar"]
-  ]
 
 -- | Returns 'True' iff the name is a valid Haskell (hierarchical)
 -- module name.
@@ -1853,8 +1894,8 @@
         Underscore r _          -> return $ WildP r
         Absurd r                -> return $ AbsurdP r
         As r x e                -> AsP r x <$> exprToPattern e
-        Dot r (HiddenArg _ e)   -> return $ HiddenP r $ fmap (DotP r) e
-        Dot r e                 -> return $ DotP r e
+        Dot r (HiddenArg _ e)   -> return $ HiddenP r $ fmap (DotP r UserWritten) e
+        Dot r e                 -> return $ DotP r UserWritten e
         Lit l                   -> return $ LitP l
         HiddenArg r e           -> HiddenP r <$> T.mapM exprToPattern e
         InstanceArg r e         -> InstanceP r <$> T.mapM exprToPattern e
@@ -1916,7 +1957,7 @@
   case p of
     IdentP (QName i)         -> return [(defaultArgInfo, i)]
     WildP r                  -> return [(defaultArgInfo, C.noName r)]
-    DotP _ (Ident (QName i)) -> return [(setRelevance Irrelevant defaultArgInfo, i)]
+    DotP _ _ (Ident (QName i)) -> return [(setRelevance Irrelevant defaultArgInfo, i)]
     RawAppP _ ps             -> concat <$> mapM patternToNames ps
     _                        -> parseError $
       "Illegal name in type signature: " ++ prettyShow p
@@ -1941,15 +1982,5 @@
     ParseOk s [FunClause (LHS lhs [] [] []) (RHS rhs) NoWhere ca] | null (parseInp s) ->
       return $ DisplayPragma r lhs rhs
     _ -> parseError "Invalid DISPLAY pragma. Should have form {-# DISPLAY LHS = RHS #-}."
-
-{--------------------------------------------------------------------------
-    Tests
- --------------------------------------------------------------------------}
-
--- | Test suite.
-tests :: IO Bool
-tests = runTests "Agda.Syntax.Parser.Parser"
-  [ quickCheck' prop_splitOnDots
-  ]
 
 }
diff --git a/src/full/Agda/Syntax/Parser/Tokens.hs b/src/full/Agda/Syntax/Parser/Tokens.hs
--- a/src/full/Agda/Syntax/Parser/Tokens.hs
+++ b/src/full/Agda/Syntax/Parser/Tokens.hs
@@ -11,6 +11,7 @@
 data Keyword
         = KwLet | KwIn | KwWhere | KwData | KwCoData
         | KwPostulate | KwMutual | KwAbstract | KwPrivate | KwInstance
+        | KwOverlap
         | KwOpen | KwImport | KwModule | KwPrimitive | KwMacro
         | KwInfix | KwInfixL | KwInfixR | KwWith | KwRewrite
         | KwSet | KwProp | KwForall | KwRecord | KwConstructor | KwField
@@ -21,7 +22,7 @@
         | KwCOMPILED_DATA | KwCOMPILED_DECLARE_DATA | KwCOMPILED_TYPE | KwCOMPILED | KwCOMPILED_EXPORT
         | KwHASKELL
         | KwCOMPILED_EPIC | KwCOMPILED_JS | KwCOMPILED_UHC | KwCOMPILED_DATA_UHC
-        | KwIMPORT | KwIMPORT_UHC | KwIMPOSSIBLE | KwSTATIC | KwINLINE | KwNO_SMASHING
+        | KwIMPORT | KwIMPORT_UHC | KwIMPOSSIBLE | KwSTATIC | KwINLINE
         | KwNO_TERMINATION_CHECK | KwTERMINATING | KwNON_TERMINATING
         | KwMEASURE | KwDISPLAY
         | KwREWRITE
@@ -29,7 +30,7 @@
         | KwUnquote | KwUnquoteDecl | KwUnquoteDef
         | KwSyntax
         | KwPatternSyn | KwTactic | KwCATCHALL
-        | KwNO_POSITIVITY_CHECK
+        | KwNO_POSITIVITY_CHECK | KwPOLARITY
     deriving (Eq, Show)
 
 layoutKeywords :: [Keyword]
@@ -41,6 +42,7 @@
         | SymColon | SymArrow | SymEqual | SymLambda
         | SymUnderscore | SymQuestionMark   | SymAs
         | SymOpenParen        | SymCloseParen
+        | SymOpenIdiomBracket | SymCloseIdiomBracket
         | SymDoubleOpenBrace  | SymDoubleCloseBrace
         | SymOpenBrace        | SymCloseBrace
         | SymOpenVirtualBrace | SymCloseVirtualBrace
diff --git a/src/full/Agda/Syntax/Position.hs b/src/full/Agda/Syntax/Position.hs
--- a/src/full/Agda/Syntax/Position.hs
+++ b/src/full/Agda/Syntax/Position.hs
@@ -1,14 +1,9 @@
 {-# LANGUAGE CPP                        #-}
 {-# LANGUAGE DeriveDataTypeable         #-}
-{-# LANGUAGE DeriveFoldable             #-}
-{-# LANGUAGE DeriveFunctor              #-}
 {-# LANGUAGE DeriveGeneric              #-}
-{-# LANGUAGE DeriveTraversable          #-}
-{-# LANGUAGE FlexibleInstances          #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE NoMonomorphismRestriction  #-}
 {-# LANGUAGE ScopedTypeVariables        #-}
-{-# LANGUAGE TemplateHaskell            #-}
 
 #if __GLASGOW_HASKELL__ <= 708
 {-# LANGUAGE OverlappingInstances #-}
@@ -28,6 +23,7 @@
   , movePos
   , movePosByString
   , backupPos
+  , startPos'
 
     -- * Intervals
   , Interval
@@ -37,13 +33,18 @@
   , posToInterval
   , takeI
   , dropI
+  , getIntervalFile
+  , iLength
+  , fuseIntervals
+  , setIntervalFile
 
     -- * Ranges
   , Range
-  , Range'
+  , Range'(..)
   , rangeInvariant
   , consecutiveAndSeparated
   , intervalsToRange
+  , intervalToRange
   , rangeIntervals
   , rangeFile
   , rightMargin
@@ -52,6 +53,7 @@
   , rStart, rStart'
   , rEnd, rEnd'
   , rangeToInterval
+  , rangeToIntervalWithFile
   , continuous
   , continuousPerLine
   , PrintRange(..)
@@ -68,15 +70,14 @@
   , fuseRanges
   , beginningOf
   , beginningOfFile
-
-    -- * Tests
-  , tests
+  , interleaveRanges
   ) where
 
 import Prelude hiding (null)
 
 import Control.Applicative hiding (empty)
 import Control.Monad
+import Control.Monad.Writer (runWriter, Writer, tell)
 
 import Data.Foldable (Foldable)
 import qualified Data.Foldable as Fold
@@ -95,14 +96,11 @@
 
 import GHC.Generics (Generic)
 
-import Test.QuickCheck.All
-
-import Agda.Utils.FileName hiding (tests)
-import Agda.Utils.List hiding (tests)
+import Agda.Utils.FileName
+import Agda.Utils.List
 import qualified Agda.Utils.Maybe.Strict as Strict
 import Agda.Utils.Null
 import Agda.Utils.Pretty
-import Agda.Utils.QuickCheck
 
 #include "undefined.h"
 import Agda.Utils.Impossible
@@ -173,6 +171,11 @@
 setIntervalFile f (Interval p1 p2) =
   Interval (p1 { srcFile = f }) (p2 { srcFile = f })
 
+-- | Gets the 'srcFile' component of the interval. Because of the invariant,
+--   they are both the same.
+getIntervalFile :: Interval' a -> a
+getIntervalFile = srcFile . iStart
+
 -- | Converts a file name and two positions to an interval.
 posToInterval ::
   a -> PositionWithoutFile -> PositionWithoutFile -> Interval' a
@@ -615,7 +618,7 @@
   pretty (PrintRange a) = pretty a <+> parens (text "at" <+> pretty (getRange a))
 
 {--------------------------------------------------------------------------
-    Functions on postitions and ranges
+    Functions on positions and ranges
  --------------------------------------------------------------------------}
 
 -- | The first position in a file: position 1, line 1, column 1.
@@ -825,216 +828,36 @@
 withRangeOf :: (SetRange t, HasRange u) => t -> u -> t
 x `withRangeOf` y = setRange (getRange y) x
 
-------------------------------------------------------------------------
--- Test suite
-
--- | The positions corresponding to the interval. The positions do not
--- refer to characters, but to the positions between characters, with
--- zero pointing to the position before the first character.
-iPositions :: Interval' a -> Set Int32
-iPositions i = Set.fromList [posPos (iStart i) .. posPos (iEnd i)]
-
--- | The positions corresponding to the range, including the
--- end-points.
-rPositions :: Range' a -> Set Int32
-rPositions r = Set.unions (map iPositions $ rangeIntervals r)
-
--- | Constructs the least interval containing all the elements in the
--- set.
-makeInterval :: Set Int32 -> Set Int32
-makeInterval s
-  | Set.null s = Set.empty
-  | otherwise  = Set.fromList [Set.findMin s .. Set.findMax s]
-
-prop_iLength :: Interval' Integer -> Bool
-prop_iLength i = iLength i >= 0
-
-prop_startPos' :: Bool
-prop_startPos' = positionInvariant (startPos' ())
-
-prop_startPos :: Maybe AbsolutePath -> Bool
-prop_startPos = positionInvariant . startPos
-
-prop_noRange :: Bool
-prop_noRange = rangeInvariant (noRange :: Range)
-
-prop_takeI_dropI :: Interval' Integer -> Property
-prop_takeI_dropI i =
-  forAll (choose (0, toInteger $ iLength i)) $ \n ->
-    let s = genericReplicate n ' '
-        t = takeI s i
-        d = dropI s i
-    in
-    intervalInvariant t &&
-    intervalInvariant d &&
-    fuseIntervals t d == i
-
-prop_posToRange' ::
-  Integer -> PositionWithoutFile -> PositionWithoutFile -> Bool
-prop_posToRange' f p1 p2 =
-  rangeInvariant (posToRange' f p1 p2)
-
-prop_posToRange :: Position' Integer -> Position' Integer -> Bool
-prop_posToRange p1 p2 =
-  rangeInvariant (posToRange p1 (p2 { srcFile = srcFile p1 }))
-
-prop_intervalToRange :: Integer -> IntervalWithoutFile -> Bool
-prop_intervalToRange f i = rangeInvariant (intervalToRange f i)
-
-rangeToIntervalPropertyTemplate ::
-  Ord a =>
-  (Range' Integer -> Maybe (Interval' a)) ->
-  Range' Integer -> Bool
-rangeToIntervalPropertyTemplate r2i r = case r2i r of
-  Nothing -> r == noRange
-  Just i  ->
-    r /= noRange
-      &&
-    intervalInvariant i
-      &&
-    iPositions i == makeInterval (rPositions r)
-
-prop_rangeToIntervalWithFile :: Range' Integer -> Bool
-prop_rangeToIntervalWithFile =
-  rangeToIntervalPropertyTemplate rangeToIntervalWithFile
-
-prop_rangeToInterval :: Range' Integer -> Bool
-prop_rangeToInterval =
-  rangeToIntervalPropertyTemplate rangeToInterval
-
-prop_continuous :: Range -> Bool
-prop_continuous r =
-  rangeInvariant cr &&
-  rPositions cr == makeInterval (rPositions r)
-  where cr = continuous r
-
-prop_continuousPerLine :: Range -> Bool
-prop_continuousPerLine r =
-  rangeInvariant r'
-    &&
-  distinct lineNumbers
-    &&
-  rangeFile r' == rangeFile r
+-- | Interleaves two streams of ranged elements
+--
+--   It will report the conflicts as a list of conflicting pairs.
+--   In case of conflict, the element with the earliest start position
+--   is placed first. In case of a tie, the element with the earliest
+--   ending position is placed first. If both tie, the element from the
+--   first list is placed first.
+interleaveRanges :: (HasRange a) => [a] -> [a] -> ([a], [(a,a)])
+interleaveRanges as bs = runWriter$ go as bs
   where
-  r' = continuousPerLine r
-
-  lineNumbers = concatMap lines (rangeIntervals r')
-    where
-    lines i | s == e    = [s]
-            | otherwise = [s, e]
-      where
-      s = posLine (iStart i)
-      e = posLine (iEnd   i)
-
-prop_fuseIntervals :: Interval' Integer -> Property
-prop_fuseIntervals i1 =
-  forAll (intervalInSameFileAs i1) $ \i2 ->
-    let i = fuseIntervals i1 i2 in
-    intervalInvariant i &&
-    iPositions i ==
-      makeInterval (Set.union (iPositions i1) (iPositions i2))
-
-prop_fuseRanges :: Range -> Property
-prop_fuseRanges r1 =
-  forAll (rangeInSameFileAs r1) $ \r2 ->
-    let r = fuseRanges r1 r2 in
-    rangeInvariant r
-      &&
-    rPositions r == Set.union (rPositions r1) (rPositions r2)
-
-prop_beginningOf :: Range -> Bool
-prop_beginningOf r = rangeInvariant (beginningOf r)
-
-prop_beginningOfFile :: Range -> Bool
-prop_beginningOfFile r = rangeInvariant (beginningOfFile r)
-
-instance Arbitrary a => Arbitrary (Position' a) where
-  arbitrary = do
-    srcFile       <- arbitrary
-    Positive pos' <- arbitrary
-    let pos  = fromInteger pos'
-        line = pred pos `div` 10 + 1
-        col  = pred pos `mod` 10 + 1
-    return (Pn {srcFile = srcFile, posPos = pos,
-                posLine = line, posCol = col })
-
--- | Generates an interval located in the same file as the given
--- interval.
-
-intervalInSameFileAs ::
-  (Arbitrary a, Ord a) => Interval' a -> Gen (Interval' a)
-intervalInSameFileAs i =
-  setIntervalFile (srcFile $ iStart i) <$>
-    (arbitrary :: Gen IntervalWithoutFile)
-
-prop_intervalInSameFileAs :: Interval' Integer -> Property
-prop_intervalInSameFileAs i =
-  forAll (intervalInSameFileAs i) $ \i' ->
-    intervalInvariant i' &&
-    srcFile (iStart i) == srcFile (iStart i')
-
--- | Generates a range located in the same file as the given
--- range (if possible).
-
-rangeInSameFileAs :: (Arbitrary a, Ord a) => Range' a -> Gen (Range' a)
-rangeInSameFileAs NoRange      = arbitrary
-rangeInSameFileAs (Range f is) = do
-  Range _f is <- arbitrary `suchThat` (not . null)
-  return $ Range (f `asTypeOf` _f) is
-
-prop_rangeInSameFileAs :: Range' Integer -> Property
-prop_rangeInSameFileAs r =
-  forAll (rangeInSameFileAs r) $ \r' ->
-    rangeInvariant r'
-      &&
-    case (r, r') of
-      (NoRange, _)            -> True
-      (Range f _, Range f' _) -> f == f'
-      (Range _ _, NoRange)    -> False
-
-instance (Arbitrary a, Ord a) => Arbitrary (Interval' a) where
-  arbitrary = do
-    (p1, p2 :: Position' a) <- liftM2 (,) arbitrary arbitrary
-    let [p1', p2'] = sort [p1, p2 { srcFile = srcFile p1 }]
-    return (Interval p1' p2')
-
-instance (Ord a, Arbitrary a) => Arbitrary (Range' a) where
-  arbitrary = do
-    f <- arbitrary
-    intervalsToRange f . fuse . sort <$> arbitrary
-    where
-    fuse (i1 : i2 : is)
-      | iEnd i1 >= iStart i2 = fuse (fuseIntervals i1 i2 : is)
-      | otherwise            = i1 : fuse (i2 : is)
-    fuse is = is
-
-instance CoArbitrary a => CoArbitrary (Position' a)
-instance CoArbitrary a => CoArbitrary (Interval' a)
-instance CoArbitrary a => CoArbitrary (Range' a)
-
-prop_positionInvariant :: Position' Integer -> Bool
-prop_positionInvariant = positionInvariant
-
-prop_intervalInvariant :: Interval' Integer -> Bool
-prop_intervalInvariant = intervalInvariant
-
-prop_rangeInvariant :: Range -> Bool
-prop_rangeInvariant = rangeInvariant
-
-instance Show (Position' Integer) where show = show . fmap Strict.Just
-instance Show (Interval' Integer) where show = show . fmap Strict.Just
-instance Show (Range'    Integer) where show = show . fmap Strict.Just
+    go []         as = return as
+    go as         [] = return as
+    go as@(a:as') bs@(b:bs') =
+      let ra = getRange a
+          rb = getRange b
 
-------------------------------------------------------------------------
--- * All tests
-------------------------------------------------------------------------
+          ra0 = rStart ra
+          rb0 = rStart rb
 
--- Template Haskell hack to make the following $quickCheckAll work
--- under ghc-7.8.
-return [] -- KEEP!
+          ra1 = rEnd ra
+          rb1 = rEnd rb
+      in
+      if ra1 <= rb0 then
+        (a:) <$> go as' bs
+      else if rb1 <= ra0 then
+        (b:) <$> go as bs'
+      else do
+        tell [(a,b)]
+        if ra0 < rb0 || (ra0 == rb0 && ra1 <= rb1) then
+          (a:) <$> go as' bs
+        else
+          (b:) <$> go as bs'
 
--- | Test suite.
-tests :: IO Bool
-tests = do
-  putStrLn "Agda.Syntax.Position"
-  $quickCheckAll
diff --git a/src/full/Agda/Syntax/Scope/Base.hs b/src/full/Agda/Syntax/Scope/Base.hs
--- a/src/full/Agda/Syntax/Scope/Base.hs
+++ b/src/full/Agda/Syntax/Scope/Base.hs
@@ -1,10 +1,7 @@
 {-# LANGUAGE CPP                 #-}
 {-# LANGUAGE DeriveDataTypeable  #-}
 {-# LANGUAGE GADTs               #-}
-{-# LANGUAGE LambdaCase          #-}
-{-# LANGUAGE RankNTypes          #-}
 {-# LANGUAGE ScopedTypeVariables #-}
-{-# LANGUAGE TupleSections       #-}
 
 {-| This module defines the notion of a scope and operations on scopes.
 -}
@@ -73,12 +70,12 @@
 type ScopeNameSpaces = [(NameSpaceId, NameSpace)]
 
 localNameSpace :: Access -> NameSpaceId
-localNameSpace PublicAccess  = PublicNS
-localNameSpace PrivateAccess = PrivateNS
-localNameSpace OnlyQualified = OnlyQualifiedNS
+localNameSpace PublicAccess    = PublicNS
+localNameSpace PrivateAccess{} = PrivateNS
+localNameSpace OnlyQualified   = OnlyQualifiedNS
 
 nameSpaceAccess :: NameSpaceId -> Access
-nameSpaceAccess PrivateNS = PrivateAccess
+nameSpaceAccess PrivateNS = PrivateAccess Inserted
 nameSpaceAccess _         = PublicAccess
 
 -- | Get a 'NameSpace' from 'Scope'.
@@ -662,7 +659,7 @@
                [ qual c (build ms' exportedNamesInScope $ moduleScope a)
                | (c, a) <- Map.toList $ scopeImports root
                , let -- get the suffixes of c in ms
-                     ms' = mapMaybe (maybePrefixMatch $ C.qnameParts c) ms
+                     ms' = mapMaybe (List.stripPrefix $ C.qnameParts c) ms
                , not $ null ms' ]
     qual c = Map.mapKeys (q c)
       where
@@ -791,7 +788,13 @@
 
 -- * Inverse look-up
 
-data AllowAmbiguousNames = AmbiguousAnything | AmbiguousConstructors | AmbiguousNothing
+data AllowAmbiguousNames
+  = AmbiguousAnything
+      -- ^ Used for instance arguments to check whether a name is in scope,
+      --   but we do not care whether is is ambiguous
+  | AmbiguousConProjs
+      -- ^ Ambiguous constructors or projections.
+  | AmbiguousNothing
   deriving (Eq)
 
 isNameInScope :: A.QName -> ScopeInfo -> Bool
@@ -803,7 +806,7 @@
 --   Sort by length, shortest first.
 
 inverseScopeLookup :: Either A.ModuleName A.QName -> ScopeInfo -> [C.QName]
-inverseScopeLookup = inverseScopeLookup' AmbiguousConstructors
+inverseScopeLookup = inverseScopeLookup' AmbiguousConProjs
 
 inverseScopeLookup' :: AllowAmbiguousNames -> Either A.ModuleName A.QName -> ScopeInfo -> [C.QName]
 inverseScopeLookup' amb name scope = billToPure [ Scoping , InverseScopeLookup ] $
@@ -829,7 +832,11 @@
     unique (_:_:_) = False
 
     unambiguousModule q = amb == AmbiguousAnything || unique (scopeLookup q scope :: [AbstractModule])
-    unambiguousName   q = amb == AmbiguousAnything || unique xs || amb == AmbiguousConstructors && all ((ConName ==) . anameKind) xs
+    unambiguousName   q = amb == AmbiguousAnything
+        || unique xs
+        || amb == AmbiguousConProjs
+           && (all ((ConName ==) . anameKind) xs
+            || all ((FldName ==) . anameKind) xs)
       where xs = scopeLookup q scope
 
 recomputeInverseScopeMaps :: ScopeInfo -> ScopeInfo
diff --git a/src/full/Agda/Syntax/Scope/Monad.hs b/src/full/Agda/Syntax/Scope/Monad.hs
--- a/src/full/Agda/Syntax/Scope/Monad.hs
+++ b/src/full/Agda/Syntax/Scope/Monad.hs
@@ -1,19 +1,13 @@
 {-# LANGUAGE CPP                      #-}
-{-# LANGUAGE LambdaCase               #-}
 {-# LANGUAGE NondecreasingIndentation #-}
-{-# LANGUAGE TupleSections            #-}
 
-#if __GLASGOW_HASKELL__ >= 710
-{-# LANGUAGE FlexibleContexts #-}
-#endif
-
 {-| The scope monad with operations.
 -}
 
 module Agda.Syntax.Scope.Monad where
 
 import Prelude hiding (mapM)
-import Control.Arrow (first, second)
+import Control.Arrow (first, second, (***))
 import Control.Applicative
 import Control.Monad hiding (mapM, forM)
 import Control.Monad.Writer hiding (mapM, forM)
@@ -32,6 +26,7 @@
 import Agda.Syntax.Fixity
 import Agda.Syntax.Abstract.Name as A
 import qualified Agda.Syntax.Abstract as A
+import Agda.Syntax.Abstract (ScopeCopyInfo(..), initCopyInfo)
 import Agda.Syntax.Concrete as C
 import Agda.Syntax.Scope.Base
 
@@ -205,12 +200,14 @@
 
 -- * Resolving names
 
-data ResolvedName = VarName A.Name
-                  | DefinedName Access AbstractName
-                  | FieldName AbstractName           -- ^ record fields names need to be distinguished to parse copatterns
-                  | ConstructorName [AbstractName]
-                  | PatternSynResName AbstractName
-                  | UnknownName
+data ResolvedName
+  = VarName A.Name
+  | DefinedName Access AbstractName
+  | FieldName [AbstractName]
+      -- ^ record fields names need to be distinguished to parse copatterns
+  | ConstructorName [AbstractName]
+  | PatternSynResName AbstractName
+  | UnknownName
   deriving (Show, Eq)
 
 -- | Look up the abstract name referred to by a given concrete name.
@@ -254,8 +251,8 @@
         ds       | all ((==ConName) . anameKind . fst) ds ->
           return $ ConstructorName $ map (upd . fst) ds
 
-        [(d, a)] | anameKind d == FldName ->
-          return $ FieldName $ upd d
+        ds       | all ((==FldName) . anameKind . fst) ds ->
+          return $ FieldName $ map (upd . fst) ds
 
         [(d, a)] | anameKind d == PatternSynName ->
           return $ PatternSynResName $ upd d
@@ -290,14 +287,16 @@
   case r of
     VarName y           -> return $ namesToNotation x y
     DefinedName _ d     -> return $ notation d
-    FieldName d         -> return $ notation d
-    ConstructorName ds  -> case mergeNotations $ map notation ds of
-                             [n] -> return n
-                             _   -> __IMPOSSIBLE__
+    FieldName ds        -> return $ oneNotation ds
+    ConstructorName ds  -> return $ oneNotation ds
     PatternSynResName n -> return $ notation n
     UnknownName         -> __IMPOSSIBLE__
   where
     notation = namesToNotation x . qnameName . anameName
+    oneNotation ds =
+      case mergeNotations $ map notation ds of
+        [n] -> n
+        _   -> __IMPOSSIBLE__
 
 -- * Binding names
 
@@ -310,17 +309,27 @@
 bindName acc kind x y = do
   r  <- resolveName (C.QName x)
   ys <- case r of
-    FieldName d        -> typeError $ ClashingDefinition (C.QName x) $ anameName d
-    DefinedName _ d    -> typeError $ ClashingDefinition (C.QName x) $ anameName d
-    VarName z          -> typeError $ ClashingDefinition (C.QName x) $ A.qualify (mnameFromList []) z
-    ConstructorName [] -> __IMPOSSIBLE__
-    ConstructorName ds
-      | kind == ConName && all ((==ConName) . anameKind) ds -> return [ AbsName y kind Defined ]
-      | otherwise -> typeError $ ClashingDefinition (C.QName x) $ anameName (headWithDefault __IMPOSSIBLE__ ds)
-    PatternSynResName n -> typeError $ ClashingDefinition (C.QName x) $ anameName n
-    UnknownName         -> return [AbsName y kind Defined]
-  modifyCurrentScope $ addNamesToScope (localNameSpace acc) x ys
+    -- Binding an anonymous declaration always succeeds.
+    -- In case it's not the first one, we simply remove the one that came before
+    UnknownName   | isNoName x -> success
+    DefinedName{} | isNoName x -> success <* modifyCurrentScope (removeNameFromScope PrivateNS x)
+    DefinedName _ d     -> clash $ anameName d
+    VarName z           -> clash $ A.qualify (mnameFromList []) z
+    FieldName       ds  -> ambiguous FldName ds
+    ConstructorName ds  -> ambiguous ConName ds
+    PatternSynResName n -> clash $ anameName n
+    UnknownName         -> success
+  let ns = if isNoName x then PrivateNS else localNameSpace acc
+  modifyCurrentScope $ addNamesToScope ns x ys
+  where
+    success = return [ AbsName y kind Defined ]
+    clash   = typeError . ClashingDefinition (C.QName x)
 
+    ambiguous k ds@(d:_) =
+      if kind == k && all ((==k) . anameKind) ds
+      then success else clash $ anameName d
+    ambiguous k [] = __IMPOSSIBLE__
+
 -- | Rebind a name. Use with care!
 --   Ulf, 2014-06-29: Currently used to rebind the name defined by an
 --   unquoteDecl, which is a 'QuotableName' in the body, but a 'DefinedName'
@@ -348,16 +357,28 @@
   where
     stripN = Map.filterWithKey $ const . not . isNoName
 
-type Out = (A.Ren A.ModuleName, A.Ren A.QName)
-type WSM = StateT Out ScopeM
+type WSM = StateT ScopeMemo ScopeM
 
+data ScopeMemo = ScopeMemo
+  { memoNames   :: A.Ren A.QName
+  , memoModules :: [(ModuleName, (ModuleName, Bool))]
+    -- ^ Bool: did we copy recursively? We need to track this because we don't
+    --   copy recursively when creating new modules for reexported functions
+    --   (issue1985), but we might need to copy recursively later.
+  }
+
+memoToScopeInfo :: ScopeMemo -> ScopeCopyInfo
+memoToScopeInfo (ScopeMemo names mods) =
+  ScopeCopyInfo { renNames   = names
+                , renModules = [ (x, y) | (x, (y, _)) <- mods ] }
+
 -- | Create a new scope with the given name from an old scope. Renames
 --   public names in the old scope to match the new name and returns the
 --   renamings.
-copyScope :: C.QName -> A.ModuleName -> Scope -> ScopeM (Scope, (A.Ren A.ModuleName, A.Ren A.QName))
-copyScope oldc new s = first (inScopeBecause $ Applied oldc) <$> runStateT (copy new s) ([], [])
+copyScope :: C.QName -> A.ModuleName -> Scope -> ScopeM (Scope, ScopeCopyInfo)
+copyScope oldc new0 s = (inScopeBecause (Applied oldc) *** memoToScopeInfo) <$> runStateT (copy new0 s) (ScopeMemo [] [])
   where
-    copy :: A.ModuleName -> Scope -> StateT (A.Ren A.ModuleName, A.Ren A.QName) ScopeM Scope
+    copy :: A.ModuleName -> Scope -> WSM Scope
     copy new s = do
       lift $ reportSLn "scope.copy" 20 $ "Copying scope " ++ show old ++ " to " ++ show new
       lift $ reportSLn "scope.copy" 50 $ show s
@@ -388,12 +409,12 @@
             _ -> lensAnameName f d
 
         -- Adding to memo structure.
-        addName x y = modify $ second $ ((x, y):)
-        addMod  x y = modify $ first  $ ((x, y):)
+        addName x y     = modify $ \ i -> i { memoNames   = (x, y)        : memoNames   i }
+        addMod  x y rec = modify $ \ i -> i { memoModules = (x, (y, rec)) : filter ((/= x) . fst) (memoModules i) }
 
         -- Querying the memo structure.
-        findName x = lookup x <$> gets snd
-        findMod  x = lookup x <$> gets fst
+        findName x = lookup x <$> gets memoNames
+        findMod  x = lookup x <$> gets memoModules
 
         refresh :: A.Name -> WSM A.Name
         refresh x = do
@@ -403,49 +424,84 @@
         -- Change a binding M.x -> old.M'.y to M.x -> new.M'.y
         renName :: A.QName -> WSM A.QName
         renName x = do
+          -- Issue 1985: For re-exported names we can't use new' as the
+          -- module, since it has the wrong telescope. Example:
+          --
+          --    module M1 (A : Set) where
+          --      module M2 (B : Set) where
+          --        postulate X : Set
+          --      module M3 (C : Set) where
+          --        module M4 (D E : Set) where
+          --          open M2 public
+          --
+          --    module M = M1.M3 A C
+          --
+          -- Here we can't copy M1.M2.X to M.M4.X since we need
+          -- X : (B : Set) → Set, but M.M4 has telescope (D E : Set). Thus, we
+          -- would break the invariant that all functions in a module share the
+          -- module telescope. Instead we copy M1.M2.X to M.M2.X for a fresh
+          -- module M2 that gets the right telescope.
+          m <- case x `isInModule` old of
+                 True  -> return new'
+                 False -> renMod' False (qnameModule x)
+                          -- Don't copy recursively here, we only know that the
+                          -- current name x should be copied.
           -- Generate a fresh name for the target.
-          y <- A.qualify new' <$> refresh (qnameName x)
-          lift $ reportSLn "scope.copy" 50 $ "  Copying " ++ show x ++ " to " ++ show y
           -- Andreas, 2015-08-11 Issue 1619:
           -- Names copied by a module macro should get the module macro's
           -- range as declaration range
           -- (maybe rather the one of the open statement).
           -- For now, we just set their range
           -- to the new module name's one, which fixes issue 1619.
-          y <- return $ setRange rnew y
+          y <- setRange rnew . A.qualify m <$> refresh (qnameName x)
+          lift $ reportSLn "scope.copy" 50 $ "  Copying " ++ show x ++ " to " ++ show y
           addName x y
           return y
 
         -- Change a binding M.x -> old.M'.y to M.x -> new.M'.y
         renMod :: A.ModuleName -> WSM A.ModuleName
-        renMod x = do
+        renMod = renMod' True
+
+        renMod' rec x = do
           -- Andreas, issue 1607:
           -- If we have already copied this module, return the copy.
-          ifJustM (findMod x) return $ {- else -} do
+          z <- findMod x
+          case z of
+            Just (y, False) | rec -> y <$ copyRec x y
+            Just (y, _)           -> return y
+            Nothing -> do
+            -- Ulf (issue 1985): If copying a reexported module we put it at the
+            -- top-level, to make sure we don't mess up the invariant that all
+            -- (abstract) names M.f share the argument telescope of M.
+            let newM | x `isSubModuleOf` old = newL
+                     | otherwise             = mnameToList new0
 
-          y <- do
-             -- Andreas, Jesper, 2015-07-02: Issue 1597
-             -- Don't blindly drop a prefix of length of the old qualifier.
-             -- If things are imported by open public they do not have the old qualifier
-             -- as prefix.  Those need just to be linked, not copied.
-             -- return $ A.mnameFromList $ (newL ++) $ drop (size old) $ A.mnameToList x
-             -- caseMaybe (maybePrefixMatch (A.mnameToList old) (A.mnameToList x)) (return x) $ \ suffix -> do
-             --   return $ A.mnameFromList $ newL ++ suffix
-             -- Ulf, 2016-02-22: #1726
-             -- We still need to copy modules from 'open public'. Same as in renName.
-             y <- refresh (last $ A.mnameToList x)
-             return $ A.mnameFromList $ newL ++ [y]
-          -- Andreas, Jesper, 2015-07-02: Issue 1597
-          -- Don't copy a module over itself, it will just be emptied of its contents.
-          if (x == y) then return x else do
-          lift $ reportSLn "scope.copy" 50 $ "  Copying module " ++ show x ++ " to " ++ show y
-          addMod x y
-          -- We need to copy the contents of included modules recursively
-          lift $ createModule False y
-          s0 <- lift $ getNamedScope x
-          s  <- withCurrentModule' y $ copy y s0
-          lift $ modifyNamedScope y (const s)
-          return y
+            y <- do
+               -- Andreas, Jesper, 2015-07-02: Issue 1597
+               -- Don't blindly drop a prefix of length of the old qualifier.
+               -- If things are imported by open public they do not have the old qualifier
+               -- as prefix.  Those need just to be linked, not copied.
+               -- return $ A.mnameFromList $ (newL ++) $ drop (size old) $ A.mnameToList x
+               -- caseMaybe (stripPrefix (A.mnameToList old) (A.mnameToList x)) (return x) $ \ suffix -> do
+               --   return $ A.mnameFromList $ newL ++ suffix
+               -- Ulf, 2016-02-22: #1726
+               -- We still need to copy modules from 'open public'. Same as in renName.
+               y <- refresh (last $ A.mnameToList x)
+               return $ A.mnameFromList $ newM ++ [y]
+            -- Andreas, Jesper, 2015-07-02: Issue 1597
+            -- Don't copy a module over itself, it will just be emptied of its contents.
+            if (x == y) then return x else do
+            lift $ reportSLn "scope.copy" 50 $ "  Copying module " ++ show x ++ " to " ++ show y
+            addMod x y rec
+            lift $ createModule False y
+            -- We need to copy the contents of included modules recursively (only when 'rec')
+            when rec $ copyRec x y
+            return y
+          where
+            copyRec x y = do
+              s0 <- lift $ getNamedScope x
+              s  <- withCurrentModule' y $ copy y s0
+              lift $ modifyNamedScope y (const s)
 
 -- | Apply an import directive and check that all the names mentioned actually
 --   exist.
@@ -648,10 +704,9 @@
             realClash _              = True
 
             -- No ambiguity if concrete identifier is only mapped to
-            -- constructor names.
-            defClash (_, (qs0, qs1)) =
-              any ((/= ConName) . anameKind) (qs0 ++ qs1)
-
+            -- constructor names or only to projection names.
+            defClash (_, (qs0, qs1)) = not $ all (== ConName) ks || all (==FldName) ks
+              where ks = map anameKind $ qs0 ++ qs1
         -- We report the first clashing exported identifier.
         unlessNull (filter (\ x -> realClash x && defClash x) defClashes) $
           \ ((x, (_, q:_)) : _) -> typeError $ ClashingDefinition (C.QName x) (anameName q)
diff --git a/src/full/Agda/Syntax/Translation/AbstractToConcrete.hs b/src/full/Agda/Syntax/Translation/AbstractToConcrete.hs
--- a/src/full/Agda/Syntax/Translation/AbstractToConcrete.hs
+++ b/src/full/Agda/Syntax/Translation/AbstractToConcrete.hs
@@ -1,16 +1,6 @@
 {-# LANGUAGE CPP                    #-}
-{-# LANGUAGE FlexibleInstances      #-}
-{-# LANGUAGE FunctionalDependencies #-}
-{-# LANGUAGE LambdaCase             #-}
-{-# LANGUAGE MultiParamTypeClasses  #-}
-{-# LANGUAGE PatternGuards          #-}
-{-# LANGUAGE TupleSections          #-}
 {-# LANGUAGE UndecidableInstances   #-}
 
-#if __GLASGOW_HASKELL__ >= 710
-{-# LANGUAGE FlexibleContexts #-}
-#endif
-
 -- {-# OPTIONS -fwarn-unused-binds #-}
 
 {-| The translation of abstract syntax to concrete syntax has two purposes.
@@ -67,6 +57,7 @@
 import Agda.Utils.Maybe
 import Agda.Utils.Monad
 import Agda.Utils.Null
+import Agda.Utils.Singleton
 import Agda.Utils.Tuple
 import Agda.Utils.Pretty (prettyShow)
 
@@ -155,11 +146,18 @@
     [] -> do
       let y = qnameToConcrete x
       if isUnderscore y
+        -- -- || any (isUnderscore . A.nameConcrete) (A.mnameToList $ A.qnameModule x)
         then return y
         else return $ C.Qual (C.Name noRange [Id empty]) y
         -- this is what happens for names that are not in scope (private names)
 
 lookupModule :: A.ModuleName -> AbsToCon C.QName
+lookupModule (A.MName []) = return $ C.QName $ C.Name noRange [Id "-1"]
+  -- Andreas, 2016-10-10 it can happen that we have an empty module name
+  -- for instance when we query the current module inside the
+  -- frontmatter or module telescope of the top level module.
+  -- In this case, we print it as an invalid module name.
+  -- (Should only affect debug printing.)
 lookupModule x =
     do  scope <- asks currentScope
         case inverseScopeLookupModule x scope of
@@ -233,19 +231,24 @@
 
 -- Dealing with private definitions ---------------------------------------
 
+-- | Add @abstract@, @private@, @instance@ modifiers.
 withAbstractPrivate :: DefInfo -> AbsToCon [C.Declaration] -> AbsToCon [C.Declaration]
 withAbstractPrivate i m =
-    case (defAccess i, defAbstract i) of
-        (PublicAccess, ConcreteDef) -> m
-        (p,a)                       ->
-            do  ds <- m
-                return $ abst a $ priv p $ ds
+    priv (defAccess i)
+      . abst (defAbstract i)
+      . addInstanceB (defInstance i == InstanceDef)
+      <$> m
     where
-        priv PrivateAccess ds = [ C.Private (getRange ds) ds ]
-        priv _ ds             = ds
-        abst AbstractDef ds   = [ C.Abstract (getRange ds) ds ]
-        abst _ ds             = ds
+        priv (PrivateAccess UserWritten)
+                         ds = [ C.Private  (getRange ds) UserWritten ds ]
+        priv _           ds = ds
+        abst AbstractDef ds = [ C.Abstract (getRange ds) ds ]
+        abst ConcreteDef ds = ds
 
+addInstanceB :: Bool -> [C.Declaration] -> [C.Declaration]
+addInstanceB True  ds = [ C.InstanceB (getRange ds) ds ]
+addInstanceB False ds = ds
+
 -- The To Concrete Class --------------------------------------------------
 
 class ToConcrete a c | a -> c where
@@ -347,7 +350,7 @@
   bindToConcrete x = bindName x
 
 instance ToConcrete A.QName C.QName where
-  toConcrete = lookupQName AmbiguousConstructors
+  toConcrete = lookupQName AmbiguousConProjs
 
 instance ToConcrete A.ModuleName C.QName where
   toConcrete = lookupModule
@@ -357,7 +360,10 @@
 instance ToConcrete A.Expr C.Expr where
     toConcrete (Var x)            = Ident . C.QName <$> toConcrete x
     toConcrete (Def x)            = Ident <$> toConcrete x
-    toConcrete (Proj x)           = Ident <$> toConcrete x
+    toConcrete (Proj ProjPrefix (AmbQ (x:_))) = Ident <$> toConcrete x
+    toConcrete (Proj _          (AmbQ (x:_))) =
+      C.Dot (getRange x) . Ident <$> toConcrete x
+    toConcrete Proj{}             = __IMPOSSIBLE__
     toConcrete (A.Macro x)        = Ident <$> toConcrete x
     toConcrete (Con (AmbQ (x:_))) = Ident <$> toConcrete x
     toConcrete (Con (AmbQ []))    = __IMPOSSIBLE__
@@ -380,6 +386,9 @@
       C.Underscore (getRange i) $
         prettyShow . NamedMeta (metaNameSuggestion i) . MetaId . metaId <$> metaNumber i
 
+    toConcrete (A.Dot i e) =
+      C.Dot (getRange i) <$> toConcrete e
+
     toConcrete e@(A.App i e1 e2)    =
         tryToRecoverOpApp e
         -- or fallback to App
@@ -462,7 +471,7 @@
                            Irrelevant -> addDot a e
                            NonStrict  -> addDot a (addDot a e)
                            _          -> e
-            addDot a e = Dot (getRange a) e
+            addDot a e = C.Dot (getRange a) e
             mkArg (Arg info e) = case getHiding info of
                                           Hidden    -> HiddenArg   (getRange e) (unnamed e)
                                           Instance  -> InstanceArg (getRange e) (unnamed e)
@@ -567,8 +576,9 @@
 instance ToConcrete LetBinding [C.Declaration] where
     bindToConcrete (LetBind i info x t e) ret =
         bindToConcrete x $ \x ->
-        do (t,(e, [], [], [])) <- toConcrete (t, A.RHS e)
-           ret [ C.TypeSig info x t
+        do (t,(e, [], [], [])) <- toConcrete (t, A.RHS e Nothing)
+           ret $ addInstanceB (getHiding info == Instance) $
+               [ C.TypeSig info x t
                , C.FunClause (C.LHS (C.IdentP $ C.QName x) [] [] [])
                              e C.NoWhere False
                ]
@@ -577,7 +587,7 @@
         p <- toConcrete p
         e <- toConcrete e
         ret [ C.FunClause (C.LHS p [] [] []) (C.RHS e) NoWhere False ]
-    bindToConcrete (LetApply i x modapp _ _ _) ret = do
+    bindToConcrete (LetApply i x modapp _ _) ret = do
       x' <- unqualify <$> toConcrete x
       modapp <- toConcrete modapp
       let r = getRange modapp
@@ -602,7 +612,9 @@
   bindToConcrete (AsWhereDecls ds@[Section _ am _ _]) ret = do
     ds' <- declsToConcrete ds
     cm  <- unqualify <$> lookupModule am
-    let wh' = (if isNoName cm then AnyWhere else SomeWhere cm) $ ds'
+    -- Andreas, 2016-07-08 I put PublicAccess in the following SomeWhere
+    -- Should not really matter for printing...
+    let wh' = (if isNoName cm then AnyWhere else SomeWhere cm PublicAccess) $ ds'
     local (openModule' am defaultImportDir id) $ ret wh'
   bindToConcrete (AsWhereDecls ds) ret =
     ret . AnyWhere =<< declsToConcrete ds
@@ -633,7 +645,8 @@
 declsToConcrete ds = mergeSigAndDef . concat <$> toConcrete ds
 
 instance ToConcrete A.RHS (C.RHS, [C.Expr], [C.Expr], [C.Declaration]) where
-    toConcrete (A.RHS e) = do
+    toConcrete (A.RHS e (Just c)) = return (C.RHS c, [], [], [])
+    toConcrete (A.RHS e Nothing) = do
       e <- toConcrete e
       return (C.RHS e, [], [], [])
     toConcrete A.AbsurdRHS = return (C.AbsurdRHS, [], [], [])
@@ -658,14 +671,15 @@
 instance ToConcrete (Constr A.Constructor) C.Declaration where
   toConcrete (Constr (A.ScopedDecl scope [d])) =
     withScope scope $ toConcrete (Constr d)
-  toConcrete (Constr (A.Axiom _ i info x t)) = do
+  toConcrete (Constr (A.Axiom _ i info Nothing x t)) = do
     x' <- unsafeQNameToName <$> toConcrete x
     t' <- toConcreteTop t
     return $ C.TypeSig info x' t'
+  toConcrete (Constr (A.Axiom _ _ _ (Just _) _ _)) = __IMPOSSIBLE__
   toConcrete (Constr d) = head <$> toConcrete d
 
 instance ToConcrete a C.LHS => ToConcrete (A.Clause' a) [C.Declaration] where
-  toConcrete (A.Clause lhs rhs wh catchall) =
+  toConcrete (A.Clause lhs _ rhs wh catchall) =
       bindToConcrete lhs $ \lhs ->
         case lhs of
           C.LHS p wps _ _ -> do
@@ -693,12 +707,16 @@
   toConcrete (ScopedDecl scope ds) =
     withScope scope (declsToConcrete ds)
 
-  toConcrete (Axiom _ i info x t) = do
+  toConcrete (Axiom _ i info mp x t) = do
     x' <- unsafeQNameToName <$> toConcrete x
     withAbstractPrivate i $
       withInfixDecl i x'  $ do
       t' <- toConcreteTop t
-      return [C.Postulate (getRange i) [C.TypeSig info x' t']]
+      return $
+        (case mp of
+           Nothing   -> []
+           Just occs -> [C.Pragma (PolarityPragma noRange x' occs)]) ++
+        [C.Postulate (getRange i) [C.TypeSig info x' t']]
 
   toConcrete (A.Field i x t) = do
     x' <- unsafeQNameToName <$> toConcrete x
@@ -752,7 +770,7 @@
       ds <- declsToConcrete ds
       return [ C.Module (getRange i) x (concat tel) ds ]
 
-  toConcrete (A.Apply i x modapp _ _ _) = do
+  toConcrete (A.Apply i x modapp _ _) = do
     x  <- unsafeQNameToName <$> toConcrete x
     modapp <- toConcrete modapp
     let r = getRange modapp
@@ -799,7 +817,7 @@
     A.BuiltinPragma b e      -> C.BuiltinPragma r b <$> toConcrete e
     A.BuiltinNoDefPragma b x -> C.BuiltinPragma r b . C.Ident <$>
       toConcrete x
-    A.RewritePragma x        -> C.RewritePragma r <$> toConcrete x
+    A.RewritePragma x        -> C.RewritePragma r . singleton <$> toConcrete x
     A.CompiledTypePragma x hs -> do
       x <- toConcrete x
       return $ C.CompiledTypePragma r x hs
@@ -827,11 +845,10 @@
     A.CompiledDataUHCPragma x crd crcs -> do
       x <- toConcrete x
       return $ C.CompiledDataUHCPragma r x crd crcs
-    A.NoSmashingPragma x -> C.NoSmashingPragma r <$> toConcrete x
     A.StaticPragma x -> C.StaticPragma r <$> toConcrete x
     A.InlinePragma x -> C.InlinePragma r <$> toConcrete x
     A.DisplayPragma f ps rhs ->
-      C.DisplayPragma r <$> toConcrete (A.DefP (PatRange noRange) f ps) <*> toConcrete rhs
+      C.DisplayPragma r <$> toConcrete (A.DefP (PatRange noRange) (AmbQ [f]) ps) <*> toConcrete rhs
 
 -- Left hand sides --------------------------------------------------------
 
@@ -845,14 +862,41 @@
           ret $ C.LHS lhs wps [] []
 
 instance ToConcrete A.LHSCore C.Pattern where
-    bindToConcrete = bindToConcrete . lhsCoreToPattern
+  bindToConcrete = bindToConcrete . lhsCoreToPattern
 
 appBrackets' :: [arg] -> Precedence -> Bool
 appBrackets' []    _   = False
 appBrackets' (_:_) ctx = appBrackets ctx
 
--- TODO: bind variables properly
+newtype BindingPattern = BindingPat A.Pattern
+newtype FreshName = FreshenName A.Name
+
+instance ToConcrete FreshName A.Name where
+  bindToConcrete (FreshenName x) ret = bindToConcrete x $ \ y -> ret x{ nameConcrete = y }
+
+-- Takes care of freshening and binding pattern variables, but doesn't actually
+-- translate anything to Concrete.
+instance ToConcrete BindingPattern A.Pattern where
+  bindToConcrete (BindingPat p) ret =
+    case p of
+      A.VarP x               -> bindToConcrete (FreshenName x) $ ret . A.VarP
+      A.WildP{}              -> ret p
+      A.ProjP{}              -> ret p
+      A.AbsurdP{}            -> ret p
+      A.LitP{}               -> ret p
+      A.DotP{}               -> ret p
+      A.ConP i c args        -> bindToConcrete ((map . fmap . fmap) BindingPat args) $ ret . A.ConP i c
+      A.DefP i f args        -> bindToConcrete ((map . fmap . fmap) BindingPat args) $ ret . A.DefP i f
+      A.PatternSynP i f args -> bindToConcrete ((map . fmap . fmap) BindingPat args) $ ret . A.PatternSynP i f
+      A.RecP i args          -> bindToConcrete ((map . fmap)        BindingPat args) $ ret . A.RecP i
+      A.AsP i x p            -> bindToConcrete (FreshenName x) $ \ x ->
+                                bindToConcrete (BindingPat p)  $ \ p ->
+                                ret (A.AsP i x p)
+
 instance ToConcrete A.Pattern C.Pattern where
+  bindToConcrete p ret = do
+    prec <- currentPrecedence
+    bindToConcrete (BindingPat p) (ret <=< withPrecedence prec . toConcrete)
   toConcrete p =
     case p of
       A.VarP x ->
@@ -862,9 +906,15 @@
         return $ C.WildP (getRange i)
 
       A.ConP i (AmbQ []) args        -> __IMPOSSIBLE__
-      p@(A.ConP i xs@(AmbQ (x:_)) args) -> tryOp x (A.ConP i xs) args
-      p@(A.DefP i x args)               -> tryOp x (A.DefP i x)  args
+      A.ConP i xs@(AmbQ (x:_)) args  -> tryOp x (A.ConP i xs) args
 
+      A.ProjP _ _ (AmbQ []) -> __IMPOSSIBLE__
+      A.ProjP i ProjPrefix xs@(AmbQ (x:_)) -> C.IdentP <$> toConcrete x
+      A.ProjP i _ xs@(AmbQ (x:_)) -> C.DotP (getRange x) UserWritten . C.Ident <$> toConcrete x
+
+      A.DefP i (AmbQ []) _ -> __IMPOSSIBLE__
+      A.DefP i xs@(AmbQ (x:_)) args -> tryOp x (A.DefP i xs)  args
+
       A.AsP i x p -> do
         (x, p) <- toConcreteCtx ArgumentCtx (x,p)
         return $ C.AsP (getRange i) x p
@@ -878,20 +928,24 @@
       A.LitP l ->
         return $ C.LitP l
 
-      A.DotP i e  -> do
+      A.DotP i o e -> do
         c <- toConcreteCtx DotPatternCtx e
         case c of
           -- Andreas, 2016-02-04 print ._ pattern as _ pattern,
           -- following the fusing of WildP and ImplicitP.
           C.Underscore{} -> return $ C.WildP $ getRange i
-          _ -> return $ C.DotP (getRange i) c
+          _ -> return $ C.DotP (getRange i) o c
 
       A.PatternSynP i n _ ->
+        -- Ulf, 2016-11-29: This doesn't seem right. The underscore is a list
+        -- of arguments, which we shouldn't really throw away! I guess this
+        -- case is __IMPOSSIBLE__?
         C.IdentP <$> toConcrete n
 
       A.RecP i as ->
         C.RecP (getRange i) <$> mapM (traverse toConcrete) as
     where
+    tryOp :: A.QName -> (A.Patterns -> A.Pattern) -> A.Patterns -> AbsToCon C.Pattern
     tryOp x f args = do
       -- Andreas, 2016-02-04, Issue #1792
       -- To prevent failing of tryToRecoverOpAppP for overapplied operators,
@@ -936,8 +990,10 @@
 
     view p = case p of
       ConP _ (AmbQ (c:_)) ps -> Just (HdCon c, ps)
-      DefP _ f            ps -> Just (HdDef f, ps)
-      _                      -> Nothing
+      DefP _ (AmbQ (f:_)) ps -> Just (HdDef f, ps)
+      _ -> __IMPOSSIBLE__
+      -- ProjP _ _ (AmbQ (d:_))   -> Just (HdDef d, [])   -- ? Andreas, 2016-04-21
+      -- _                      -> Nothing
 
 recoverOpApp :: (ToConcrete a c, HasRange c)
   => ((Precedence -> Bool) -> AbsToCon c -> AbsToCon c)
diff --git a/src/full/Agda/Syntax/Translation/ConcreteToAbstract.hs b/src/full/Agda/Syntax/Translation/ConcreteToAbstract.hs
--- a/src/full/Agda/Syntax/Translation/ConcreteToAbstract.hs
+++ b/src/full/Agda/Syntax/Translation/ConcreteToAbstract.hs
@@ -1,11 +1,5 @@
 {-# LANGUAGE CPP                    #-}
-{-# LANGUAGE DoAndIfThenElse        #-}
-{-# LANGUAGE FlexibleInstances      #-}
-{-# LANGUAGE FunctionalDependencies #-}
-{-# LANGUAGE MultiParamTypeClasses  #-}
-{-# LANGUAGE PatternGuards          #-}
 {-# LANGUAGE ScopedTypeVariables    #-}
-{-# LANGUAGE TupleSections          #-}
 {-# LANGUAGE UndecidableInstances   #-}
 
 #if __GLASGOW_HASKELL__ <= 708
@@ -60,13 +54,9 @@
 import Agda.Syntax.Scope.Base
 import Agda.Syntax.Scope.Monad
 import Agda.Syntax.Translation.AbstractToConcrete (ToConcrete)
+import Agda.Syntax.IdiomBrackets
 
-import Agda.TypeChecking.Monad.Base
-  ( TypeError(..) , Call(..) , typeError , genericError , TCErr(..)
-  , fresh , freshName , freshName_ , freshNoName , extendedLambdaName
-  , envAbstractMode , AbstractMode(..)
-  , TCM
-  )
+import Agda.TypeChecking.Monad.Base hiding (ModuleInfo, MetaInfo)
 import qualified Agda.TypeChecking.Monad.Benchmark as Bench
 import Agda.TypeChecking.Monad.Builtin
 import Agda.TypeChecking.Monad.Trace (traceCall, setCurrentRange)
@@ -76,6 +66,7 @@
 import Agda.TypeChecking.Monad.Env (insideDotPattern, isInsideDotPattern)
 import Agda.TypeChecking.Rules.Builtin (isUntypedBuiltin, bindUntypedBuiltin)
 
+import Agda.TypeChecking.Patterns.Abstract (expandPatternSynonyms)
 import Agda.TypeChecking.Pretty hiding (pretty, prettyA)
 
 import Agda.Interaction.FindFile (checkModuleName)
@@ -95,6 +86,7 @@
 import qualified Agda.Utils.Pretty as P
 import Agda.Utils.Pretty (render, Pretty, pretty, prettyShow)
 import Agda.Utils.Tuple
+import Agda.Interaction.FindFile ( rootNameModule )
 
 #include "undefined.h"
 import Agda.Utils.Impossible
@@ -146,25 +138,42 @@
 
 -- | Make sure that each variable occurs only once.
 checkPatternLinearity :: [A.Pattern' e] -> ScopeM ()
-checkPatternLinearity ps = unlessNull (duplicates xs) $ \ ys -> do
-  typeError $ RepeatedVariablesInPattern ys
-  where
-    xs = concatMap vars ps
-    vars :: A.Pattern' e -> [C.Name]
-    vars p = case p of
-      A.VarP x               -> [nameConcrete x]
-      A.ConP _ _ args        -> concatMap (vars . namedArg) args
+checkPatternLinearity ps = do
+  unlessNull (duplicates $ map nameConcrete $ patternVars ps) $ \ ys -> do
+    typeError $ RepeatedVariablesInPattern ys
+
+class PatternVars a where
+  patternVars :: a -> [A.Name]
+
+instance PatternVars a => PatternVars [a] where
+  patternVars = concatMap patternVars
+
+instance PatternVars a => PatternVars (Arg a) where
+  patternVars = patternVars . unArg
+
+instance PatternVars a => PatternVars (Named n a) where
+  patternVars = patternVars . namedThing
+
+instance PatternVars a => PatternVars (C.FieldAssignment' a) where
+  patternVars = patternVars . (^. exprFieldA)
+
+instance PatternVars (A.Pattern' e) where
+  patternVars p = case p of
+      A.VarP x               -> [x]
+      A.ConP _ _ args        -> patternVars args
+      A.ProjP _ _ _          -> []
       A.WildP _              -> []
-      A.AsP _ x p            -> nameConcrete x : vars p
-      A.DotP _ _             -> []
+      A.AsP _ x p            -> x : patternVars p
+      A.DotP _ _ _           -> []
       A.AbsurdP _            -> []
       A.LitP _               -> []
-      A.DefP _ _ args        -> concatMap (vars . namedArg) args
+      A.DefP _ _ args        -> patternVars args
         -- Projection pattern, @args@ should be empty unless we have
         -- indexed records.
-      A.PatternSynP _ _ args -> concatMap (vars . namedArg) args
-      A.RecP _ fs            -> concatMap (vars . (^. exprFieldA)) fs
+      A.PatternSynP _ _ args -> patternVars args
+      A.RecP _ fs            -> patternVars fs
 
+
 -- | Make sure that there are no dot patterns (called on pattern synonyms).
 noDotPattern :: String -> A.Pattern' e -> ScopeM (A.Pattern' Void)
 noDotPattern err = dot
@@ -173,6 +182,7 @@
     dot p = case p of
       A.VarP x               -> pure $ A.VarP x
       A.ConP i c args        -> A.ConP i c <$> (traverse $ traverse $ traverse dot) args
+      A.ProjP i o d          -> pure $ A.ProjP i o d
       A.WildP i              -> pure $ A.WildP i
       A.AsP i x p            -> A.AsP i x <$> dot p
       A.DotP{}               -> typeError $ GenericError err
@@ -183,8 +193,8 @@
       A.RecP i fs            -> A.RecP i <$> (traverse $ traverse dot) fs
 
 -- | Compute the type of the record constructor (with bogus target type)
-recordConstructorType :: [NiceDeclaration] -> C.Expr
-recordConstructorType fields = build fs
+recordConstructorType :: [NiceDeclaration] -> ScopeM C.Expr
+recordConstructorType fields = build <$> mapM validForLet fs
   where
     -- drop all declarations after the last field declaration
     fs = reverse $ dropWhile notField $ reverse fields
@@ -192,33 +202,77 @@
     notField NiceField{} = False
     notField _           = True
 
-    -- Andreas, 2013-11-08
-    -- Turn @open public@ into just @open@, since we cannot have an
-    -- @open public@ in a @let@.  Fixes issue 532.
-    build (NiceOpen r m dir@ImportDirective{ publicOpen = True }  : fs) =
-      build (NiceOpen r m dir{ publicOpen = False } : fs)
+    -- | Check that declarations before last field can be handled
+    --   by current translation into let.
+    --
+    --   Sometimes a declaration is valid with minor modifications.
+    validForLet :: NiceDeclaration -> ScopeM NiceDeclaration
+    validForLet d = do
+      let failure = traceCall (SetRange $ getRange d) $
+            typeError $ NotValidBeforeField d
+      case d of
 
-    build (NiceModuleMacro r p x modapp open dir@ImportDirective{ publicOpen = True } : fs) =
-      build (NiceModuleMacro r p x modapp open dir{ publicOpen = False } : fs)
+        -- Andreas, 2013-11-08
+        -- Turn @open public@ into just @open@, since we cannot have an
+        -- @open public@ in a @let@.  Fixes issue #532.
+        C.NiceOpen r m dir ->
+          return $ C.NiceOpen r m dir{ publicOpen = False }
 
-    build (NiceField r _ f _ _ x (Arg info e) : fs) =
+        C.NiceModuleMacro r p x modapp open dir ->
+          return $ C.NiceModuleMacro r p x modapp open dir{ publicOpen = False }
+
+        C.NiceField{} ->
+          return d
+
+        C.NiceMutual _ _ _
+          [ C.FunSig _ _ _ _ _instanc macro _info _ _ _
+          , C.FunDef _ _ _ abstract _ _
+             [ C.Clause _top _catchall (C.LHS _p [] [] []) (C.RHS _rhs) NoWhere [] ]
+          ] | abstract /= AbstractDef && macro /= MacroDef ->
+          -- TODO: this is still too generous, we also need to check that _p
+          -- is only variable patterns.
+          return d
+
+        C.NiceMutual{}        -> failure
+        -- TODO: some of these cases might be __IMPOSSIBLE__
+        C.Axiom{}             -> failure
+        C.PrimitiveFunction{} -> failure
+        C.NiceModule{}        -> failure
+        C.NiceImport{}        -> failure
+        C.NicePragma{}        -> failure
+        C.NiceRecSig{}        -> failure
+        C.NiceDataSig{}       -> failure
+        C.NiceFunClause{}     -> failure
+        C.FunSig{}            -> failure  -- Note: these are bundled with FunDef in NiceMutual
+        C.FunDef{}            -> failure
+        C.DataDef{}           -> failure
+        C.RecDef{}            -> failure
+        C.NicePatternSyn{}    -> failure
+        C.NiceUnquoteDecl{}   -> failure
+        C.NiceUnquoteDef{}    -> failure
+
+    build fs =
+      let (ds1, ds2) = span notField fs
+      in  lets (concatMap notSoNiceDeclarations ds1) $ fld ds2
+
+    -- Turn a field declaration into a the domain of a Pi-type
+    fld [] = C.SetN noRange 0 -- todo: nicer
+    fld (NiceField r f _ _ _ x (Arg info e) : fs) =
         C.Pi [C.TypedBindings r $ Arg info (C.TBind r [pure $ mkBoundName x f] e)] $ build fs
       where r = getRange x
-    build (d : fs)                     = C.Let (getRange d) [notSoNiceDeclaration d] $
-                                           build fs
-    build []                           = C.SetN noRange 0 -- todo: nicer
+    fld _ = __IMPOSSIBLE__
 
+    -- Turn non-field declarations into a let binding.
+    -- Smart constructor for C.Let:
+    lets [] c = c
+    lets ds c = C.Let (getRange ds) ds c
 
--- | @checkModuleApplication modapp m0 x dir = return (modapp', renD, renM)@
---
---   @m0@ is the new (abstract) module name and
---   @x@ its concrete form (used for error messages).
 checkModuleApplication
   :: C.ModuleApplication
   -> ModuleName
   -> C.Name
   -> C.ImportDirective
-  -> ScopeM (A.ModuleApplication, Ren A.QName, Ren ModuleName, A.ImportDirective)
+  -> ScopeM (A.ModuleApplication, ScopeCopyInfo, A.ImportDirective)
 
 checkModuleApplication (C.SectionApp _ tel e) m0 x dir' = do
   reportSDoc "scope.decl" 70 $ vcat $
@@ -239,11 +293,11 @@
                     | otherwise = removeOnlyQualified
     -- Copy the scope associated with m and take the parts actually imported.
     (adir, s) <- applyImportDirectiveM (C.QName x) dir' =<< getNamedScope m1
-    (s', (renM, renD)) <- copyScope m m0 (noRecConstr s)
+    (s', copyInfo) <- copyScope m m0 (noRecConstr s)
     -- Set the current scope to @s'@
     modifyCurrentScope $ const s'
     printScope "mod.inst" 20 "copied source module"
-    reportSLn "scope.mod.inst" 30 $ "renamings:\n  " ++ show renD ++ "\n  " ++ show renM
+    reportSLn "scope.mod.inst" 30 $ show (pretty copyInfo)
     let amodapp = A.SectionApp tel' m1 args'
     reportSDoc "scope.decl" 70 $ vcat $
       [ text $ "scope checked ModuleApplication " ++ prettyShow x
@@ -251,18 +305,18 @@
     reportSDoc "scope.decl" 70 $ vcat $
       [ nest 2 $ prettyA amodapp
       ]
-    return (amodapp, renD, renM, adir)
+    return (amodapp, copyInfo, adir)
 
 checkModuleApplication (C.RecordModuleIFS _ recN) m0 x dir' =
   withCurrentModule m0 $ do
     m1 <- toAbstract $ OldModuleName recN
     s <- getNamedScope m1
     (adir, s) <- applyImportDirectiveM recN dir' s
-    (s', (renM, renD)) <- copyScope recN m0 s
+    (s', copyInfo) <- copyScope recN m0 (removeOnlyQualified s)
     modifyCurrentScope $ const s'
 
     printScope "mod.inst" 20 "copied record module"
-    return (A.RecordModuleIFS m1, renD, renM, adir)
+    return (A.RecordModuleIFS m1, copyInfo, adir)
 
 -- | @checkModuleMacro mkApply range access concreteName modapp open dir@
 --
@@ -273,8 +327,7 @@
   => (ModuleInfo
       -> ModuleName
       -> A.ModuleApplication
-      -> Ren A.QName
-      -> Ren ModuleName
+      -> ScopeCopyInfo
       -> A.ImportDirective
       -> a)
   -> Range
@@ -306,7 +359,7 @@
           (DontOpen, _)     -> (dir, defaultImportDir)
 
     -- Restore the locals after module application has been checked.
-    (modapp', renD, renM, adir') <- withLocalVars $ checkModuleApplication modapp m0 x moduleDir
+    (modapp', copyInfo, adir') <- withLocalVars $ checkModuleApplication modapp m0 x moduleDir
     printScope "mod.inst.app" 20 "checkModuleMacro, after checkModuleApplication"
 
     reportSDoc "scope.decl" 90 $ text "after mod app: trying to print m0 ..."
@@ -330,7 +383,7 @@
     reportSDoc "scope.decl" 90 $ text "after stripNo: m0 =" <+> prettyA m0
 
     let m      = m0 `withRangesOf` [x]
-        adecls = [ apply info m modapp' renD renM adir ]
+        adecls = [ apply info m modapp' copyInfo adir ]
 
     reportSDoc "scope.decl" 70 $ vcat $
       [ text $ "scope checked ModuleMacro " ++ prettyShow x
@@ -338,8 +391,7 @@
     reportSLn  "scope.decl" 90 $ "info    = " ++ show info
     reportSLn  "scope.decl" 90 $ "m       = " ++ show m
     reportSLn  "scope.decl" 90 $ "modapp' = " ++ show modapp'
-    reportSLn  "scope.decl" 90 $ "renD    = " ++ show renD
-    reportSLn  "scope.decl" 90 $ "renM    = " ++ show renM
+    reportSLn  "scope.decl" 90 $ show $ pretty copyInfo
     reportSDoc "scope.decl" 70 $ vcat $
       map (nest 2 . prettyA) adecls
     return adecls
@@ -494,7 +546,7 @@
     case qx of
       VarName x'          -> return $ A.Var x'
       DefinedName _ d     -> return $ nameExpr d
-      FieldName     d     -> return $ nameExpr d
+      FieldName     ds    -> return $ A.Proj ProjPrefix $ AmbQ (map anameName ds)
       ConstructorName ds  -> return $ A.Con $ AmbQ (map anameName ds)
       UnknownName         -> notInScope x
       PatternSynResName d -> return $ nameExpr d
@@ -546,7 +598,8 @@
       -- We can get the cases below for DISPLAY pragmas
       ConstructorName (d : _) -> return $ anameName d   -- We'll throw out this one, so it doesn't matter which one we pick
       ConstructorName []      -> __IMPOSSIBLE__
-      FieldName d             -> return $ anameName d
+      FieldName (d:_)         -> return $ anameName d
+      FieldName []            -> __IMPOSSIBLE__
       PatternSynResName d     -> return $ anameName d
       VarName x               -> typeError $ GenericError $ "Not a defined name: " ++ show x
       UnknownName             -> notInScope (toQName x)
@@ -654,7 +707,7 @@
   name  <- freshAbstractName_ cname
   reportSLn "scope.extendedLambda" 10 $ "new extended lambda name: " ++ show name
   qname <- qualifyName_ name
-  bindName PrivateAccess DefName cname qname
+  bindName (PrivateAccess Inserted) DefName cname qname
 
   -- Compose a function definition an scope check it.
   a <- aModeToDef <$> asks envAbstractMode
@@ -718,7 +771,7 @@
       C.QuestionMark r n -> do
         scope <- getScope
         -- Andreas, 2014-04-06 create interaction point.
-        ii <- registerInteractionPoint r n
+        ii <- registerInteractionPoint True r n
         let info = MetaInfo
              { metaRange  = r
              , metaScope  = scope
@@ -809,8 +862,14 @@
   -- Parenthesis
       C.Paren _ e -> toAbstractCtx TopCtx e
 
+  -- Idiom brackets
+      C.IdiomBrackets r e ->
+        toAbstractCtx TopCtx =<< parseIdiomBrackets r e
+
+  -- Post-fix projections
+      C.Dot r e  -> A.Dot (ExprRange r) <$> toAbstract e
+
   -- Pattern things
-      C.Dot _ _  -> notAnExpression e
       C.As _ _ _ -> notAnExpression e
       C.Absurd _ -> notAnExpression e
 
@@ -846,7 +905,7 @@
                           (C.SectionApp (getRange (m , es)) [] (RawApp (fuseRange m es) (Ident m : es)))
                           DontOpen i
         case r of
-          (LetApply _ m' _ _ _ _ : _) -> return (m', r)
+          (LetApply _ m' _ _ _ : _) -> return (m', r)
           _ -> __IMPOSSIBLE__
 
 instance ToAbstract c a => ToAbstract (FieldAssignment' c) (FieldAssignment' a) where
@@ -902,23 +961,24 @@
 
       -- Check whether we are dealing with an anonymous module.
       -- This corresponds to a Coq/LEGO section.
-      (name, p, open) <- do
+      (name, p', open) <- do
         if isNoName name then do
           (i :: NameId) <- fresh
-          return (C.NoName (getRange name) i, PrivateAccess, True)
+          return (C.NoName (getRange name) i, PrivateAccess Inserted, True)
          else return (name, p, False)
 
       -- Check and bind the module, using the supplied check for its contents.
       aname <- toAbstract (NewModuleName name)
       ds <- snd <$> do
         scopeCheckModule r (C.QName name) aname tel checkDs
-      bindModule p name aname
+      bindModule p' name aname
 
-      -- If the module was anonymous open it public.
+      -- If the module was anonymous open it public
+      -- unless it's private, in which case we just open it (#2099)
       when open $
        void $ -- We can discard the returned default A.ImportDirective.
         openModule_ (C.QName name) $
-          defaultImportDir { publicOpen = True }
+          defaultImportDir { publicOpen = p == PublicAccess }
       return ds
 
 -- | Check whether a telescope has open declarations or module macros.
@@ -936,7 +996,7 @@
       -- (Andreas, 2015-11-17)
     yes (C.Mutual   _ ds) = any yes ds
     yes (C.Abstract _ ds) = any yes ds
-    yes (C.Private  _ ds) = any yes ds
+    yes (C.Private _ _ ds) = any yes ds
     yes _                 = False
 
 {- UNUSED
@@ -1014,6 +1074,9 @@
 data TopLevel a = TopLevel
   { topLevelPath           :: AbsolutePath
     -- ^ The file path from which we loaded this module.
+  , topLevelExpectedName   :: C.TopLevelModuleName
+    -- ^ The expected module name
+    --   (coming from the import statement that triggered scope checking this file).
   , topLevelTheThing       :: a
     -- ^ The file content.
   }
@@ -1034,7 +1097,7 @@
 --     module ThisModule ...  -- the top-level module of this file
 --   @
 instance ToAbstract (TopLevel [C.Declaration]) TopLevelInfo where
-    toAbstract (TopLevel file ds) =
+    toAbstract (TopLevel file expectedMName ds) =
       -- A file is a bunch of preliminary decls (imports etc.)
       -- plus a single module decl.
       case C.spanAllowedBeforeModule ds of
@@ -1048,13 +1111,21 @@
         (outsideDecls, [ C.Module r m0 tel insideDecls ]) -> do
           -- If the module name is _ compute the name from the file path
           m <- if isNoName m0
-                then return $ C.QName $ C.Name noRange [Id $ stringToRawName $ rootName file]
+                then return $ C.QName $ C.Name noRange [Id $ stringToRawName $ rootNameModule file]
+                -- Andreas, 2016-07-12, ALTERNATIVE:
+                -- -- We assign an anonymous file module the name expected from
+                -- -- its import.  For flat file structures, this is the same.
+                -- -- For hierarchical file structures, this reverses the behavior:
+                -- -- Loading the file by itself will fail, but it can be imported.
+                -- -- The previous behavior is: it can be loaded by itself, but not
+                -- -- be imported
+                -- then return $ C.fromTopLevelModuleName expectedMName
                 else do
                 -- Andreas, 2014-03-28  Issue 1078
                 -- We need to check the module name against the file name here.
                 -- Otherwise one could sneak in a lie and confuse the scope
                 -- checker.
-                  checkModuleName (C.toTopLevelModuleName m0) file
+                  checkModuleName (C.toTopLevelModuleName m0) file $ Just expectedMName
                   return m0
           setTopLevelModule m
           am           <- toAbstract (NewModuleQName m)
@@ -1083,10 +1154,11 @@
 instance ToAbstract [C.Declaration] [A.Declaration] where
 #endif
   toAbstract ds = do
-    -- Don't allow to switch off termination checker (Issue 586) or
-    -- positivity checker (Issue 1614) in --safe mode.
+    -- When --safe is active the termination checker (Issue 586) and
+    -- positivity checker (Issue 1614) may not be switched off, and
+    -- polarities may not be assigned.
     ds <- ifM (optSafe <$> commandLineOptions)
-              (mapM (noNoTermCheck >=> noNoPositivityCheck) ds)
+              (mapM (noNoTermCheck >=> noNoPositivityCheck >=> noPolarity) ds)
               (return ds)
     toAbstract =<< niceDecls ds
    where
@@ -1105,6 +1177,10 @@
       typeError $ SafeFlagNoPositivityCheck
     noNoPositivityCheck d = return d
 
+    noPolarity :: C.Declaration -> TCM C.Declaration
+    noPolarity (C.Pragma C.PolarityPragma{}) = typeError SafeFlagPolarity
+    noPolarity d                             = return d
+
 newtype LetDefs = LetDefs [C.Declaration]
 newtype LetDef = LetDef NiceDeclaration
 
@@ -1115,7 +1191,7 @@
 instance ToAbstract LetDef [A.LetBinding] where
   toAbstract (LetDef d) =
     case d of
-      NiceMutual _ _ _ d@[C.FunSig _ fx _ instanc macro info _ x t, C.FunDef _ _ _ abstract _ _ [cl]] ->
+      NiceMutual _ _ _ d@[C.FunSig _ fx _ _ instanc macro info _ x t, C.FunDef _ _ _ abstract _ _ [cl]] ->
           do  when (abstract == AbstractDef) $ do
                 genericError $ "abstract not allowed in let expressions"
               when (macro == MacroDef) $ do
@@ -1153,7 +1229,7 @@
             case definedName p of
               Nothing -> throwError err
               Just x  -> toAbstract $ LetDef $ NiceMutual r termCheck True
-                [ C.FunSig r noFixity' PublicAccess NotInstanceDef NotMacroDef defaultArgInfo termCheck x (C.Underscore (getRange x) Nothing)
+                [ C.FunSig r noFixity' PublicAccess ConcreteDef NotInstanceDef NotMacroDef defaultArgInfo termCheck x (C.Underscore (getRange x) Nothing)
                 , C.FunDef r __IMPOSSIBLE__ __IMPOSSIBLE__ ConcreteDef __IMPOSSIBLE__ __IMPOSSIBLE__
                   [C.Clause x (ca || catchall) lhs (C.RHS rhs) NoWhere []]
                 ]
@@ -1169,8 +1245,8 @@
               definedName C.LitP{}               = Nothing
               definedName C.RecP{}               = Nothing
               definedName C.QuoteP{}             = Nothing
-              definedName C.HiddenP{}            = __IMPOSSIBLE__
-              definedName C.InstanceP{}          = __IMPOSSIBLE__
+              definedName C.HiddenP{}            = Nothing -- Not impossible, see issue #2291
+              definedName C.InstanceP{}          = Nothing
               definedName C.RawAppP{}            = __IMPOSSIBLE__
               definedName C.AppP{}               = __IMPOSSIBLE__
               definedName C.OpAppP{}             = __IMPOSSIBLE__
@@ -1191,7 +1267,7 @@
       NiceModuleMacro r p x modapp open dir | not (publicOpen dir) ->
         -- Andreas, 2014-10-09, Issue 1299: module macros in lets need
         -- to be private
-        checkModuleMacro LetApply r PrivateAccess x modapp open dir
+        checkModuleMacro LetApply r (PrivateAccess Inserted) x modapp open dir
 
       _   -> notAValidLetBinding d
     where
@@ -1229,15 +1305,6 @@
 instance ToAbstract (Blind a) (Blind a) where
   toAbstract = return
 
-aDefToMode :: IsAbstract -> AbstractMode
-aDefToMode AbstractDef = AbstractMode
-aDefToMode ConcreteDef = ConcreteMode
-
-aModeToDef :: AbstractMode -> IsAbstract
-aModeToDef AbstractMode = AbstractDef
-aModeToDef ConcreteMode = ConcreteDef
-aModeToDef _ = __IMPOSSIBLE__
-
 -- The only reason why we return a list is that open declarations disappears.
 -- For every other declaration we get a singleton list.
 instance ToAbstract NiceDeclaration A.Declaration where
@@ -1252,7 +1319,7 @@
     case d of
 
   -- Axiom (actual postulate)
-    C.Axiom r f p i rel x t -> do
+    C.Axiom r f p a i rel _ x t -> do
       -- check that we do not postulate in --safe mode
       clo <- commandLineOptions
       when (optSafe clo) (typeError (SafeFlagPostulate x))
@@ -1260,7 +1327,7 @@
       toAbstractNiceAxiom A.NoFunSig NotMacroDef d
 
   -- Fields
-    C.NiceField r i f p a x t -> do
+    C.NiceField r f p a i x t -> do
       unless (p == PublicAccess) $ genericError "Record fields can not be private"
       -- Interaction points for record fields have already been introduced
       -- when checking the type of the record constructor.
@@ -1276,6 +1343,8 @@
         -- this ensures that projections out of irrelevant fields cannot occur
         -- Ulf: unless you turn on --irrelevant-projections
         bindName p FldName x y
+      when (getHiding t /= Instance && argInfoOverlappable (argInfo t)) $
+        genericError "The 'overlap' keyword only applies to instance fields (fields marked with {{ }})"
       return [ A.Field (mkDefInfoInstance x f p a i NotMacroDef r) y t' ]
 
   -- Primitive function
@@ -1291,27 +1360,30 @@
       -- We only termination check blocks that do not have a measure.
       return [ A.Mutual (MutualInfo termCheck pc r) ds' ]
 
-    C.NiceRecSig r f a x ls t _ -> do
+    C.NiceRecSig r f p a _pc x ls t -> do
       ensureNoLetStms ls
       withLocalVars $ do
         ls' <- toAbstract (map makeDomainFull ls)
+        t'  <- toAbstract t
         x'  <- freshAbstractQName f x
-        bindName a DefName x x'
-        t' <- toAbstract t
-        return [ A.RecSig (mkDefInfo x f a ConcreteDef r) x' ls' t' ]
+        bindName p DefName x x'
+        return [ A.RecSig (mkDefInfo x f p a r) x' ls' t' ]
 
-    C.NiceDataSig r f a x ls t _ -> withLocalVars $ do
+    C.NiceDataSig r f p a _pc x ls t -> withLocalVars $ do
         printScope "scope.data.sig" 20 ("checking DataSig for " ++ show x)
         ensureNoLetStms ls
         ls' <- toAbstract (map makeDomainFull ls)
+        t'  <- toAbstract t
         x'  <- freshAbstractQName f x
         {- -- Andreas, 2012-01-16: remember number of parameters
-        bindName a (DataName (length ls)) x x' -}
-        bindName a DefName x x'
-        t' <- toAbstract t
-        return [ A.DataSig (mkDefInfo x f a ConcreteDef r) x' ls' t' ]
+        bindName p (DataName (length ls)) x x' -}
+        bindName p DefName x x'
+        return [ A.DataSig (mkDefInfo x f p a r) x' ls' t' ]
+
   -- Type signatures
-    C.FunSig r f p i m rel tc x t -> toAbstractNiceAxiom A.FunSig m (C.Axiom r f p i rel x t)
+    C.FunSig r f p a i m rel tc x t ->
+        toAbstractNiceAxiom A.FunSig m (C.Axiom r f p a i rel Nothing x t)
+
   -- Function definitions
     C.FunDef r ds f a tc x cs -> do
         printLocals 10 $ "checking def " ++ show x
@@ -1327,12 +1399,12 @@
     C.NiceFunClause{} -> __IMPOSSIBLE__
 
   -- Data definitions
-    C.DataDef r f a x pars _ cons -> withLocalVars $ do
+    C.DataDef r f a _ x pars cons -> withLocalVars $ do
         printScope "scope.data.def" 20 ("checking DataDef for " ++ show x)
         ensureNoLetStms pars
         -- Check for duplicate constructors
-        do let cs   = map conName cons
-               dups = nub $ cs \\ nub cs
+        do cs <- mapM conName cons
+           let dups = nub $ cs \\ nub cs
                bad  = filter (`elem` dups) cs
            unless (distinct cs) $
              setCurrentRange bad $
@@ -1352,11 +1424,11 @@
         printScope "data" 20 $ "Checked data " ++ show x
         return [ A.DataDef (mkDefInfo x f PublicAccess a r) x' pars cons ]
       where
-        conName (C.Axiom _ _ _ _ _ c _) = c
-        conName _ = __IMPOSSIBLE__
+        conName (C.Axiom _ _ _ _ _ _ _ c _) = return c
+        conName d = errorNotConstrDecl d
 
   -- Record definitions (mucho interesting)
-    C.RecDef r f a x ind eta cm pars _ fields -> do
+    C.RecDef r f a _ x ind eta cm pars fields -> do
       ensureNoLetStms pars
       withLocalVars $ do
         -- Check that the generated module doesn't clash with a previously
@@ -1367,9 +1439,9 @@
         let x' = anameName ax
         -- We scope check the fields a first time when putting together
         -- the type of the constructor.
-        contel <- toAbstract $ recordConstructorType fields
+        contel <- toAbstract =<< recordConstructorType fields
         m0     <- getCurrentModule
-        let m = A.qualifyM m0 $ mnameFromList $ (:[]) $ last $ qnameToList x'
+        let m = A.qualifyM m0 $ mnameFromList [ last $ qnameToList x' ]
         printScope "rec" 15 "before record"
         createModule False m
         -- We scope check the fields a second time, as actual fields.
@@ -1442,8 +1514,8 @@
 
       -- Bind the desired module name to the right abstract name.
       case as of
-        Nothing -> bindQModule PrivateAccess x m
-        Just y  -> bindModule PrivateAccess (asName y) m
+        Nothing -> bindQModule (PrivateAccess Inserted) x m
+        Just y  -> bindModule (PrivateAccess Inserted) (asName y) m
 
       printScope "import" 10 "merged imported sig:"
 
@@ -1466,7 +1538,7 @@
             }
       return [ A.Import minfo m adir ]
 
-    NiceUnquoteDecl r fxs p i a tc xs e -> do
+    NiceUnquoteDecl r fxs p a i tc xs e -> do
       ys <- zipWithM freshAbstractQName fxs xs
       zipWithM_ (bindName p QuotableName) xs ys
       e <- toAbstract e
@@ -1483,17 +1555,19 @@
 
     NicePatternSyn r fx n as p -> do
       reportSLn "scope.pat" 10 $ "found nice pattern syn: " ++ show r
-
-      y <- freshAbstractQName fx n
-      bindName PublicAccess PatternSynName n y
       defn@(as, p) <- withLocalVars $ do
          p  <- toAbstract =<< parsePatternSyn p
          checkPatternLinearity [p]
          let err = "Dot patterns are not allowed in pattern synonyms. Use '_' instead."
          p <- noDotPattern err p
          as <- (traverse . mapM) (unVarName <=< resolveName . C.QName) as
-         as <- (map . fmap) unBlind <$> toAbstract ((map . fmap) Blind as)
+         unlessNull (patternVars p \\ map unArg as) $ \ xs -> do
+           typeError . GenericDocError =<< do
+             text "Unbound variables in pattern synonym: " <+>
+               sep (map prettyA xs)
          return (as, p)
+      y <- freshAbstractQName fx n
+      bindName PublicAccess PatternSynName n y
       modifyPatternSyns (Map.insert y defn)
       return [A.PatternSynDef y as p]   -- only for highlighting
       where unVarName (VarName a) = return a
@@ -1501,13 +1575,13 @@
 
     where
       -- checking postulate or type sig. without checking safe flag
-      toAbstractNiceAxiom funSig isMacro (C.Axiom r f p i info x t) = do
+      toAbstractNiceAxiom funSig isMacro (C.Axiom r f p a i info mp x t) = do
         t' <- toAbstractCtx TopCtx t
         y  <- freshAbstractQName f x
         let kind | isMacro == MacroDef = MacroName
                  | otherwise           = DefName
         bindName p kind x y
-        return [ A.Axiom funSig (mkDefInfoInstance x f p ConcreteDef i isMacro r) info y t' ]
+        return [ A.Axiom funSig (mkDefInfoInstance x f p a i isMacro r) info mp y t' ]
       toAbstractNiceAxiom _ _ _ = __IMPOSSIBLE__
 
 
@@ -1527,35 +1601,45 @@
     -- An abstract constructor is private (abstract constructor means
     -- abstract datatype, so the constructor should not be exported).
     p' = case a of
-           AbstractDef -> PrivateAccess
+           AbstractDef -> PrivateAccess Inserted
            _           -> p
     p'' = case (a, record) of
-            (AbstractDef, _) -> PrivateAccess
+            (AbstractDef, _) -> PrivateAccess Inserted
             (_, YesRec)      -> OnlyQualified   -- record constructors aren't really in the record module
             _                -> PublicAccess
 
 instance ToAbstract ConstrDecl A.Declaration where
   toAbstract (ConstrDecl record m a p d) = do
     case d of
-      C.Axiom r f _ i info x t -> do -- rel==Relevant
+      C.Axiom r f p1 a1 i info Nothing x t -> do -- rel==Relevant
+        -- unless (p1 == p) __IMPOSSIBLE__  -- This invariant is currently violated by test/Succeed/Issue282.agda
+        unless (a1 == a) __IMPOSSIBLE__
         t' <- toAbstractCtx TopCtx t
         -- The abstract name is the qualified one
         -- Bind it twice, once unqualified and once qualified
         y <- bindConstructorName m x f a p record
         printScope "con" 15 "bound constructor"
-        return $ A.Axiom NoFunSig (mkDefInfoInstance x f p ConcreteDef i NotMacroDef r) info y t'
-      _ -> typeError . GenericDocError $
+        return $ A.Axiom NoFunSig (mkDefInfoInstance x f p a i NotMacroDef r)
+                         info Nothing y t'
+      C.Axiom _ _ _ _ _ _ (Just _) _ _ -> __IMPOSSIBLE__
+      _ -> errorNotConstrDecl d
+
+errorNotConstrDecl :: C.NiceDeclaration -> ScopeM a
+errorNotConstrDecl d = typeError . GenericDocError $
         P.text "Illegal declaration in data type definition " P.$$
-        P.nest 2 (pretty (notSoNiceDeclaration d))
+        P.nest 2 (P.vcat $ map pretty (notSoNiceDeclarations d))
 
 instance ToAbstract C.Pragma [A.Pragma] where
   toAbstract (C.ImpossiblePragma _) = impossibleTest
   toAbstract (C.OptionsPragma _ opts) = return [ A.OptionsPragma opts ]
-  toAbstract (C.RewritePragma _ x) = do
+  toAbstract (C.RewritePragma _ []) = [] <$ warning EmptyRewritePragma
+  toAbstract (C.RewritePragma _ xs) = concat <$> do
+   forM xs $ \ x -> do
     e <- toAbstract $ OldQName x Nothing
     case e of
       A.Def x          -> return [ A.RewritePragma x ]
-      A.Proj x         -> return [ A.RewritePragma x ]
+      A.Proj _ (AmbQ [x]) -> return [ A.RewritePragma x ]
+      A.Proj _ x       -> genericError $ "REWRITE used on ambiguous name " ++ show x
       A.Con (AmbQ [x]) -> return [ A.RewritePragma x ]
       A.Con x          -> genericError $ "REWRITE used on ambiguous name " ++ show x
       A.Var x          -> genericError $ "REWRITE used on parameter " ++ show x ++ " instead of on a defined symbol"
@@ -1579,7 +1663,8 @@
     e <- toAbstract $ OldQName x Nothing
     y <- case e of
           A.Def x -> return x
-          A.Proj x -> return x -- TODO: do we need to do s.th. special for projections? (Andreas, 2014-10-12)
+          A.Proj _ (AmbQ [x]) -> return x -- TODO: do we need to do s.th. special for projections? (Andreas, 2014-10-12)
+          A.Proj _ x -> genericError $ "COMPILED on ambiguous name " ++ show x
           A.Con _ -> genericError "Use COMPILED_DATA for constructors" -- TODO
           _       -> __IMPOSSIBLE__
     return [ A.CompiledPragma y hs ]
@@ -1599,7 +1684,9 @@
     e <- toAbstract $ OldQName x Nothing
     y <- case e of
           A.Def x -> return x
-          A.Proj x -> return x
+          A.Proj _ (AmbQ [x]) -> return x
+          A.Proj _ x -> genericError $
+            "COMPILED_JS used on ambiguous name " ++ prettyShow x
           A.Con (AmbQ [x]) -> return x
           A.Con x -> genericError $
             "COMPILED_JS used on ambiguous name " ++ prettyShow x
@@ -1616,25 +1703,22 @@
     case e of
       A.Def x -> return [ A.CompiledDataUHCPragma x crd crcs ]
       _       -> fail $ "Bad compiled type: " ++ show x  -- TODO: error message
-  toAbstract (C.NoSmashingPragma _ x) = do
-      e <- toAbstract $ OldQName x Nothing
-      y <- case e of
-          A.Def  x -> return x
-          A.Proj x -> return x
-          _        -> genericError "Target of NO_SMASHING pragma should be a function"
-      return [ A.NoSmashingPragma y ]
   toAbstract (C.StaticPragma _ x) = do
       e <- toAbstract $ OldQName x Nothing
       y <- case e of
           A.Def  x -> return x
-          A.Proj x -> return x
+          A.Proj _ (AmbQ [x]) -> return x
+          A.Proj _ x -> genericError $
+            "STATIC used on ambiguous name " ++ prettyShow x
           _        -> genericError "Target of STATIC pragma should be a function"
       return [ A.StaticPragma y ]
   toAbstract (C.InlinePragma _ x) = do
       e <- toAbstract $ OldQName x Nothing
       y <- case e of
           A.Def  x -> return x
-          A.Proj x -> return x
+          A.Proj _ (AmbQ [x]) -> return x
+          A.Proj _ x -> genericError $
+            "INLINE used on ambiguous name " ++ prettyShow x
           _        -> genericError "Target of INLINE pragma should be a function"
       return [ A.InlinePragma y ]
   toAbstract (C.BuiltinPragma _ b e) | isUntypedBuiltin b = do
@@ -1676,21 +1760,35 @@
 
     top <- getHead lhs
 
-    hd <- do
+    (isPatSyn, hd) <- do
       qx <- resolveName' allKindsOfNames Nothing top
       case qx of
-        VarName x'          -> return $ A.qnameFromList [x']
-        DefinedName _ d     -> return $ anameName d
-        FieldName     d     -> return $ anameName d
-        ConstructorName [d] -> return $ anameName d
+        VarName x'          -> return . (False,) $ A.qnameFromList [x']
+        DefinedName _ d     -> return . (False,) $ anameName d
+        FieldName     [d]    -> return . (False,) $ anameName d
+        FieldName ds         -> genericError $ "Ambiguous projection " ++ show top ++ ": " ++ show (map anameName ds)
+        ConstructorName [d] -> return . (False,) $ anameName d
         ConstructorName ds  -> genericError $ "Ambiguous constructor " ++ show top ++ ": " ++ show (map anameName ds)
         UnknownName         -> notInScope top
-        PatternSynResName d -> return $ anameName d
+        PatternSynResName d -> return . (True,) $ anameName d
 
     lhs <- toAbstract $ LeftHandSide top lhs []
     ps  <- case lhs of
              A.LHS _ (A.LHSHead _ ps) [] -> return ps
              _ -> err
+
+    -- Andreas, 2016-08-08, issue #2132
+    -- Remove pattern synonyms on lhs
+    (hd, ps) <- do
+      let mkP | isPatSyn =  A.PatternSynP (PatRange $ getRange lhs) hd
+              | otherwise = A.DefP (PatRange $ getRange lhs) (A.AmbQ [hd])
+      p <- expandPatternSynonyms $ mkP ps
+      case p of
+        A.DefP _ (A.AmbQ [hd]) ps -> return (hd, ps)
+        A.ConP _ (A.AmbQ [hd]) ps -> return (hd, ps)
+        A.PatternSynP{} -> __IMPOSSIBLE__
+        _ -> err
+
     rhs <- toAbstract rhs
     return [A.DisplayPragma hd ps rhs]
 
@@ -1702,6 +1800,9 @@
   -- No positivity checking pragmas are handled by the nicifier.
   toAbstract C.NoPositivityCheckPragma{} = __IMPOSSIBLE__
 
+  -- Polarity pragmas are handled by the niceifier.
+  toAbstract C.PolarityPragma{} = __IMPOSSIBLE__
+
 instance ToAbstract C.Clause A.Clause where
   toAbstract (C.Clause top _ C.Ellipsis{} _ _ _) = genericError "bad '...'" -- TODO: error message
   toAbstract (C.Clause top catchall lhs@(C.LHS p wps eqs with) rhs wh wcs) = withLocalVars $ do
@@ -1712,17 +1813,22 @@
     printLocals 10 "after lhs:"
     let (whname, whds) = case wh of
           NoWhere        -> (Nothing, [])
-          AnyWhere ds    -> (Nothing, ds)
-          SomeWhere m ds -> (Just m, ds)
+          -- Andreas, 2016-07-17 issues #2081 and #2101
+          -- where-declarations are automatically private.
+          -- This allows their type signature to be checked InAbstractMode.
+          AnyWhere ds    -> (Nothing, [C.Private noRange Inserted ds])
+          -- Named where-modules do not default to private.
+          SomeWhere m a ds -> (Just (m, a), ds)
 
     let isTerminationPragma :: C.Declaration -> Bool
+        isTerminationPragma (C.Private _ _ ds) = any isTerminationPragma ds
         isTerminationPragma (C.Pragma (TerminationCheckPragma _ _)) = True
         isTerminationPragma _                                       = False
 
     if not (null eqs)
       then do
         rhs <- toAbstract =<< toAbstractCtx TopCtx (RightHandSide eqs with wcs' rhs whds)
-        return $ A.Clause lhs' rhs [] catchall
+        return $ A.Clause lhs' [] rhs [] catchall
       else do
         -- ASR (16 November 2015) Issue 1137: We ban termination
         -- pragmas inside `where` clause.
@@ -1733,16 +1839,17 @@
         (rhs, ds) <- whereToAbstract (getRange wh) whname whds $
                       toAbstractCtx TopCtx (RightHandSide eqs with wcs' rhs [])
         rhs <- toAbstract rhs
-        return $ A.Clause lhs' rhs ds catchall
+        return $ A.Clause lhs' [] rhs ds catchall
 
-whereToAbstract :: Range -> Maybe C.Name -> [C.Declaration] -> ScopeM a -> ScopeM (a, [A.Declaration])
+whereToAbstract :: Range -> Maybe (C.Name, Access) -> [C.Declaration] -> ScopeM a -> ScopeM (a, [A.Declaration])
 whereToAbstract _ _      []   inner = (,[]) <$> inner
 whereToAbstract r whname whds inner = do
   -- Create a fresh concrete name if there isn't (a proper) one.
-  m <- case whname of
-         Just m | not (isNoName m) -> return m
-         _                         -> C.NoName (getRange whname) <$> fresh
-  let acc = maybe PrivateAccess (const PublicAccess) whname  -- unnamed where's are private
+  (m, acc) <- do
+    case whname of
+      Just (m, acc) | not (isNoName m) -> return (m, acc)
+      _ -> fresh <&> \ x -> (C.NoName (getRange whname) x, PrivateAccess Inserted)
+           -- unnamed where's are private
   let tel = []
   old <- getCurrentModule
   am  <- toAbstract (NewModuleName m)
@@ -1752,8 +1859,8 @@
   setCurrentModule old
   bindModule acc m am
   -- Issue 848: if the module was anonymous (module _ where) open it public
-  let anonymous = maybe False isNoName whname
-  when anonymous $
+  let anonymousSomeWhere = maybe False (isNoName . fst) whname
+  when anonymousSomeWhere $
    void $ -- We can ignore the returned default A.ImportDirective.
     openModule_ (C.QName m) $
       defaultImportDir { publicOpen = True }
@@ -1770,7 +1877,7 @@
 data AbstractRHS
   = AbsurdRHS'
   | WithRHS' [A.Expr] [ScopeM C.Clause]  -- ^ The with clauses haven't been translated yet
-  | RHS' A.Expr
+  | RHS' A.Expr C.Expr
   | RewriteRHS' [A.Expr] AbstractRHS [A.Declaration]
 
 qualifyName_ :: A.Name -> ScopeM A.QName
@@ -1785,7 +1892,7 @@
 
 instance ToAbstract AbstractRHS A.RHS where
   toAbstract AbsurdRHS'            = return A.AbsurdRHS
-  toAbstract (RHS' e)              = return $ A.RHS e
+  toAbstract (RHS' e c)            = return $ A.RHS e $ Just c
   toAbstract (RewriteRHS' eqs rhs wh) = do
     auxs <- replicateM (length eqs) $ withFunctionName "rewrite-"
     rhs  <- toAbstract rhs
@@ -1814,7 +1921,7 @@
 
 instance ToAbstract C.RHS AbstractRHS where
     toAbstract C.AbsurdRHS = return $ AbsurdRHS'
-    toAbstract (C.RHS e)   = RHS' <$> toAbstract e
+    toAbstract (C.RHS e)   = RHS' <$> toAbstract e <*> pure e
 
 data LeftHandSide = LeftHandSide C.QName C.Pattern [C.Pattern]
 
@@ -1848,18 +1955,18 @@
         x    <- withLocalVars $ setLocalVars [] >> toAbstract (OldName x)
         args <- toAbstract ps
         return $ A.LHSHead x args
-    toAbstract (C.LHSProj d ps1 l ps2) = do
+    toAbstract c@(C.LHSProj d ps1 l ps2) = do
+        unless (null ps1) $ typeError $ GenericDocError $
+          P.text "Ill-formed projection pattern" P.<+> P.pretty (foldl C.AppP (C.IdentP d) ps1)
         qx <- resolveName d
-        d  <- case qx of
-                FieldName d -> return $ anameName d
+        ds <- case qx of
+                FieldName [] -> __IMPOSSIBLE__
+                FieldName ds -> return $ map anameName ds
                 UnknownName -> notInScope d
                 _           -> genericError $
                   "head of copattern needs to be a field identifier, but "
                   ++ show d ++ " isn't one"
-        args1 <- toAbstract ps1
-        l     <- toAbstract l
-        args2 <- toAbstract ps2
-        return $ A.LHSProj d args1 l args2
+        A.LHSProj (AmbQ ds) <$> toAbstract l <*> toAbstract ps2
 
 instance ToAbstract c a => ToAbstract (WithHiding c) (WithHiding a) where
   toAbstract (WithHiding h a) = WithHiding h <$> toAbstractHiding h a
@@ -1877,9 +1984,8 @@
 -}
 
 instance ToAbstract (A.LHSCore' C.Expr) (A.LHSCore' A.Expr) where
-    toAbstract (A.LHSHead f ps)             = A.LHSHead f <$> mapM toAbstract ps
-    toAbstract (A.LHSProj d ps lhscore ps') = A.LHSProj d <$> mapM toAbstract ps
-      <*> mapM toAbstract lhscore <*> mapM toAbstract ps'
+    toAbstract (A.LHSHead f ps)         = A.LHSHead f <$> mapM toAbstract ps
+    toAbstract (A.LHSProj d lhscore ps) = A.LHSProj d <$> mapM toAbstract lhscore <*> mapM toAbstract ps
 
 -- Patterns are done in two phases. First everything but the dot patterns, and
 -- then the dot patterns. This is because dot patterns can refer to variables
@@ -1888,10 +1994,11 @@
 instance ToAbstract (A.Pattern' C.Expr) (A.Pattern' A.Expr) where
     toAbstract (A.VarP x)             = return $ A.VarP x
     toAbstract (A.ConP i ds as)       = A.ConP i ds <$> mapM toAbstract as
+    toAbstract (A.ProjP i o ds)       = return $ A.ProjP i o ds
     toAbstract (A.DefP i x as)        = A.DefP i x <$> mapM toAbstract as
     toAbstract (A.WildP i)            = return $ A.WildP i
     toAbstract (A.AsP i x p)          = A.AsP i x <$> toAbstract p
-    toAbstract (A.DotP i e)           = A.DotP i <$> insideDotPattern (toAbstract e)
+    toAbstract (A.DotP i o e)         = A.DotP i o <$> insideDotPattern (toAbstract e)
     toAbstract (A.AbsurdP i)          = return $ A.AbsurdP i
     toAbstract (A.LitP l)             = return $ A.LitP l
     toAbstract (A.PatternSynP i x as) = A.PatternSynP i x <$> mapM toAbstract as
@@ -1903,7 +2010,7 @@
   px <- toAbstract (PatName x ns)
   case px of
     VarPatName y        -> return $ VarP y
-    ConPatName ds       -> return $ ConP (ConPatInfo ConPCon $ PatRange r)
+    ConPatName ds       -> return $ ConP (ConPatInfo ConOCon $ PatRange r)
                                          (AmbQ $ map anameName ds)
                                          []
     PatternSynPatName d -> return $ PatternSynP (PatRange r)
@@ -1919,7 +2026,9 @@
         getHiding p == NotHidden = do
       e <- toAbstract (OldQName x Nothing)
       let quoted (A.Def x) = return x
-          quoted (A.Proj x) = return x
+          quoted (A.Macro x) = return x
+          quoted (A.Proj _ (AmbQ [x])) = return x
+          quoted (A.Proj _ (AmbQ xs))  = genericError $ "quote: Ambigous name: " ++ show xs
           quoted (A.Con (AmbQ [x])) = return x
           quoted (A.Con (AmbQ xs))  = genericError $ "quote: Ambigous name: " ++ show xs
           quoted (A.ScopedExpr _ e) = quoted e
@@ -1933,6 +2042,7 @@
         (p', q') <- toAbstract (p, q)
         case p' of
             ConP i x as        -> return $ ConP (i {patInfo = info}) x (as ++ [q'])
+            ProjP i o x        -> typeError $ InvalidPattern p0
             DefP _ x as        -> return $ DefP info x (as ++ [q'])
             PatternSynP _ x as -> return $ PatternSynP info x (as ++ [q'])
             _                  -> typeError $ InvalidPattern p0
@@ -1961,16 +2071,14 @@
     -- toAbstract p@(C.WildP r)    = A.VarP <$> freshName r "_"
     toAbstract (C.ParenP _ p)   = toAbstract p
     toAbstract (C.LitP l)       = return $ A.LitP l
-    toAbstract p0@(C.AsP r x p) = typeError $ NotSupported "@-patterns"
-      {- do
+    toAbstract p0@(C.AsP r x p) = do
         x <- toAbstract (NewName x)
         p <- toAbstract p
         return $ A.AsP info x p
         where
             info = PatRange r
-      -}
     -- we have to do dot patterns at the end
-    toAbstract p0@(C.DotP r e) = return $ A.DotP info e
+    toAbstract p0@(C.DotP r o e) = return $ A.DotP info o e
         where info = PatRange r
     toAbstract p0@(C.AbsurdP r) = return $ A.AbsurdP info
         where info = PatRange r
diff --git a/src/full/Agda/Syntax/Translation/InternalToAbstract.hs b/src/full/Agda/Syntax/Translation/InternalToAbstract.hs
--- a/src/full/Agda/Syntax/Translation/InternalToAbstract.hs
+++ b/src/full/Agda/Syntax/Translation/InternalToAbstract.hs
@@ -1,11 +1,7 @@
 {-# LANGUAGE CPP                    #-}
-{-# LANGUAGE FlexibleContexts       #-}
-{-# LANGUAGE FlexibleInstances      #-}
-{-# LANGUAGE FunctionalDependencies #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
-{-# LANGUAGE MultiParamTypeClasses  #-}
+{-# LANGUAGE NondecreasingIndentation #-}
 {-# LANGUAGE ScopedTypeVariables    #-}
-{-# LANGUAGE TupleSections          #-}
 {-# LANGUAGE UndecidableInstances   #-}
 
 {-|
@@ -21,23 +17,24 @@
 -}
 module Agda.Syntax.Translation.InternalToAbstract
   ( Reify(..)
-  , NamedClause
+  , NamedClause(..)
   , reifyPatterns
   ) where
 
-import Prelude hiding (mapM_, mapM)
-import Control.Applicative
+import Prelude hiding (mapM_, mapM, null)
+import Control.Applicative hiding (empty)
 import Control.Monad.State hiding (mapM_, mapM)
 import Control.Monad.Reader hiding (mapM_, mapM)
 
 import Data.Foldable (foldMap)
-import Data.List hiding (sort)
+import Data.List hiding (null, sort)
 import qualified Data.Map as Map
 import Data.Maybe
-import Data.Monoid
+import Data.Semigroup (Semigroup, Monoid, (<>), mempty, mappend)
 import Data.Set (Set)
 import qualified Data.Set as Set
-import Data.Traversable as Trav
+import Data.Traversable (traverse, mapM)
+import qualified Data.Traversable as Trav
 
 import Agda.Syntax.Literal
 import Agda.Syntax.Position
@@ -51,7 +48,7 @@
 import Agda.Syntax.Internal.Pattern as I
 import Agda.Syntax.Scope.Base (isNameInScope, inverseScopeLookupName)
 
-import Agda.TypeChecking.Monad as M hiding (MetaInfo, tick)
+import Agda.TypeChecking.Monad
 import Agda.TypeChecking.Monad.Builtin
 import Agda.TypeChecking.Reduce
 import {-# SOURCE #-} Agda.TypeChecking.Records
@@ -64,13 +61,19 @@
 import Agda.TypeChecking.Telescope
 import Agda.TypeChecking.DropArgs
 
+import Agda.Interaction.Options ( optPostfixProjections )
+
 import Agda.Utils.Except ( MonadError(catchError) )
+import Agda.Utils.Function
+import Agda.Utils.Functor
 import Agda.Utils.Lens
 import Agda.Utils.List
 import Agda.Utils.Maybe
 import Agda.Utils.Monad
+import Agda.Utils.Null
 import Agda.Utils.Permutation
-import Agda.Utils.Pretty
+import Agda.Utils.Pretty hiding ((<>))
+import Agda.Utils.Singleton
 import Agda.Utils.Size
 import Agda.Utils.Tuple
 
@@ -79,44 +82,38 @@
 
 -- Composition of reified applications ------------------------------------
 
+-- | Drops hidden arguments unless --show-implicit.
 napps :: Expr -> [NamedArg Expr] -> TCM Expr
-napps e args = do
-  dontShowImp <- not <$> showImplicitArguments
-  let apply1 e arg | notVisible arg && dontShowImp = e
-                   | otherwise = App exprInfo e arg
-  foldl' apply1 e <$> reify args
+napps e = nelims e . map I.Apply
 
+-- | Drops hidden arguments unless --show-implicit.
 apps :: Expr -> [Arg Expr] -> TCM Expr
-apps e args = napps e $ map (fmap unnamed) args
-
-reifyApp :: Expr -> [Arg Term] -> TCM Expr
-reifyApp e vs = apps e =<< reifyIArgs vs
-
-reifyIArg :: Reify i a => Arg i -> TCM (Arg a)
-reifyIArg i = Arg (argInfo i) <$> reify (unArg i)
-
-reifyIArgs :: Reify i a => [Arg i] -> TCM [Arg a]
-reifyIArgs = mapM reifyIArg
+apps e = elims e . map I.Apply
 
 -- Composition of reified eliminations ------------------------------------
 
-elims :: Expr -> [I.Elim' Expr] -> TCM Expr
-elims e [] = return e
-elims e (I.Apply arg : es) =
-  elims (A.App exprInfo e $ fmap unnamed arg) es
-elims e (I.Proj d    : es) = elims (A.App exprInfo (A.Proj d) $ defaultNamedArg e) es
-
-reifyIElim :: Reify i a => I.Elim' i -> TCM (I.Elim' a)
-reifyIElim (I.Apply i) = I.Apply <$> traverse reify i
-reifyIElim (I.Proj d)  = return $ I.Proj d
+-- | Drops hidden arguments unless --show-implicit.
+nelims :: Expr -> [I.Elim' (Named_ Expr)] -> TCM Expr
+nelims e [] = return e
+nelims e (I.Apply arg : es) = do
+  arg <- reify arg  -- This replaces the arg by _ if irrelevant
+  dontShowImp <- not <$> showImplicitArguments
+  let hd | notVisible arg && dontShowImp = e
+         | otherwise                     = A.App noExprInfo e arg
+  nelims hd es
+nelims e (I.Proj o@ProjPrefix d  : es) =
+  nelims (A.App noExprInfo (A.Proj o $ AmbQ [d]) $ defaultNamedArg e) es
+nelims e (I.Proj o d  : es) =
+  nelims (A.App noExprInfo e (defaultNamedArg $ A.Proj o $ AmbQ [d])) es
 
-reifyIElims :: Reify i a => [I.Elim' i] -> TCM [I.Elim' a]
-reifyIElims = mapM reifyIElim
+-- | Drops hidden arguments unless --show-implicit.
+elims :: Expr -> [I.Elim' Expr] -> TCM Expr
+elims e = nelims e . map (fmap unnamed)
 
 -- Omitting information ---------------------------------------------------
 
-exprInfo :: ExprInfo
-exprInfo = ExprRange noRange
+noExprInfo :: ExprInfo
+noExprInfo = ExprRange noRange
 
 -- Conditional reification to omit terms that are not shown --------------
 
@@ -144,16 +141,16 @@
 instance Reify MetaId Expr where
     reifyWhen = reifyWhenE
     reify x@(MetaId n) = liftTCM $ do
+      b <- asks envPrintMetasBare
       mi  <- mvInfo <$> lookupMeta x
       let mi' = Info.MetaInfo
                  { metaRange          = getRange $ miClosRange mi
-                 , metaScope          = M.clScope $ miClosRange mi
-                 , metaNumber         = Just x
-                 , metaNameSuggestion = miNameSuggestion mi
+                 , metaScope          = clScope $ miClosRange mi
+                 , metaNumber         = if b then Nothing else Just x
+                 , metaNameSuggestion = if b then "" else miNameSuggestion mi
                  }
           underscore = return $ A.Underscore mi'
-      ifNotM shouldReifyInteractionPoints underscore $ {- else -}
-        caseMaybeM (isInteractionMeta x) underscore $ \ ii@InteractionId{} ->
+      caseMaybeM (isInteractionMeta x) underscore $ \ ii@InteractionId{} ->
           return $ A.QuestionMark mi' ii
 
 -- Does not print with-applications correctly:
@@ -166,20 +163,20 @@
   reify d = case d of
     DTerm v -> reifyTerm False v
     DDot  v -> reify v
-    DCon c vs -> apps (A.Con (AmbQ [conName c])) =<< reifyIArgs vs
-    DDef f es -> elims (A.Def f) =<< reifyIElims es
-    DWithApp u us vs -> do
+    DCon c ci vs -> apps (A.Con (AmbQ [conName c])) =<< reify vs
+    DDef f es -> elims (A.Def f) =<< reify es
+    DWithApp u us es0 -> do
       (e, es) <- reify (u, us)
-      reifyApp (if null es then e else A.WithApp exprInfo e es) vs
+      elims (if null es then e else A.WithApp noExprInfo e es) =<< reify es0
 
 -- | @reifyDisplayForm f vs fallback@
 --   tries to rewrite @f vs@ with a display form for @f@.
 --   If successful, reifies the resulting display term,
 --   otherwise, does @fallback@.
-reifyDisplayForm :: QName -> I.Args -> TCM A.Expr -> TCM A.Expr
-reifyDisplayForm f vs fallback = do
+reifyDisplayForm :: QName -> I.Elims -> TCM A.Expr -> TCM A.Expr
+reifyDisplayForm f es fallback = do
   ifNotM displayFormsEnabled fallback $ {- else -} do
-    caseMaybeM (liftTCM $ displayForm f vs) fallback reify
+    caseMaybeM (liftTCM $ displayForm f es) fallback reify
 
 -- | @reifyDisplayFormP@ tries to recursively
 --   rewrite a lhs with a display form.
@@ -188,9 +185,6 @@
 reifyDisplayFormP :: A.SpineLHS -> TCM A.SpineLHS
 reifyDisplayFormP lhs@(A.SpineLHS i f ps wps) =
   ifNotM displayFormsEnabled (return lhs) $ {- else -} do
-    let vs = [ setHiding h $ defaultArg $ I.var i
-             | (i, h) <- zip [0..] $ map getHiding ps
-             ]
     -- Try to rewrite @f 0 1 2 ... |ps|-1@ to a dt.
     -- Andreas, 2014-06-11  Issue 1177:
     -- I thought we need to add the placeholders for ps to the context,
@@ -199,7 +193,7 @@
     -- But apparently, it has no influence...
     -- Ulf, can you add an explanation?
     md <- liftTCM $ -- addContext (replicate (length ps) "x") $
-      displayForm f vs
+      displayForm f $ zipWith (\ p i -> I.Apply $ p $> I.var i) ps [0..]
     reportSLn "reify.display" 60 $
       "display form of " ++ show f ++ " " ++ show ps ++ " " ++ show wps ++ ":\n  " ++ show md
     case md of
@@ -226,8 +220,8 @@
     -- can serve as a valid left-hand side. That means checking that it is a
     -- defined name applied to valid lhs eliminators (projections or
     -- applications to constructor patterns).
-    okDisplayForm (DWithApp d ds args) =
-      okDisplayForm d && all okDisplayTerm ds  && all okToDrop args
+    okDisplayForm (DWithApp d ds es) =
+      okDisplayForm d && all okDisplayTerm ds  && all okToDropE es
       -- Andreas, 2016-05-03, issue #1950.
       -- We might drop trailing hidden trivial (=variable) patterns.
     okDisplayForm (DTerm (I.Def f vs)) = all okElim vs
@@ -245,6 +239,9 @@
     okDElim (I.Apply v) = okDisplayTerm $ unArg v
     okDElim I.Proj{}    = True
 
+    okToDropE (I.Apply v) = okToDrop v
+    okToDropE I.Proj{}    = False
+
     okToDrop arg = notVisible arg && case ignoreSharing $ unArg arg of
       I.Var _ []   -> True
       I.DontCare{} -> True  -- no matching on irrelevant things.  __IMPOSSIBLE__ anyway?
@@ -257,30 +254,29 @@
     okElim (I.Proj{})  = True
 
     okTerm (I.Var _ []) = True
-    okTerm (I.Con c vs) = all okArg vs
+    okTerm (I.Con c ci vs) = all okArg vs
     okTerm (I.Def x []) = isNoName $ qnameToConcrete x -- Handling wildcards in display forms
     okTerm _            = False
 
     -- Flatten a dt into (parentName, parentElims, withArgs).
-    flattenWith :: DisplayTerm -> (QName, [I.Elim' DisplayTerm], [DisplayTerm])
-    flattenWith (DWithApp d ds1 ds2) = case flattenWith d of
-      (f, es, ds0) -> (f, es, ds0 ++ ds1 ++ map (DTerm . unArg) ds2)
+    flattenWith :: DisplayTerm -> (QName, [I.Elim' DisplayTerm], [I.Elim' DisplayTerm])
+    flattenWith (DWithApp d ds1 es2) =
+      let (f, es, ds0) = flattenWith d
+      in  (f, es, ds0 ++ map (I.Apply . defaultArg) ds1 ++ map (fmap DTerm) es2)
     flattenWith (DDef f es) = (f, es, [])     -- .^ hacky, but we should only hit this when printing debug info
     flattenWith (DTerm (I.Def f es)) = (f, map (fmap DTerm) es, [])
     flattenWith _ = __IMPOSSIBLE__
 
     displayLHS :: [A.Pattern] -> [A.Pattern] -> DisplayTerm -> TCM A.SpineLHS
-    displayLHS ps wps d = case flattenWith d of
-      (f, vs, ds) -> do
-        ds <- mapM termToPat ds
+    displayLHS ps wps d = do
+        let (f, vs, es) = flattenWith d
+        ds <- mapM (namedArg <.> elimToPat) es
         vs <- mapM elimToPat vs
         return $ SpineLHS i f vs (ds ++ wps)
       where
-        ci   = ConPatInfo ConPCon patNoRange
-
         argToPat arg = fmap unnamed <$> traverse termToPat arg
         elimToPat (I.Apply arg) = argToPat arg
-        elimToPat (I.Proj d)    = return $ defaultNamedArg $ A.DefP patNoRange d []
+        elimToPat (I.Proj o d)  = return $ defaultNamedArg $ A.ProjP patNoRange o $ AmbQ [d]
 
         termToPat :: DisplayTerm -> TCM A.Pattern
 
@@ -288,17 +284,17 @@
                                            Nothing -> __IMPOSSIBLE__
                                            Just p  -> p
 
-        termToPat (DCon c vs)          = tryRecPFromConP =<< do
-           A.ConP ci (AmbQ [conName c]) <$> mapM argToPat vs
+        termToPat (DCon c ci vs)          = tryRecPFromConP =<< do
+           A.ConP (ConPatInfo ci patNoRange) (AmbQ [conName c]) <$> mapM argToPat vs
 
-        termToPat (DTerm (I.Con c vs)) = tryRecPFromConP =<< do
-           A.ConP ci (AmbQ [conName c]) <$> mapM (argToPat . fmap DTerm) vs
+        termToPat (DTerm (I.Con c ci vs)) = tryRecPFromConP =<< do
+           A.ConP (ConPatInfo ci patNoRange) (AmbQ [conName c]) <$> mapM (argToPat . fmap DTerm) vs
 
         termToPat (DTerm (I.Def _ [])) = return $ A.WildP patNoRange
         termToPat (DDef _ [])          = return $ A.WildP patNoRange
 
-        termToPat (DDot v)             = A.DotP patNoRange <$> termToExpr v
-        termToPat v                    = A.DotP patNoRange <$> reify v -- __IMPOSSIBLE__
+        termToPat (DDot v)             = A.DotP patNoRange Inserted <$> termToExpr v
+        termToPat v                    = A.DotP patNoRange Inserted <$> reify v -- __IMPOSSIBLE__
 
         len = genericLength ps
 
@@ -310,7 +306,7 @@
           reportSLn "reify.display" 60 $ "termToExpr " ++ show v
           -- After unSpine, a Proj elimination is __IMPOSSIBLE__!
           case unSpine v of
-            I.Con c vs ->
+            I.Con c ci vs ->
               apps (A.Con (AmbQ [conName c])) =<< argsToExpr vs
             I.Def f es -> do
               let vs = fromMaybe __IMPOSSIBLE__ $ mapM isApplyElim es
@@ -337,32 +333,35 @@
 
 reifyTerm :: Bool -> Term -> TCM Expr
 reifyTerm expandAnonDefs0 v = do
+  metasBare <- asks envPrintMetasBare
   -- Ulf 2014-07-10: Don't expand anonymous when display forms are disabled
   -- (i.e. when we don't care about nice printing)
   expandAnonDefs <- return expandAnonDefs0 `and2M` displayFormsEnabled
-  v <- unSpine <$> instantiate v
-  case v of
+  -- Andreas, 2016-07-21 if --postfix-projections
+  -- then we print system-generated projections as postfix, else prefix.
+  havePfp <- optPostfixProjections <$> pragmaOptions
+  let pred = if havePfp then (== ProjPrefix) else (/= ProjPostfix)
+  v <- ignoreSharing <$> instantiate v
+  case applyUnless metasBare (unSpine' pred) v of
     I.Var n es   -> do
-        let vs = fromMaybe __IMPOSSIBLE__ $ allApplyElims es
         x  <- liftTCM $ nameOfBV n `catchError` \_ -> freshName_ ("@" ++ show n)
-        reifyApp (A.Var x) vs
+        elims (A.Var x) =<< reify es
     I.Def x es   -> do
-      let vs = fromMaybe __IMPOSSIBLE__ $ allApplyElims es
-      reifyDisplayForm x vs $ reifyDef expandAnonDefs x vs
-    I.Con c vs   -> do
+      reifyDisplayForm x es $ reifyDef expandAnonDefs x es
+    I.Con c ci vs -> do
       let x = conName c
       isR <- isGeneratedRecordConstructor x
-      case isR of
+      case isR || ci == ConORec of
         True -> do
           showImp <- showImplicitArguments
           let keep (a, v) = showImp || notHidden a
           r  <- getConstructorData x
           xs <- getRecordFieldNames r
-          vs <- map unArg <$> reifyIArgs vs
-          return $ A.Rec exprInfo $ map (Left . uncurry FieldAssignment . mapFst unArg) $ filter keep $ zip xs vs
-        False -> reifyDisplayForm x vs $ do
-          ci <- getConstInfo x
-          let Constructor{conPars = np} = theDef ci
+          vs <- map unArg <$> reify vs
+          return $ A.Rec noExprInfo $ map (Left . uncurry FieldAssignment . mapFst unArg) $ filter keep $ zip xs vs
+        False -> reifyDisplayForm x (map I.Apply vs) $ do
+          def <- getConstInfo x
+          let Constructor{conPars = np} = theDef def
           -- if we are the the module that defines constructor x
           -- then we have to drop at least the n module parameters
           n  <- getDefFreeVars x
@@ -371,7 +370,7 @@
           when (n > np) __IMPOSSIBLE__
           let h = A.Con (AmbQ [x])
           if null vs then return h else do
-            es <- reifyIArgs vs
+            es <- reify vs
             -- Andreas, 2012-04-20: do not reify parameter arguments of constructor
             -- if the first regular constructor argument is hidden
             -- we turn it into a named argument, in order to avoid confusion
@@ -387,38 +386,30 @@
               -- Here, we need the reducing version of @telView@
               -- because target of constructor could be a definition
               -- expanding into a function type.  See test/succeed/NameFirstIfHidden.agda.
-              TelV tel _ <- telView (defType ci)
-              case genericDrop np $ telToList tel of
+              TelV tel _ <- telView (defType def)
+              let (pars, rest) = splitAt np $ telToList tel
+              case rest of
                 -- Andreas, 2012-09-18
                 -- If the first regular constructor argument is hidden,
                 -- we keep the parameters to avoid confusion.
-                (Dom info _ : _) | isHidden info -> do
-                  let us = genericReplicate (np - n) $
-                             setRelevance Relevant $ Arg info underscore
-                  apps h $ us ++ es
+                (Dom info _ : _) | notVisible info -> do
+                  let us = for (drop n pars) $ \ (Dom ai _) ->
+                             -- setRelevance Relevant $
+                             hideOrKeepInstance $ Arg ai underscore
+                  apps h $ us ++ es  -- Note: unless --show-implicit, @apps@ will drop @us@.
                 -- otherwise, we drop all parameters
                 _ -> apps h es
-{- CODE FROM 2012-04-xx
-              let doms = genericDrop np $ telToList tel
-              reportSLn "syntax.reify.con" 30 $ unlines
-                [ "calling nameFirstIfHidden"
-                , "doms = " ++ show doms
-                , "es   = " ++ show es
-                , "n    = " ++ show n
-                , "np   = " ++ show np
-                ]
-              napps h $ genericDrop (n - np) $ nameFirstIfHidden doms es
--}
---    I.Lam info b | isAbsurdBody b -> return $ A.AbsurdLam exprInfo $ getHiding info
+
+--    I.Lam info b | isAbsurdBody b -> return $ A. AbsurdLam noExprInfo $ getHiding info
     I.Lam info b    -> do
       (x,e) <- reify b
-      return $ A.Lam exprInfo (DomainFree info x) e
+      return $ A.Lam noExprInfo (DomainFree info x) e
       -- Andreas, 2011-04-07 we do not need relevance information at internal Lambda
     I.Lit l        -> reify l
     I.Level l      -> reify l
     I.Pi a b       -> case b of
         NoAbs _ b'
-          | notHidden a -> uncurry (A.Fun $ exprInfo) <$> reify (a, b')
+          | notHidden a -> uncurry (A.Fun $ noExprInfo) <$> reify (a, b')
             -- Andreas, 2013-11-11 Hidden/Instance I.Pi must be A.Pi
             -- since (a) the syntax {A} -> B or {{A}} -> B is not legal
             -- and (b) the name of the binder might matter.
@@ -431,7 +422,7 @@
       where
         mkPi b (Arg info a) = do
           (x, b) <- reify b
-          return $ A.Pi exprInfo [TypedBindings noRange $ Arg info (TBind noRange [pure x] a)] b
+          return $ A.Pi noExprInfo [TypedBindings noRange $ Arg info (TBind noRange [pure x] a)] b
         -- We can omit the domain type if it doesn't have any free variables
         -- and it's mentioned in the target type.
         domainFree a b = do
@@ -440,9 +431,9 @@
 
     I.Sort s     -> reify s
     I.MetaV x es -> do
-      let vs = fromMaybe __IMPOSSIBLE__ $ allApplyElims es
       x' <- reify x
-      apps x' =<< reifyIArgs vs
+      ifM (asks envPrintMetasBare) {-then-} (return x') {-else-} $
+        elims x' =<< reify es
     I.DontCare v -> A.DontCare <$> reifyTerm expandAnonDefs v
     I.Shared p   -> reifyTerm expandAnonDefs $ derefPtr p
   where
@@ -450,10 +441,10 @@
     -- to improve error messages.
     -- Don't do this if we have just expanded into a display form,
     -- otherwise we loop!
-    reifyDef :: Bool -> QName -> I.Args -> TCM Expr
-    reifyDef True x vs =
-      ifM (not . null . inverseScopeLookupName x <$> getScope) (reifyDef' x vs) $ do
-      r <- reduceDefCopy x vs
+    reifyDef :: Bool -> QName -> I.Elims -> TCM Expr
+    reifyDef True x es =
+      ifM (not . null . inverseScopeLookupName x <$> getScope) (reifyDef' x es) $ do
+      r <- reduceDefCopy x es
       case r of
         YesReduction _ v -> do
           reportSLn "reify.anon" 60 $ unlines
@@ -466,31 +457,53 @@
           reportSLn "reify.anon" 60 $ unlines
             [ "no reduction on defined ident. in anonymous module"
             , "x  = " ++ show x
-            , "vs = " ++ show vs
+            , "es = " ++ show es
             ]
-          reifyDef' x vs
-    reifyDef _ x vs = reifyDef' x vs
+          reifyDef' x es
+    reifyDef _ x es = reifyDef' x es
 
-    reifyDef' :: QName -> I.Args -> TCM Expr
-    reifyDef' x@(QName _ name) vs = do
+    reifyDef' :: QName -> I.Elims -> TCM Expr
+    reifyDef' x es = do
+      reportSLn "reify.def" 60 $ "reifying call to " ++ show x
       -- We should drop this many arguments from the local context.
       n <- getDefFreeVars x
-      mdefn <- liftTCM $ (Just <$> getConstInfo x) `catchError` \_ -> return Nothing
-      -- check if we have an absurd lambda
-      let reifyAbsurdLambda cont =
-            case theDef <$> mdefn of
-              Just Function{ funCompiled = Just Fail, funClauses = [cl] }
+      -- If the definition is not (yet) in the signature,
+      -- we just do the obvious.
+      let fallback = elims (A.Def x) =<< reify (drop n es)
+      caseMaybeM (tryMaybe $ getConstInfo x) fallback $ \ defn -> do
+      let def = theDef defn
+
+      -- Check if we have an absurd lambda.
+      case def of
+       Function{ funCompiled = Just Fail, funClauses = [cl] }
                 | isAbsurdLambdaName x -> do
                   -- get hiding info from last pattern, which should be ()
-                  let h = getHiding $ last (clausePats cl)
-                  apps (A.AbsurdLam exprInfo h) =<< reifyIArgs vs
-              _ -> cont
-      reifyAbsurdLambda $ do
-        (pad, vs :: [NamedArg Term]) <- do
-          case mdefn of
-            Nothing   -> return ([], map (fmap unnamed) $ genericDrop n vs)
-            Just defn -> do
-              let def = theDef defn
+                  let h = getHiding $ last $ namedClausePats cl
+                  elims (A.AbsurdLam noExprInfo h) =<< reify (drop n es)
+
+      -- Otherwise (no absurd lambda):
+       _ -> do
+
+        -- Andrea(s), 2016-07-06
+        -- Extended lambdas are not considered to be projection like,
+        -- as they are mutually recursive with their parent.
+        -- Thus we do not have to consider padding them.
+
+        -- Check whether we have an extended lambda and display forms are on.
+        df <- displayFormsEnabled
+        toppars <- size <$> do lookupSection $ qnameModule x
+        let extLam = case def of
+             Function{ funExtLam = Just{}, funProjection = Just{} } -> __IMPOSSIBLE__
+             Function{ funExtLam = Just (ExtLamInfo h nh) } -> Just (toppars + h + nh)
+             _ -> Nothing
+        case extLam of
+          Just pars | df -> reifyExtLam x pars (defClauses defn) es
+
+        -- Otherwise (ordinary function call):
+          _ -> do
+           (pad, nes :: [Elim' (Named_ Term)]) <- case def of
+
+            Function{ funProjection = Just Projection{ projIndex = np } } | np > 0 -> do
               -- This is tricky:
               --  * getDefFreeVars x tells us how many arguments
               --    are part of the local context
@@ -499,57 +512,99 @@
               --  * when showImplicits is on we'd like to see the dropped
               --    projection arguments
 
+              TelV tel _ <- telViewUpTo np (defType defn)
+              let (as, rest) = splitAt (np - 1) $ telToList tel
+                  dom = fromMaybe __IMPOSSIBLE__ $ headMaybe rest
+
               -- These are the dropped projection arguments
-              (np, pad, dom) <-
-                  case def of
-                      Function{ funProjection = Just Projection{ projIndex = np } } | np > 0 -> do
-                        TelV tel _ <- telView (defType defn)
-                        scope <- getScope
-                        let (as, dom:_) = splitAt (np - 1) $ telToList tel
-                            whocares = A.Underscore $ Info.emptyMetaInfo { metaScope = scope }
-                        return (np, map (argFromDom . (fmap $ const whocares)) as, dom)
-                      _ -> return (0, [], __IMPOSSIBLE__)
-              -- Now pad' ++ vs' = drop n (pad ++ vs)
-              let pad' = genericDrop n pad
-                  vs'  = genericDrop (max 0 (n - size pad)) vs
-              -- Andreas, 2012-04-21: get rid of hidden underscores {_}
-              -- Keep non-hidden arguments of the padding
+              scope <- getScope
+              let underscore = A.Underscore $ Info.emptyMetaInfo { metaScope = scope }
+              let pad = for as $ \ (Dom ai (x, _)) ->
+                    Arg ai $ Named (Just $ unranged x) underscore
+
+              -- Now pad' ++ es' = drop n (pad ++ es)
+              let pad' = drop n pad
+                  es'  = drop (max 0 (n - size pad)) es
+              -- Andreas, 2012-04-21: get rid of hidden underscores {_} and {{_}}
+              -- Keep non-hidden arguments of the padding.
+              --
+              -- Andreas, 2016-12-20, issue #2348:
+              -- Let @padTail@ be the list of arguments of the padding
+              -- (*) after the last visible argument of the padding, and
+              -- (*) with the same visibility as the first regular argument.
+              -- If @padTail@ is not empty, we need to
+              -- print the first regular argument with name.
+              -- We further have to print all elements of @padTail@
+              -- which have the same name and visibility of the
+              -- first regular argument.
               showImp <- showImplicitArguments
-              return (filter visible pad',
-                if not (null pad) && showImp && notVisible (last pad)
-                   then nameFirstIfHidden [dom] vs'
-                   else map (fmap unnamed) vs')
-        df <- displayFormsEnabled
-        let extLam = case mdefn of
-                      Nothing -> Nothing
-                      Just defn -> case theDef defn of
-                                    Function{ funExtLam = Just (ExtLamInfo h nh) } -> Just (h + nh)
-                                    _                                    -> Nothing
-        case extLam of
-          Just pars | df -> do
-            info <- getConstInfo x
-            reifyExtLam x pars (defClauses info) vs
-          _ -> do
-           let apps = foldl' (\e a -> A.App exprInfo e (fmap unnamed a))
-           napps (A.Def x `apps` pad) =<< reifyIArgs vs
 
-    reifyExtLam :: QName -> Int -> [I.Clause] -> [NamedArg Term] -> TCM Expr
-    reifyExtLam x n cls vs = do
-      reportSLn "reify.def" 10 $ "reifying extended lambda with definition: x = " ++ show x
-      -- drop lambda lifted arguments
-      cls <- mapM (reify . QNamed x . dropArgs n) $ cls
+              -- Get the visible arguments of the padding and the rest
+              -- after the last visible argument.
+              let (padVisNamed, padRest) = filterAndRest visible pad'
+
+              -- Remove the names from the visible arguments.
+              let padVis  = map (fmap (unnamed . namedThing)) padVisNamed
+
+              -- Keep only the rest with the same visibility of @dom@...
+              let padTail = filter ((getHiding dom ==) . getHiding) padRest
+
+              -- ... and even the same name.
+              let padSame = filter ((Just (fst (unDom dom)) ==) . fmap rangedThing . nameOf . unArg) padTail
+
+              return $ if null padTail || not showImp
+                then (padVis           , map (fmap unnamed) es')
+                else (padVis ++ padSame, nameFirstIfHidden dom es')
+
+            -- If it is not a projection(-like) function, we need no padding.
+            _ -> return ([], map (fmap unnamed) $ drop n es)
+           let hd = foldl' (A.App noExprInfo) (A.Def x) pad
+           nelims hd =<< reify nes
+
+    -- Andreas, 2016-07-06 Issue #2047
+
+    -- With parameter refinement, the "parameter" patterns of an extended
+    -- lambda can now be different from variable patterns.  If we just drop
+    -- them (plus the associated arguments to the extended lambda), we produce
+    -- something
+
+    -- * that violates internal invariants.  In particular, the permutation
+    --   dbPatPerm from the patterns to the telescope can no longer be
+    --   computed.  (And in fact, dropping from the start of the telescope is
+    --   just plainly unsound then.)
+
+    -- * prints the wrong thing (old fix for #2047)
+
+    -- What we do now, is more sound, although not entirely satisfying:
+    -- When the "parameter" patterns of an external lambdas are not variable
+    -- patterns, we fall back to printing the internal function created for the
+    -- extended lambda, instead trying to construct the nice syntax.
+
+    reifyExtLam :: QName -> Int -> [I.Clause] -> I.Elims -> TCM Expr
+    reifyExtLam x npars cls es = do
+      reportSLn "reify.def" 10 $ "reifying extended lambda " ++ show x
+      reportSLn "reify.def" 50 $ show $ nest 2 $ vcat
+        [ text "npars =" <+> pretty npars
+        , text "es    =" <+> fsep (map (prettyPrec 10) es)
+        , text "def   =" <+> vcat (map pretty cls) ]
+      -- As extended lambda clauses live in the top level, we add the whole
+      -- section telescope to the number of parameters.
+      let (pars, rest) = splitAt npars es
+      -- Since we applying the clauses to the parameters,
+      -- we do not need to drop their initial "parameter" patterns
+      -- (this is taken care of by @apply@).
+      cls <- mapM (reify . NamedClause x False . (`applyE` pars)) cls
       let cx    = nameConcrete $ qnameName x
           dInfo = mkDefInfo cx noFixity' PublicAccess ConcreteDef (getRange x)
-      napps (A.ExtendedLam exprInfo dInfo x cls) =<< reifyIArgs vs
+      elims (A.ExtendedLam noExprInfo dInfo x cls) =<< reify rest
 
--- | @nameFirstIfHidden n (a1->...an->{x:a}->b) ({e} es) = {x = e} es@
-nameFirstIfHidden :: [Dom (ArgName, t)] -> [Arg a] -> [NamedArg a]
-nameFirstIfHidden _         []                    = []
-nameFirstIfHidden []        (_ : _)               = __IMPOSSIBLE__
-nameFirstIfHidden (dom : _) (Arg info e : es) | isHidden info =
-  Arg info (Named (Just $ unranged $ fst $ unDom dom) e) :
+-- | @nameFirstIfHidden (x:a) ({e} es) = {x = e} es@
+nameFirstIfHidden :: Dom (ArgName, t) -> [Elim' a] -> [Elim' (Named_ a)]
+nameFirstIfHidden dom (I.Apply (Arg info e) : es) | notVisible info =
+  I.Apply (Arg info (Named (Just $ unranged $ fst $ unDom dom) e)) :
   map (fmap unnamed) es
-nameFirstIfHidden _         es                    = map (fmap unnamed) es
+nameFirstIfHidden _ es =
+  map (fmap unnamed) es
 
 instance Reify i a => Reify (Named n i) (Named n a) where
   reify = traverse reify
@@ -562,124 +617,35 @@
               `and2M` (return (argInfoRelevance info /= Irrelevant) `or2M` showIrrelevantArguments)
   reifyWhen b i = traverse (reifyWhen b) i
 
-instance Reify Elim Expr where
-  reifyWhen = reifyWhenE
-  reify e = case e of
-    I.Apply v -> appl "apply" <$> reify v
-    I.Proj f  -> appl "proj"  <$> reify ((defaultArg $ I.Def f []) :: Arg Term)
-    where
-      appl :: String -> Arg Expr -> Expr
-      appl s v = A.App exprInfo (A.Lit (LitString noRange s)) $ fmap unnamed v
 
-type NamedClause = QNamed I.Clause
--- data NamedClause = NamedClause QName I.Clause
-
-instance Reify ClauseBody RHS where
-  reify NoBody     = return AbsurdRHS
-  reify (Body v)   = RHS <$> reify v
-  reify (Bind b)   = reify $ absBody b  -- the variables should already be bound
-
--- Local data types to shuffleDots
-data DotBind = BindFirstExplicit | BindFirstImplicit | AlreadyBound deriving (Show)
-data DoBind  = YesBind | NoBind | DontTouch deriving (Eq, Show)
+data NamedClause = NamedClause QName Bool I.Clause
+  -- ^ Also tracks whether module parameters should be dropped from the patterns.
 
 -- The Monoid instance for Data.Map doesn't require that the values are a
 -- monoid.
 newtype MonoidMap k v = MonoidMap { unMonoidMap :: Map.Map k v }
 
+instance (Ord k, Monoid v) => Semigroup (MonoidMap k v) where
+  MonoidMap m1 <> MonoidMap m2 = MonoidMap (Map.unionWith mappend m1 m2)
+
 instance (Ord k, Monoid v) => Monoid (MonoidMap k v) where
   mempty = MonoidMap Map.empty
-  mappend (MonoidMap m1) (MonoidMap m2) = MonoidMap (Map.unionWith mappend m1 m2)
-
--- | Move dots on variables so that each variable is bound at its first
---   non-hidden occurrence (if any). If all occurrences are hidden it's bound
---   at the first occurrence.
-shuffleDots :: ([NamedArg A.Pattern], [A.Pattern]) -> TCM ([NamedArg A.Pattern], [A.Pattern])
-shuffleDots (ps, wps) = do
-  return $ (`evalState` xs)
-         $ (`runReaderT` NotHidden)
-         $ (,) <$> redotArgs ps <*> redotPats wps
-  where
-    -- An argument is explicit if _all_ Arg's on the way are explicit. In the
-    -- map we store if _any_ of the variable occurrences were explicit.
-    implicit = All False
-    explicit = All True
-                                        -- compute binding strategy
-    xs = Map.map (\(_, h) -> if getAny h then BindFirstExplicit else BindFirstImplicit)
-       $ Map.filter (getAny . fst)      -- remove vars that don't appear dotted
-       $ unMonoidMap
-       $ argsVars explicit ps `mappend` foldMap (patVars explicit) wps
-
-    -- Compute a map from pattern vars to (AppearsDotted, AppearsInANonHiddenPosition)
-    argsVars h  = foldMap (argVars h)
-    argVars h a = (foldMap $ foldMap $ patVars (h `mappend` h')) a
-      where h' = if getHiding a == NotHidden then explicit else implicit
-    patVars h p = case p of
-      A.VarP x             -> MonoidMap $ Map.singleton x (Any False, Any $ getAll h)
-      A.DotP _ (A.Var x)   -> MonoidMap $ Map.singleton x (Any True,  Any $ getAll h)
-      A.DotP{}             -> mempty
-      A.ConP _ _ ps        -> argsVars h ps
-      A.DefP _ _ ps        -> argsVars h ps
-      A.PatternSynP _ _ ps -> argsVars h ps
-      A.WildP{}            -> mempty
-      A.AbsurdP{}          -> mempty
-      A.LitP{}             -> mempty
-      A.AsP{}              -> __IMPOSSIBLE__
-      A.RecP _ as          -> foldMap (foldMap (patVars h)) as
-
-    shouldBind x = do
-      xs <- get
-      h  <- ask
-      let b = case Map.lookup x xs of
-                Nothing -> DontTouch
-                Just s  -> case s of
-                  BindFirstExplicit | h == NotHidden -> YesBind
-                                    | otherwise      -> NoBind
-                  BindFirstImplicit -> YesBind  -- in this case we know h isn't NotHidden
-                  AlreadyBound -> NoBind
-      when (b == YesBind) $ put $ Map.adjust (const AlreadyBound) x xs
-      return b
-
-    redotArgs = traverse redotArg
-    redotArg a = hide $ traverse (traverse redotPat) a
-      where hide | getHiding a /= NotHidden = local (const Hidden)
-                 | otherwise                = id
-    redotPats = traverse redotPat
-    redotPat p = case p of
-      A.VarP x             -> redotVar p x
-      A.DotP _ (A.Var x)   -> redotVar p x
-      A.DotP{}             -> pure p
-      A.ConP i c ps        -> A.ConP i c <$> redotArgs ps
-      A.DefP i f ps        -> A.DefP i f <$> redotArgs ps
-      A.PatternSynP i x ps -> A.PatternSynP i x <$> redotArgs ps
-      A.WildP{}            -> pure p
-      A.AbsurdP{}          -> pure p
-      A.LitP{}             -> pure p
-      A.AsP{}              -> __IMPOSSIBLE__
-      A.RecP i as          -> A.RecP i <$> traverse (traverse redotPat) as
-
-    redotVar p x = do
-      b <- shouldBind x
-      return $ case b of
-        DontTouch -> p
-        YesBind   -> A.VarP x
-        NoBind    -> A.DotP (Info.PatRange $ getRange p) (A.Var x)
+  mappend = (<>)
 
 -- | Removes implicit arguments that are not needed, that is, that don't bind
 --   any variables that are actually used and doesn't do pattern matching.
+--   Doesn't strip any arguments that were written explicitly by the user.
 stripImplicits :: ([NamedArg A.Pattern], [A.Pattern]) ->
                   TCM ([NamedArg A.Pattern], [A.Pattern])
 stripImplicits (ps, wps) = do          -- v if show-implicit we don't need the names
   ifM showImplicitArguments (return (map (unnamed . namedThing <$>) ps, wps)) $ do
-    let vars = dotVars (ps, wps)
     reportSLn "reify.implicit" 30 $ unlines
       [ "stripping implicits"
       , "  ps   = " ++ show ps
       , "  wps  = " ++ show wps
-      , "  vars = " ++ show vars
       ]
     let allps       = ps ++ map defaultNamedArg wps
-        sps         = blankDots $ foldl (.) (strip Set.empty) (map rearrangeBinding $ Set.toList vars) $ allps
+        sps         = blankDots $ strip allps
         (ps', wps') = splitAt (length sps - length wps) sps
     reportSLn "reify.implicit" 30 $ unlines
       [ "  ps'  = " ++ show ps'
@@ -687,64 +653,40 @@
       ]
     return (ps', map namedArg wps')
     where
-      argsVars = Set.unions . map argVars
-      argVars = patVars . namedArg
-      patVars p = case p of
-        A.VarP x      -> Set.singleton x
-        A.ConP _ _ ps -> argsVars ps
-        A.DefP _ _ ps -> Set.empty
-        A.DotP _ e    -> Set.empty
-        A.WildP _     -> Set.empty
-        A.AbsurdP _   -> Set.empty
-        A.LitP _      -> Set.empty
-        A.AsP _ _ p   -> patVars p
-        A.PatternSynP _ _ _ -> __IMPOSSIBLE__ -- Set.empty
-        A.RecP _ as -> foldMap (foldMap patVars) as
-
-      -- Replace dot variables by ._ if they use implicitly bound variables. This
-      -- is slightly nicer than making the implicts explicit.
-      blankDots ps = (map . fmap . fmap . fmap) blank ps
-        where
-          bound = argsVars ps
-          blank e | Set.null (Set.difference (dotVars e) bound) = e
-                  | otherwise = A.Underscore emptyMetaInfo
-
-      -- Pick the "best" place to bind the variable. Best in this case
-      -- is the left-most explicit binding site. But, of course we can't
-      -- do this since binding site might be forced by a parent clause.
-      -- Why? Because the binding site we pick might not exist in the
-      -- generated with function if it corresponds to a dot pattern.
-      rearrangeBinding x ps = ps
+      -- Replace variables in dot patterns by an underscore _ if they are hidden
+      -- in the pattern. This is slightly nicer than making the implicts explicit.
+      blankDots ps = blank (varsBoundIn ps) ps
 
-      strip dvs ps = stripArgs True ps
+      strip ps = stripArgs True ps
         where
           stripArgs _ [] = []
           stripArgs fixedPos (a : as) =
-            case getHiding a of
-              Hidden   | canStrip a as -> stripArgs False as
-              Instance | canStrip a as -> stripArgs False as
-              _                        -> stripName fixedPos (stripArg a) :
-                                          stripArgs True as
+            if canStrip a
+            then if   all canStrip $ takeWhile isUnnamedHidden as
+                 then stripArgs False as
+                 else let a' = fmap ($> A.WildP (Info.PatRange $ getRange a)) a
+                      in  stripName fixedPos a' : stripArgs True as
+            else stripName fixedPos (stripArg a) : stripArgs True as
 
           stripName True  = fmap (unnamed . namedThing)
           stripName False = id
 
-          canStrip a as = and
-            [ varOrDot p
-            , noInterestingBindings p
-            , all (flip canStrip []) $ takeWhile isUnnamedHidden as
+          canStrip a = and
+            [ notVisible a
+            , getOrigin a /= UserWritten
+            , varOrDot (namedArg a)
             ]
-            where p = namedArg a
 
-          isUnnamedHidden x = notVisible x && nameOf (unArg x) == Nothing
+          isUnnamedHidden x = notVisible x && nameOf (unArg x) == Nothing && isNothing (isProjP x)
 
           stripArg a = fmap (fmap stripPat) a
 
           stripPat p = case p of
             A.VarP _      -> p
             A.ConP i c ps -> A.ConP i c $ stripArgs True ps
+            A.ProjP{}     -> p
             A.DefP _ _ _  -> p
-            A.DotP _ e    -> p
+            A.DotP _ _ e  -> p
             A.WildP _     -> p
             A.AbsurdP _   -> p
             A.LitP _      -> p
@@ -752,88 +694,94 @@
             A.PatternSynP _ _ _ -> __IMPOSSIBLE__ -- p
             A.RecP i fs   -> A.RecP i $ map (fmap stripPat) fs  -- TODO Andreas: is this right?
 
-          noInterestingBindings p =
-            Set.null $ dvs `Set.intersection` patVars p
-
           varOrDot A.VarP{}      = True
           varOrDot A.WildP{}     = True
           varOrDot A.DotP{}      = True
+          varOrDot (A.ConP cpi _ ps) | patOrigin cpi == ConOSystem
+                                 = all varOrDot $ map namedArg ps
           varOrDot _             = False
 
--- | @dotVars ps@ gives all the variables inside of dot patterns of @ps@
---   It is only invoked for patternish things. (Ulf O-tone!)
---   Use it for printing l.h.sides: which of the implicit arguments
---   have to be made explicit.
-class DotVars a where
-  dotVars  :: a -> Set Name
-  isConPat :: a -> Bool
-  isConPat _ = False
+-- | @blank bound x@ replaces all variables in @x@ that are not in @bound@ by
+--   an underscore @_@. It is used for printing dot patterns: we don't want to
+--   make implicit variables explicit, so we blank them out in the dot patterns
+--   instead (this is fine since dot patterns can be inferred anyway).
+class BlankVars a where
+  blank :: Set Name -> a -> a
 
-instance DotVars a => DotVars (Arg a) where
-  dotVars a = if notVisible a && not (isConPat a)   -- Hidden constructor patterns are visible!
-              then Set.empty
-              else dotVars (unArg a)
-  isConPat = isConPat . unArg
+instance BlankVars a => BlankVars (Arg a) where
+  blank bound = fmap $ blank bound
 
-instance DotVars a => DotVars (Named s a) where
-  dotVars = dotVars . namedThing
-  isConPat = isConPat . namedThing
+instance BlankVars a => BlankVars (Named s a) where
+  blank bound = fmap $ blank bound
 
-instance DotVars a => DotVars [a] where
-  dotVars = Set.unions . map dotVars
+instance BlankVars a => BlankVars [a] where
+  blank bound = fmap $ blank bound
 
-instance (DotVars a, DotVars b) => DotVars (a, b) where
-  dotVars (x, y) = Set.union (dotVars x) (dotVars y)
+instance (BlankVars a, BlankVars b) => BlankVars (a, b) where
+  blank bound (x, y) = (blank bound x, blank bound y)
 
-instance (DotVars a, DotVars b) => DotVars (Either a b) where
-  dotVars = either dotVars dotVars
+instance (BlankVars a, BlankVars b) => BlankVars (Either a b) where
+  blank bound (Left x)  = Left $ blank bound x
+  blank bound (Right y) = Right $ blank bound y
 
-instance DotVars A.Clause where
-  dotVars (A.Clause _ rhs [] _) = dotVars rhs
-  dotVars (A.Clause _ rhs (_:_) _) = __IMPOSSIBLE__ -- cannot contain where clauses?
+instance BlankVars A.NamedDotPattern where
+  blank bound = id
 
-instance DotVars A.Pattern where
-  dotVars p = case p of
-    A.VarP _      -> Set.empty   -- do not add pattern vars
-    A.ConP _ _ ps -> dotVars ps
-    A.DefP _ _ ps -> dotVars ps
-    A.DotP _ e    -> dotVars e
-    A.WildP _     -> Set.empty
-    A.AbsurdP _   -> Set.empty
-    A.LitP _      -> Set.empty
-    A.AsP _ _ p   -> dotVars p
-    A.PatternSynP _ _ _ -> __IMPOSSIBLE__ -- Set.empty
-    A.RecP _ fs   -> dotVars fs
+instance BlankVars A.Clause where
+  blank bound (A.Clause lhs namedDots rhs [] ca) =
+    let bound' = varsBoundIn lhs `Set.union` bound
+    in  A.Clause (blank bound' lhs)
+                 (blank bound' namedDots)
+                 (blank bound' rhs) [] ca
+  blank bound (A.Clause lhs namedDots rhs (_:_) ca) = __IMPOSSIBLE__
 
-  isConPat A.ConP{} = True
-  isConPat A.LitP{} = True
-  isConPat _        = False
+instance BlankVars A.LHS where
+  blank bound (A.LHS i core wps) = uncurry (A.LHS i) $ blank bound (core, wps)
 
--- | Getting all(!) variables of an expression.
---   It should only get free ones, but it does not matter to include
---   the bound ones.
-instance DotVars A.Expr where
-  dotVars e = case e of
-    A.ScopedExpr _ e       -> dotVars e
-    A.Var x                -> Set.singleton x -- add any expression variable
-    A.Def _                -> Set.empty
-    A.Proj _               -> Set.empty
-    A.Con _                -> Set.empty
-    A.Lit _                -> Set.empty
-    A.QuestionMark{}       -> Set.empty
-    A.Underscore _         -> Set.empty
-    A.App _ e1 e2          -> dotVars (e1, e2)
-    A.WithApp _ e es       -> dotVars (e, es)
-    A.Lam _ _ e            -> dotVars e
-    A.AbsurdLam _ _        -> Set.empty
-    A.ExtendedLam _ _ _ cs -> dotVars cs
-    A.Pi _ tel e           -> dotVars (tel, e)
-    A.Fun _ a b            -> dotVars (a, b)
-    A.Set _ _              -> Set.empty
-    A.Prop _               -> Set.empty
+instance BlankVars A.LHSCore where
+  blank bound (A.LHSHead f ps) = A.LHSHead f $ blank bound ps
+  blank bound (A.LHSProj p b ps) = uncurry (A.LHSProj p) $ blank bound (b, ps)
+
+instance BlankVars A.Pattern where
+  blank bound p = case p of
+    A.VarP _      -> p   -- do not blank pattern vars
+    A.ConP c i ps -> A.ConP c i $ blank bound ps
+    A.ProjP{}     -> p
+    A.DefP i f ps -> A.DefP i f $ blank bound ps
+    A.DotP i o e  -> A.DotP i o $ blank bound e
+    A.WildP _     -> p
+    A.AbsurdP _   -> p
+    A.LitP _      -> p
+    A.AsP i n p   -> A.AsP i n $ blank bound p
+    A.PatternSynP _ _ _ -> __IMPOSSIBLE__
+    A.RecP i fs   -> A.RecP i $ blank bound fs
+
+instance BlankVars A.Expr where
+  blank bound e = case e of
+    A.ScopedExpr i e       -> A.ScopedExpr i $ blank bound e
+    A.Var x                -> if x `Set.member` bound then e
+                              else A.Underscore emptyMetaInfo
+    A.Def _                -> e
+    A.Proj{}               -> e
+    A.Con _                -> e
+    A.Lit _                -> e
+    A.QuestionMark{}       -> e
+    A.Underscore _         -> e
+    A.Dot i e              -> A.Dot i $ blank bound e
+    A.App i e1 e2          -> uncurry (A.App i) $ blank bound (e1, e2)
+    A.WithApp i e es       -> uncurry (A.WithApp i) $ blank bound (e, es)
+    A.Lam i b e            -> let bound' = varsBoundIn b `Set.union` bound
+                              in  A.Lam i (blank bound b) (blank bound' e)
+    A.AbsurdLam _ _        -> e
+    A.ExtendedLam i d f cs -> A.ExtendedLam i d f $ blank bound cs
+    A.Pi i tel e           -> let bound' = varsBoundIn tel `Set.union` bound
+                              in  uncurry (A.Pi i) $ blank bound' (tel, e)
+    A.Fun i a b            -> uncurry (A.Fun i) $ blank bound (a, b)
+    A.Set _ _              -> e
+    A.Prop _               -> e
     A.Let _ _ _            -> __IMPOSSIBLE__
-    A.Rec _ es             -> dotVars es
-    A.RecUpdate _ e es     -> dotVars (e, es)
+    A.Rec i es             -> A.Rec i $ blank bound es
+    A.RecUpdate i e es     -> uncurry (A.RecUpdate i) $ blank bound (e, es)
     A.ETel _               -> __IMPOSSIBLE__
     A.QuoteGoal {}         -> __IMPOSSIBLE__
     A.QuoteContext {}      -> __IMPOSSIBLE__
@@ -841,89 +789,122 @@
     A.QuoteTerm {}         -> __IMPOSSIBLE__
     A.Unquote {}           -> __IMPOSSIBLE__
     A.Tactic {}            -> __IMPOSSIBLE__
-    A.DontCare v           -> dotVars v
-    A.PatternSyn {}        -> Set.empty
-    A.Macro {}             -> Set.empty
+    A.DontCare v           -> A.DontCare $ blank bound v
+    A.PatternSyn {}        -> e
+    A.Macro {}             -> e
 
-instance DotVars a => DotVars (FieldAssignment' a) where
-  dotVars a = dotVars (a ^. exprFieldA)
+instance BlankVars a => BlankVars (FieldAssignment' a) where
+  blank bound = over exprFieldA (blank bound)
 
-instance DotVars A.ModuleName where
-  dotVars _ = Set.empty
+instance BlankVars A.ModuleName where
+  blank bound = id
 
-instance DotVars RHS where
-  dotVars (RHS e) = dotVars e
-  dotVars AbsurdRHS = Set.empty
-  dotVars (WithRHS _ es clauses) = __IMPOSSIBLE__ -- NZ
-  dotVars (RewriteRHS xes rhs _) = __IMPOSSIBLE__ -- NZ
+instance BlankVars RHS where
+  blank bound (RHS e mc)             = RHS (blank bound e) mc
+  blank bound AbsurdRHS              = AbsurdRHS
+  blank bound (WithRHS _ es clauses) = __IMPOSSIBLE__ -- NZ
+  blank bound (RewriteRHS xes rhs _) = __IMPOSSIBLE__ -- NZ
 
-instance DotVars TypedBindings where
-  dotVars (TypedBindings _ bs) = dotVars bs
+instance BlankVars A.LamBinding where
+  blank bound b@A.DomainFree{} = b
+  blank bound (A.DomainFull bs) = A.DomainFull $ blank bound bs
 
-instance DotVars TypedBinding where
-  dotVars (TBind _ _ e) = dotVars e
-  dotVars (TLet _ _)    = __IMPOSSIBLE__ -- Since the internal syntax has no let bindings left
+instance BlankVars TypedBindings where
+  blank bound (TypedBindings r bs) = TypedBindings r $ blank bound bs
 
-class MonadTick m where
-  tick :: m Nat
+instance BlankVars TypedBinding where
+  blank bound (TBind r n e) = TBind r n $ blank bound e
+  blank bound (TLet _ _)    = __IMPOSSIBLE__ -- Since the internal syntax has no let bindings left
 
-newtype TickT m a = TickT { unTickT :: StateT Nat m a }
-  deriving (Functor, Applicative, Monad, MonadReader r, MonadTrans, MonadIO) -- MonadExcept e,
+class Binder a where
+  varsBoundIn :: a -> Set Name
 
-instance Monad m => MonadTick (TickT m) where
-  tick = TickT $ do i <- get; put (i + 1); return i
+instance Binder A.LHS where
+  varsBoundIn (A.LHS _ core ps) = varsBoundIn (core, ps)
 
-instance MonadState s m => MonadState s (TickT m) where
-  state f = lift $ state f -- TickT $ StateT $ \ n -> (,n) <$> state f
+instance Binder A.LHSCore where
+  varsBoundIn (A.LHSHead _ ps)   = varsBoundIn ps
+  varsBoundIn (A.LHSProj _ b ps) = varsBoundIn (b, ps)
 
-instance MonadTCM tcm => MonadTCM (TickT tcm) where
-  liftTCM = lift . liftTCM
+instance Binder A.Pattern where
+  varsBoundIn p = case p of
+    A.VarP x             -> if show x == "()" then empty else singleton x
+    A.ConP _ _ ps        -> varsBoundIn ps
+    A.ProjP{}            -> empty
+    A.DefP _ _ ps        -> varsBoundIn ps
+    A.WildP{}            -> empty
+    A.AsP _ _ p          -> varsBoundIn p
+    A.DotP{}             -> empty
+    A.AbsurdP{}          -> empty
+    A.LitP{}             -> empty
+    A.PatternSynP _ _ ps -> varsBoundIn ps
+    A.RecP _ fs          -> varsBoundIn fs
 
-runTickT :: Monad m => TickT m a -> m a
-runTickT m = evalStateT (unTickT m) 0
+instance Binder A.LamBinding where
+  varsBoundIn (A.DomainFree _ x) = singleton x
+  varsBoundIn (A.DomainFull b)   = varsBoundIn b
 
--- TODO: implement reifyPatterns on de Bruijn patterns ( numberPatVars )
-reifyPatterns :: I.Telescope -> Permutation -> [NamedArg I.Pattern] -> TCM [NamedArg A.Pattern]
-reifyPatterns tel perm ps = runTickT (reifyArgs ps)
-  where
-    reifyArgs :: [NamedArg I.Pattern] -> TickT TCM [NamedArg A.Pattern]
-    reifyArgs is = mapM reifyArg is
+instance Binder TypedBindings where
+  varsBoundIn (TypedBindings _ b) = varsBoundIn b
 
-    reifyArg :: NamedArg I.Pattern -> TickT TCM (NamedArg A.Pattern)
-    reifyArg i = stripNameFromExplicit <$>
-                 traverse (traverse reifyPat) i
+instance Binder TypedBinding where
+  varsBoundIn (TBind _ xs _) = varsBoundIn xs
+  varsBoundIn (TLet _ bs)    = varsBoundIn bs
 
+instance Binder LetBinding where
+  varsBoundIn (LetBind _ _ x _ _) = singleton x
+  varsBoundIn (LetPatBind _ p _)  = varsBoundIn p
+  varsBoundIn LetApply{}          = empty
+  varsBoundIn LetOpen{}           = empty
+  varsBoundIn LetDeclaredVariable{} = empty
+
+instance Binder a => Binder (FieldAssignment' a) where
+  varsBoundIn = varsBoundIn . (^. exprFieldA)
+
+instance Binder a => Binder (Arg a) where
+  varsBoundIn = varsBoundIn . unArg
+
+instance Binder a => Binder (Named x a) where
+  varsBoundIn = varsBoundIn . namedThing
+
+instance Binder (WithHiding Name) where
+  varsBoundIn (WithHiding _ x) = singleton x
+
+instance Binder a => Binder [a] where
+  varsBoundIn xs = Set.unions $ map varsBoundIn xs
+
+instance (Binder a, Binder b) => Binder (a, b) where
+  varsBoundIn (x, y) = varsBoundIn x `Set.union` varsBoundIn y
+
+
+-- | Assumes that pattern variables have been added to the context already.
+--   Picks pattern variable names from context.
+reifyPatterns :: MonadTCM tcm => [NamedArg I.DeBruijnPattern] -> tcm [NamedArg A.Pattern]
+reifyPatterns = mapM $ stripNameFromExplicit <.> traverse (traverse reifyPat)
+  where
+    stripNameFromExplicit :: NamedArg p -> NamedArg p
     stripNameFromExplicit a
       | getHiding a == NotHidden = fmap (unnamed . namedThing) a
       | otherwise                = a
 
-    translate n = fromMaybe __IMPOSSIBLE__ $ vars !!! n
-      where
-        vars = permPicks $ invertP __IMPOSSIBLE__ perm
-
-    reifyPat :: I.Pattern -> TickT TCM A.Pattern
+    reifyPat :: MonadTCM tcm => I.DeBruijnPattern -> tcm A.Pattern
     reifyPat p = do
      liftTCM $ reportSLn "reify.pat" 80 $ "reifying pattern " ++ show p
      case p of
-      I.VarP "()" -> A.AbsurdP patNoRange <$ tick   -- HACK
-      I.VarP s -> do
-        i <- tick
-        let j = translate i
-        liftTCM $ A.VarP <$> nameOfBV (size tel - 1 - j)
+      I.VarP x | isAbsurdPatternName (dbPatVarName x)
+               -> return $ A.AbsurdP patNoRange    -- HACK
+      I.VarP x -> liftTCM $ A.VarP <$> nameOfBV (dbPatVarIndex x)
       I.DotP v -> do
         t <- liftTCM $ reify v
-        _ <- tick
-        let vars = Set.map show (dotVars t)
-            t'   = if Set.member "()" vars then underscore else t
-        return $ A.DotP patNoRange t'
+        return $ A.DotP patNoRange Inserted t
       I.LitP l  -> return $ A.LitP l
-      I.ProjP d -> return $ A.DefP patNoRange d []
+      I.ProjP o d     -> return $ A.ProjP patNoRange o $ AmbQ [d]
       I.ConP c cpi ps -> do
         liftTCM $ reportSLn "reify.pat" 60 $ "reifying pattern " ++ show p
-        tryRecPFromConP =<< do A.ConP ci (AmbQ [conName c]) <$> reifyArgs ps
+        tryRecPFromConP =<< do A.ConP ci (AmbQ [conName c]) <$> reifyPatterns ps
         where
-          origin = fromMaybe ConPCon $ I.conPRecord cpi
           ci = ConPatInfo origin patNoRange
+          origin = fromMaybe ConOCon $ I.conPRecord cpi
 
 -- | If the record constructor is generated or the user wrote a record pattern,
 --   turn constructor pattern into record pattern.
@@ -937,7 +918,7 @@
           -- If the record constructor is generated or the user wrote a record pattern,
           -- print record pattern.
           -- Otherwise, print constructor pattern.
-          if recNamedCon def && patOrigin ci /= ConPRec then fallback else do
+          if recNamedCon def && patOrigin ci /= ConORec then fallback else do
             fs <- liftTCM $ getRecordFieldNames r
             unless (length fs == length ps) __IMPOSSIBLE__
             return $ A.RecP patNoRange $ zipWith mkFA fs ps
@@ -945,26 +926,37 @@
           mkFA ax nap = FieldAssignment (unArg ax) (namedArg nap)
     _ -> __IMPOSSIBLE__
 
+instance Reify (QNamed I.Clause) A.Clause where
+  reify (QNamed f cl) = reify (NamedClause f True cl)
+
 instance Reify NamedClause A.Clause where
-  reify (QNamed f (I.Clause _ tel ps' body _ catchall)) = addCtxTel tel $ do
-    ps  <- reifyPatterns tel perm ps
+  reify (NamedClause f toDrop cl) = addContext (clauseTel cl) $ do
+    reportSLn "reify.clause" 60 $ "reifying NamedClause"
+      ++ "\n  f      = " ++ show f
+      ++ "\n  toDrop = " ++ show toDrop
+      ++ "\n  cl     = " ++ show cl
+    ps  <- reifyPatterns $ namedClausePats cl
     lhs <- liftTCM $ reifyDisplayFormP $ SpineLHS info f ps [] -- LHS info (LHSHead f ps) []
-    nfv <- getDefFreeVars f `catchError` \_ -> return 0
-    lhs <- stripImps $ dropParams nfv lhs
+    -- Unless @toDrop@ we have already dropped the module patterns from the clauses
+    -- (e.g. for extended lambdas).
+    lhs <- if not toDrop then return lhs else do
+      nfv <- getDefFreeVars f `catchError` \_ -> return 0
+      return $ dropParams nfv lhs
+    lhs <- stripImps lhs
     reportSLn "reify.clause" 60 $ "reifying NamedClause, lhs = " ++ show lhs
-    rhs <- reify $ renameP (reverseP perm) <$> body
+    rhs <- caseMaybe (clauseBody cl) (return AbsurdRHS) $ \ e -> do
+       RHS <$> reify e <*> pure Nothing
     reportSLn "reify.clause" 60 $ "reifying NamedClause, rhs = " ++ show rhs
-    let result = A.Clause (spineToLhs lhs) rhs [] catchall
+    let result = A.Clause (spineToLhs lhs) [] rhs [] (I.clauseCatchall cl)
     reportSLn "reify.clause" 60 $ "reified NamedClause, result = " ++ show result
     return result
     where
+      perm = fromMaybe __IMPOSSIBLE__ $ clausePerm cl
       info = LHSRange noRange
-      ps   = unnumberPatVars ps'
-      perm = dbPatPerm ps'
 
       dropParams n (SpineLHS i f ps wps) = SpineLHS i f (genericDrop n ps) wps
       stripImps (SpineLHS i f ps wps) = do
-        (ps, wps) <- stripImplicits =<< shuffleDots (ps, wps)
+        (ps, wps) <- stripImplicits (ps, wps)
         return $ SpineLHS i f ps wps
 
 instance Reify Type Expr where
@@ -976,12 +968,12 @@
     reify s = do
       s <- instantiateFull s
       case s of
-        I.Type (I.Max [])                -> return $ A.Set exprInfo 0
-        I.Type (I.Max [I.ClosedLevel n]) -> return $ A.Set exprInfo n
+        I.Type (I.Max [])                -> return $ A.Set noExprInfo 0
+        I.Type (I.Max [I.ClosedLevel n]) -> return $ A.Set noExprInfo n
         I.Type a -> do
           a <- reify a
-          return $ A.App exprInfo (A.Set exprInfo 0) (defaultNamedArg a)
-        I.Prop       -> return $ A.Prop exprInfo
+          return $ A.App noExprInfo (A.Set noExprInfo 0) (defaultNamedArg a)
+        I.Prop       -> return $ A.Prop noExprInfo
         I.Inf       -> A.Var <$> freshName_ ("Setω" :: String)
         I.SizeUniv  -> do
           I.Def sizeU [] <- primSizeUniv
@@ -989,7 +981,7 @@
         I.DLub s1 s2 -> do
           lub <- freshName_ ("dLub" :: String) -- TODO: hack
           (e1,e2) <- reify (s1, I.Lam defaultArgInfo $ fmap Sort s2)
-          let app x y = A.App exprInfo x (defaultNamedArg y)
+          let app x y = A.App noExprInfo x (defaultNamedArg y)
           return $ A.Var lub `app` e1 `app` e2
 
 instance Reify Level Expr where
@@ -1005,7 +997,7 @@
     s <- return $ if isUnderscore s && 0 `freeIn` v then "z" else s
 
     x <- freshName_ s
-    e <- addContext x -- type doesn't matter
+    e <- addContext' x -- type doesn't matter
          $ reify v
     return (x,e)
 
@@ -1020,8 +1012,13 @@
 instance Reify i a => Reify (Dom i) (Arg a) where
     reify (Dom info i) = Arg info <$> reify i
 
+instance Reify i a => Reify (I.Elim' i) (I.Elim' a) where
+  reify = traverse reify
+  reifyWhen b = traverse (reifyWhen b)
+
 instance Reify i a => Reify [i] [a] where
-    reify = traverse reify
+  reify = traverse reify
+  reifyWhen b = traverse (reifyWhen b)
 
 instance (Reify i1 a1, Reify i2 a2) => Reify (i1,i2) (a1,a2) where
     reify (x,y) = (,) <$> reify x <*> reify y
diff --git a/src/full/Agda/Syntax/Translation/ReflectedToAbstract.hs b/src/full/Agda/Syntax/Translation/ReflectedToAbstract.hs
--- a/src/full/Agda/Syntax/Translation/ReflectedToAbstract.hs
+++ b/src/full/Agda/Syntax/Translation/ReflectedToAbstract.hs
@@ -1,6 +1,3 @@
-{-# LANGUAGE FlexibleInstances      #-}
-{-# LANGUAGE FunctionalDependencies #-}
-{-# LANGUAGE MultiParamTypeClasses  #-}
 {-# LANGUAGE ScopedTypeVariables    #-}
 {-# LANGUAGE UndecidableInstances   #-}
 
@@ -25,8 +22,10 @@
 import Agda.Syntax.Scope.Monad (getCurrentModule)
 
 import Agda.Utils.Maybe
+import Agda.Utils.Monad
 import Agda.Utils.List
 import Agda.Utils.Functor
+import Agda.Utils.Size
 
 type Names = [Name]
 
@@ -93,14 +92,20 @@
 instance ToAbstract Term Expr where
   toAbstract t = case t of
     R.Var i es -> do
-      let fallback = withName ("@" ++ show i) return
-      name <- fromMaybeM fallback $ askName i
-      toAbstract (A.Var name, es)
+      mname <- askName i
+      case mname of
+        Nothing -> do
+          cxt   <- lift $ getContextTelescope
+          names <- asks $ drop (size cxt) . reverse
+          lift $ withShowAllArguments' False $ typeError $ DeBruijnIndexOutOfScope i cxt names
+        Just name -> toAbstract (A.Var name, es)
     R.Con c es -> toAbstract (A.Con (AmbQ [killRange c]), es)
-    R.Def f es -> toAbstract (A.Def (killRange f), es)
+    R.Def f es -> do
+      af <- lift $ mkDef (killRange f)
+      toAbstract (af, es)
     R.Lam h t  -> do
       (e, name) <- toAbstract t
-      let info  = setHiding h defaultArgInfo
+      let info  = setHiding h $ setOrigin Reflected defaultArgInfo
       return $ A.Lam exprNoRange (DomainFree info name) e
     R.ExtLam cs es -> do
       name <- freshName_ extendedLambdaName
@@ -120,6 +125,12 @@
       where info = emptyMetaInfo{ metaNumber = Just x }
     R.Unknown      -> return $ Underscore emptyMetaInfo
 
+mkDef :: QName -> TCM A.Expr
+mkDef f =
+  ifM (isMacro . theDef <$> getConstInfo f)
+      (return $ A.Macro f)
+      (return $ A.Def f)
+
 mkSet :: Expr -> Expr
 mkSet e = App exprNoRange (A.Set exprNoRange 0) $ defaultNamedArg e
 
@@ -132,13 +143,16 @@
   toAbstract pat = case pat of
     R.ConP c args -> do
       (names, args) <- toAbstractPats args
-      return (names, A.ConP (ConPatInfo ConPCon patNoRange) (AmbQ [killRange c]) args)
-    R.DotP    -> return ([], A.DotP patNoRange (Underscore emptyMetaInfo))
-    R.VarP s  -> withName s' $ \name -> return ([name], A.VarP name)
-      where s' = if (isNoName s) then "z" else s --TODO: only do this when var is free
+      return (names, A.ConP (ConPatInfo ConOCon patNoRange) (AmbQ [killRange c]) args)
+    R.DotP    -> return ([], A.WildP patNoRange)
+    R.VarP s | isNoName s -> withName "z" $ \ name -> return ([name], A.VarP name)
+        -- Ulf, 2016-08-09: Also bind noNames (#2129). This to make the
+        -- behaviour consistent with lambda and pi.
+        -- return ([], A.WildP patNoRange)
+    R.VarP s  -> withName s $ \ name -> return ([name], A.VarP name)
     R.LitP l  -> return ([], A.LitP l)
     R.AbsurdP -> return ([], A.AbsurdP patNoRange)
-    R.ProjP p -> return ([], A.DefP patNoRange p [])
+    R.ProjP d -> return ([], A.ProjP patNoRange ProjSystem $ AmbQ [killRange d])
 
 toAbstractPats :: [Arg R.Pattern] -> WithNames (Names, [NamedArg A.Pattern])
 toAbstractPats pats = case pats of
@@ -153,11 +167,11 @@
     (names, pats) <- toAbstractPats pats
     rhs           <- local (names++) $ toAbstract rhs
     let lhs = spineToLhs $ SpineLHS (LHSRange noRange) name pats []
-    return $ A.Clause lhs (RHS rhs) [] False
+    return $ A.Clause lhs [] (RHS rhs Nothing) [] False
   toAbstract (QNamed name (R.AbsurdClause pats)) = do
     (_, pats) <- toAbstractPats pats
     let lhs = spineToLhs $ SpineLHS (LHSRange noRange) name pats []
-    return $ A.Clause lhs AbsurdRHS [] False
+    return $ A.Clause lhs [] AbsurdRHS [] False
 
 instance ToAbstract [QNamed R.Clause] [A.Clause] where
   toAbstract = traverse toAbstract
diff --git a/src/full/Agda/Syntax/Treeless.hs b/src/full/Agda/Syntax/Treeless.hs
--- a/src/full/Agda/Syntax/Treeless.hs
+++ b/src/full/Agda/Syntax/Treeless.hs
@@ -1,5 +1,4 @@
 {-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE PatternGuards #-}
 
 -- | The treeless syntax is intended to be used as input for the compiler backends.
 -- It is more low-level than Internal syntax and is not used for type checking.
@@ -12,7 +11,7 @@
     , module Agda.Syntax.Treeless
     ) where
 
-import Prelude
+import Control.Arrow (first, second)
 
 import Data.Map (Map)
 import Data.Typeable (Typeable)
@@ -58,9 +57,34 @@
 
 -- | Compiler-related primitives. This are NOT the same thing as primitives
 -- in Agda's surface or internal syntax!
-data TPrim = PAdd | PSub | PMul | PQuot | PRem | PGeq | PLt | PEq | PIf | PSeq
+-- Some of the primitives have a suffix indicating which type of arguments they take,
+-- using the following naming convention:
+-- Char | Type
+-- C    | Character
+-- F    | Float
+-- I    | Integer
+-- Q    | QName
+-- S    | String
+data TPrim
+  = PAdd
+  | PSub
+  | PMul
+  | PQuot
+  | PRem
+  | PGeq
+  | PLt
+  | PEqI
+  | PEqF
+  | PEqS
+  | PEqC
+  | PEqQ
+  | PIf
+  | PSeq
   deriving (Typeable, Show, Eq, Ord)
 
+isPrimEq :: TPrim -> Bool
+isPrimEq p = p `elem` [PEqI, PEqF, PEqS, PEqC, PEqQ]
+
 mkTApp :: TTerm -> Args -> TTerm
 mkTApp x           [] = x
 mkTApp (TApp x as) bs = TApp x (as ++ bs)
@@ -73,6 +97,18 @@
       TApp a bs -> view a ++ bs
       _         -> [t]
 
+tLetView :: TTerm -> ([TTerm], TTerm)
+tLetView (TLet e b) = first (e :) $ tLetView b
+tLetView e          = ([], e)
+
+tLamView :: TTerm -> (Int, TTerm)
+tLamView = go 0
+  where go n (TLam b) = go (n + 1) b
+        go n t        = (n, t)
+
+mkTLam :: Int -> TTerm -> TTerm
+mkTLam n b = foldr ($) b $ replicate n TLam
+
 -- | Introduces a new binding
 mkLet :: TTerm -> TTerm -> TTerm
 mkLet x body = TLet x body
@@ -95,6 +131,7 @@
 
 plusKView :: TTerm -> Maybe (Integer, TTerm)
 plusKView (TApp (TPrim PAdd) [k, n]) | Just k <- intView k = Just (k, n)
+plusKView (TApp (TPrim PSub) [n, k]) | Just k <- intView k = Just (-k, n)
 plusKView _ = Nothing
 
 negPlusKView :: TTerm -> Maybe (Integer, TTerm)
@@ -107,10 +144,16 @@
 tUnreachable :: TTerm
 tUnreachable = TError TUnreachable
 
+tIfThenElse :: TTerm -> TTerm -> TTerm -> TTerm
+tIfThenElse c i e = TApp (TPrim PIf) [c, i, e]
+
 data CaseType
   = CTData QName -- case on datatype
+  | CTNat
+  | CTInt
   | CTChar
   | CTString
+  | CTFloat
   | CTQName
   deriving (Typeable, Show, Eq, Ord)
 
diff --git a/src/full/Agda/Termination/CallGraph.hs b/src/full/Agda/Termination/CallGraph.hs
--- a/src/full/Agda/Termination/CallGraph.hs
+++ b/src/full/Agda/Termination/CallGraph.hs
@@ -1,8 +1,6 @@
 {-# LANGUAGE CPP                        #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE ImplicitParams             #-}
-{-# LANGUAGE StandaloneDeriving         #-}
-{-# LANGUAGE TupleSections              #-}
 
 -- | Call graphs and related concepts, more or less as defined in
 --     \"A Predicative Analysis of Structural Recursion\" by
@@ -24,20 +22,18 @@
   , insert
   , complete, completionStep
   -- , prettyBehaviour
-    -- * Tests
-  , Agda.Termination.CallGraph.tests
   ) where
 
 import Prelude hiding (null)
 
 import qualified Data.List as List
-import Data.Monoid
+import Data.Semigroup
 import Data.Set (Set)
 
-import Agda.Termination.CallMatrix (CallMatrix, callMatrix, CallMatrixAug(..), CMSet(..), CallComb(..))
+import Agda.Termination.CallMatrix (CallMatrix, CallMatrixAug(..), CMSet(..), CallComb(..))
 import qualified Agda.Termination.CallMatrix as CMSet
 import Agda.Termination.CutOff
-import Agda.Termination.SparseMatrix as Matrix hiding (tests)
+import Agda.Termination.SparseMatrix as Matrix
 
 import Agda.Utils.Favorites (Favorites)
 import qualified Agda.Utils.Favorites as Fav
@@ -48,10 +44,8 @@
 import Agda.Utils.Monad
 import Agda.Utils.Null
 import Agda.Utils.PartialOrd
-import Agda.Utils.Pretty
-import Agda.Utils.QuickCheck hiding (label)
+import Agda.Utils.Pretty hiding ((<>))
 import Agda.Utils.Singleton
-import Agda.Utils.TestHelpers
 import Agda.Utils.Tuple
 
 ------------------------------------------------------------------------
@@ -123,9 +117,12 @@
 
 -- | 'CallGraph' is a monoid under 'union'.
 
+instance Semigroup (CallGraph cinfo) where
+  (<>) = union
+
 instance Monoid (CallGraph cinfo) where
   mempty  = empty
-  mappend = union
+  mappend = (<>)
 
 -- | Inserts a call into a call graph.
 
@@ -202,16 +199,6 @@
   CallGraph cinfo -> CallGraph cinfo -> (CallGraph cinfo, CallGraph cinfo)
 completionStep gOrig gThis = combineNewOldCallGraph gOrig gThis
 
--- prop_complete :: (?cutoff :: CutOff) => Property
--- prop_complete =
---   forAll (callGraph :: Gen (CallGraph [Integer])) $ \cs ->
---     isComplete (complete cs)
-
--- -- | Returns 'True' iff the call graph is complete.
-
--- isComplete :: (Ord cinfo, Monoid cinfo, ?cutoff :: CutOff) => CallGraph cinfo -> Bool
--- isComplete s = (s `union` (s `combine` s)) `notWorse` s
-
 ------------------------------------------------------------------------
 -- * Printing
 ------------------------------------------------------------------------
@@ -240,32 +227,3 @@
 -- --    , "Meta info: " ++ show cinfo
 --     ]
 
-------------------------------------------------------------------------
--- * Generators and properties
-------------------------------------------------------------------------
-
--- | Generates a call graph.
-
-callGraph :: Arbitrary cinfo => Gen (CallGraph cinfo)
-callGraph = do
-  indices <- fmap List.nub arbitrary
-  n <- natural
-  let noMatrices | List.null indices = 0
-                 | otherwise    = n `min` 3  -- Not too many.
-  fromList <$> vectorOf noMatrices (matGen indices)
-  where
-  matGen indices = do
-    [s, t] <- vectorOf 2 (elements indices)
-    [c, r] <- vectorOf 2 (choose (0, 2))     -- Not too large.
-    m <- callMatrix (Size { rows = r, cols = c })
-    mkCall s t m <$> arbitrary
-
-------------------------------------------------------------------------
--- All tests
-
-tests :: IO Bool
-tests = runTests "Agda.Termination.CallGraph" []
-  -- [ quickCheck' prop_complete
-  -- , quickCheck' prop_ensureCompletePrecondition
-  -- ]
-  where ?cutoff = DontCutOff -- CutOff 2  -- don't cut off in tests!
diff --git a/src/full/Agda/Termination/CallMatrix.hs b/src/full/Agda/Termination/CallMatrix.hs
--- a/src/full/Agda/Termination/CallMatrix.hs
+++ b/src/full/Agda/Termination/CallMatrix.hs
@@ -1,12 +1,6 @@
 -- {-# LANGUAGE CPP #-}
-{-# LANGUAGE DeriveFoldable #-}
-{-# LANGUAGE DeriveFunctor #-}
-{-# LANGUAGE DeriveTraversable #-}
-{-# LANGUAGE FlexibleInstances #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
-{-# LANGUAGE ImplicitParams #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE StandaloneDeriving #-}
+{-# LANGUAGE ImplicitParams             #-}
 
 module Agda.Termination.CallMatrix where
 
@@ -17,24 +11,22 @@
 --   , tests
 --   ) where
 
-import Data.Monoid
+import Data.Semigroup
 import Data.Foldable (Foldable)
 import Data.Traversable (Traversable)
 
 import Agda.Termination.CutOff
-import Agda.Termination.Order as Order hiding (tests)
-import Agda.Termination.SparseMatrix as Matrix hiding (tests)
+import Agda.Termination.Order as Order
+import Agda.Termination.SparseMatrix as Matrix
 import Agda.Termination.Semiring (HasZero(..))
 
 import Agda.Utils.Favorites (Favorites)
 import qualified Agda.Utils.Favorites as Fav
 import Agda.Utils.Monad
 import Agda.Utils.Null
-import Agda.Utils.PartialOrd hiding (tests)
+import Agda.Utils.PartialOrd
 import Agda.Utils.Pretty hiding ((<>))
-import Agda.Utils.QuickCheck
 import Agda.Utils.Singleton
-import Agda.Utils.TestHelpers
 
 ------------------------------------------------------------------------
 --  * Call matrices
@@ -102,7 +94,7 @@
 
 
 newtype CallMatrix' a = CallMatrix { mat :: Matrix ArgumentIndex a }
-  deriving (Eq, Ord, Show, Functor, Foldable, Traversable, CoArbitrary, PartialOrd)
+  deriving (Eq, Ord, Show, Functor, Foldable, Traversable, PartialOrd)
 
 type CallMatrix = CallMatrix' Order
 
@@ -181,8 +173,7 @@
 -- | Sets of incomparable call matrices augmented with path information.
 --   Use overloaded 'null', 'empty', 'singleton', 'mappend'.
 newtype CMSet cinfo = CMSet { cmSet :: Favorites (CallMatrixAug cinfo) }
-  deriving ( Show, Arbitrary, CoArbitrary
-           , Monoid, Null, Singleton (CallMatrixAug cinfo) )
+  deriving ( Show, Semigroup, Monoid, Null, Singleton (CallMatrixAug cinfo) )
 
 -- | Call matrix set product is the Cartesian product.
 
@@ -219,84 +210,3 @@
 instance Pretty cinfo => Pretty (CMSet cinfo) where
   pretty = vcat . punctuate newLine . map pretty . toList
     where newLine = text "\n"
-
-------------------------------------------------------------------------
--- * Generators and tests
-------------------------------------------------------------------------
-
--- ** CallMatrix
-
-instance Arbitrary CallMatrix where
-  arbitrary = callMatrix =<< arbitrary
-
--- | Generates a call matrix of the given size.
-
-callMatrix :: Size ArgumentIndex -> Gen CallMatrix
-callMatrix sz = CallMatrix <$> matrix sz
-
--- ** CallMatrixAug
-
-instance Arbitrary cinfo => Arbitrary (CallMatrixAug cinfo) where
-  arbitrary = CallMatrixAug <$> arbitrary <*> arbitrary
-
-instance CoArbitrary cinfo => CoArbitrary (CallMatrixAug cinfo) where
-  coarbitrary (CallMatrixAug m info) = coarbitrary m . coarbitrary info
-
-------------------------------------------------------------------------
--- * All tests
-------------------------------------------------------------------------
-
-tests :: IO Bool
-tests = runTests "Agda.Termination.CallMatrix"
-  [
-  ]
-  where ?cutoff = DontCutOff -- CutOff 2  -- don't cut off in tests!
-
-
--- RETIRED:  LONG OUTDATED call matrix invariant
-
--- -- | In a call matrix at most one element per row may be different
--- -- from 'unknown'.
-
--- callMatrixInvariant :: CallMatrix -> Bool
--- callMatrixInvariant (CallMatrix m) =
---   matrixInvariant m &&
---   all ((<= 1) . length . filter (/= unknown)) (toLists m)
-
--- prop_Arbitrary_CallMatrix = callMatrixInvariant
-
--- -- | Generates a call matrix of the given size.
-
--- callMatrix :: Size ArgumentIndex -> Gen CallMatrix
--- callMatrix sz = do
---   m <- matrixUsingRowGen sz rowGen
---   return $ CallMatrix { mat = m }
---   where
---   rowGen :: ArgumentIndex -> Gen [Order]
---   rowGen 0 = return []
---   rowGen n = do
---     x <- arbitrary
---     i <- choose (0, n - 1)
---     return $ genericReplicate i unknown ++ [x] ++
---              genericReplicate (n - 1 - i) unknown
-
--- prop_callMatrix sz =
---   forAll (callMatrix sz) $ \cm ->
---     callMatrixInvariant cm
---     &&
---     size (mat cm) == sz
-
--- prop_cmMul sz =
---   forAll natural $ \c2 ->
---   forAll (callMatrix sz) $ \cm1 ->
---   forAll (callMatrix $ Size { rows = cols sz, cols = c2 }) $ \cm2 ->
---     callMatrixInvariant (cm1 >*< cm2)
-
--- tests :: IO Bool
--- tests = runTests "Agda.Termination.CallMatrix"
---   [ quickCheck' callMatrixInvariant
---   , quickCheck' prop_Arbitrary_CallMatrix
---   , quickCheck' prop_callMatrix
---   , quickCheck' prop_cmMul
---   ]
---   where ?cutoff = DontCutOff -- CutOff 2  -- don't cut off in tests!
diff --git a/src/full/Agda/Termination/Inlining.hs b/src/full/Agda/Termination/Inlining.hs
--- a/src/full/Agda/Termination/Inlining.hs
+++ b/src/full/Agda/Termination/Inlining.hs
@@ -1,9 +1,5 @@
 {-# LANGUAGE CPP #-}
 
-#if __GLASGOW_HASKELL__ >= 710
-{-# LANGUAGE FlexibleContexts #-}
-#endif
-
 -- Author:  Ulf Norell
 -- Created: 2013-11-09
 
@@ -78,9 +74,8 @@
 inlineWithClauses f cl = inTopContext $ do
   -- Clauses are relative to the empty context, so we operate @inTopContext@.
   let noInline = return [cl]
-  -- Get the clause body as-is (unraised).
-  -- The de Bruijn indices are then relative to the @clauseTel cl@.
-  body <- traverse instantiate $ getBodyUnraised cl
+  -- The de Bruijn indices of @body@ are relative to the @clauseTel cl@.
+  body <- traverse instantiate $ clauseBody cl
   case body of
     Just (Def wf els) ->
       caseMaybeM (isWithFunction wf) noInline $ \ f' ->
@@ -125,16 +120,16 @@
 --
 --   Precondition: we are 'inTopContext'.
 withExprClauses :: Clause -> Type -> Args -> TCM [Clause]
-withExprClauses cl t args = {- addCtxTel (clauseTel cl) $ -} loop t args where
+withExprClauses cl t args = {- addContext (clauseTel cl) $ -} loop t args where
   -- Note: for the following code, it does not matter which context we are in.
-  -- Restore the @addCtxTel (clauseTel cl)@ if that should become necessary
+  -- Restore the @addContext (clauseTel cl)@ if that should become necessary
   -- (like when debug printing @args@ etc).
   loop t []     = return []
   loop t (a:as) =
     case unArg a of
       Var i [] -> rest  -- TODO: smarter criterion when to skip withExprClause
       v        ->
-        (cl { clauseBody = v <$ clauseBody cl
+        (cl { clauseBody = Just v
             , clauseType = Just $ defaultArg dom
             } :) <$> rest
     where
@@ -160,51 +155,28 @@
 --   @inline f pcl t wf wcl@ inlines with-clause @wcl@ of with-function @wf@
 --   (of type @t@) into parent clause @pcl@ (original function being @f@).
 inline :: QName -> Clause -> Type -> QName -> Clause -> TCM Clause
-inline f pcl t wf wcl = inTopContext $ addCtxTel (clauseTel wcl) $ do
+inline f pcl t wf wcl = inTopContext $ addContext (clauseTel wcl) $ do
   -- The tricky part here is to get the variables to line up properly. The
   -- order of the arguments to the with-function is not the same as the order
   -- of the arguments to the parent function. Fortunately we have already
   -- figured out how to turn an application of the with-function into an
   -- application of the parent function in the display form.
   reportSDoc "term.with.inline" 70 $ text "inlining (raw) =" <+> text (show wcl)
-  let vs = clauseArgs wcl
-  Just disp <- displayForm wf vs
+  Just disp <- displayForm wf $ clauseElims wcl
   reportSDoc "term.with.inline" 70 $ text "display form (raw) =" <+> text (show disp)
   reportSDoc "term.with.inline" 40 $ text "display form =" <+> prettyTCM disp
   (pats, perm) <- dispToPats disp
 
-  -- Now we need to sort out the right hand side. We have
-  --    Γ  - clause telescope (same for with-clause and inlined clause)
-  --    Δw - variables bound in the patterns of the with clause
-  --    Δi - variables bound in the patterns of the inlined clause
-  --    Δw ⊢ clauseBody wcl
-  -- and we want
-  --    Δi ⊢ body
-  -- We can use the clause permutations to get there (renaming is bugged and
-  -- shouldn't need the reverseP):
-  --    applySubst (renaming $ reverseP $ clausePerm wcl) : Term Δw -> Term Γ
-  --    applySubst (renamingR perm)                       : Term Γ -> Term Δi
-  -- Finally we need to add the right number of Bind's to the body.
-  let body = rebindBody (permRange perm) $
-             applySubst (renamingR perm) .
-             applySubst (renaming $ reverseP $ clausePerm wcl)
-              <$> clauseBody wcl
-  return wcl { namedClausePats = numberPatVars perm pats
-             , clauseBody      = body
-             , clauseType      = Nothing -- TODO: renaming of original clause type
-             }
+  -- Jesper, 2016-07-28: Since the with-clause and the inlined clause both
+  -- have the same clause telescope and the clause body is now relative to the
+  -- clause telescope, there is no more need to change the clause body.
+  return wcl { namedClausePats = numberPatVars __IMPOSSIBLE__ perm pats }
   where
     numVars  = size (clauseTel wcl)
 
-    rebindBody n b = bind n $ maybe NoBody Body $ getBodyUnraised b
-      where
-        bind 0 = id
-        bind n = Bind . Abs (stringToArgName $ "h" ++ show n') . bind n'
-          where n' = n - 1
-
     dispToPats :: DisplayTerm -> TCM ([NamedArg Pattern], Permutation)
     dispToPats (DWithApp (DDef _ es) ws zs) = do
-      let es' = es ++ map Apply (map defaultArg ws ++ map (fmap DTerm) zs)
+      let es' = es ++ map (Apply . defaultArg) ws ++ map (fmap DTerm) zs
       (ps, (j, ren)) <- (`runStateT` (0, [])) $ mapM (traverse dtermToPat) es'
       let perm = Perm j (map snd $ List.sort ren)
       return (map ePatToPat ps, perm)
@@ -221,23 +193,23 @@
 
     ePatToPat :: Elim' Pattern -> NamedArg Pattern
     ePatToPat (Apply p) = fmap unnamed p
-    ePatToPat (Proj  d) = defaultNamedArg $ ProjP d
+    ePatToPat (Proj o d) = defaultNamedArg $ ProjP o d
 
     dtermToPat :: DisplayTerm -> StateT (Int, [(Int, Int)]) TCM Pattern
     dtermToPat v =
       case v of
         DWithApp{}       -> __IMPOSSIBLE__   -- I believe
-        DCon c vs        -> ConP c noConPatternInfo . map (fmap unnamed)
+        DCon c ci vs     -> ConP c (toConPatternInfo ci) . map (fmap unnamed)
                               <$> mapM (traverse dtermToPat) vs
         DDef d es        -> do
           ifM (return (null es) `and2M` do isJust <$> lift (isProjection d))
-            {-then-} (return $ ProjP d)
+            {-then-} (return $ ProjP ProjPrefix d)
             {-else-} (DotP (dtermToTerm v) <$ skip)
         DDot v           -> DotP v <$ skip
         DTerm (Var i []) ->
-          ifM (bindVar i) (VarP . nameToPatVarName <$> lift (nameOfBV i))
+          ifM (bindVar i) (varP . nameToPatVarName <$> lift (nameOfBV i))
                           (pure $ DotP (Var i []))
-        DTerm (Con c vs) -> ConP c noConPatternInfo . map (fmap unnamed) <$>
+        DTerm (Con c ci vs) -> ConP c (toConPatternInfo ci) . map (fmap unnamed) <$>
                               mapM (traverse (dtermToPat . DTerm)) vs
         DTerm v          -> DotP v <$ skip
 
@@ -252,18 +224,19 @@
 expandWithFunctionCall f es = do
   as <- displayFormArities f
   case as of
-    [a] | length vs >= a -> do
-      Just disp <- displayForm f vs
-      return $ dtermToTerm disp `applyE` es'
+    [a] | length es >= a -> do
+      Just disp <- displayForm f es
+      return $ dtermToTerm disp
+
     -- We might get an underapplied with function application (issue1598), in
     -- which case we have to eta expand. The resulting term is only used for
     -- termination checking, so we don't have to worry about getting hiding
     -- information right.
-    [a] | null es' -> do
-      let pad = a - length vs
-          vs' = raise pad vs ++ map (defaultArg . var) (downFrom pad)
-      Just disp <- displayForm f vs'
-      return $ foldr (\_ -> Lam defaultArgInfo . Abs "") (dtermToTerm disp) (replicate pad ())
+    -- Andreas, 2016-07-20 let's pray that there no copatterns needed...
+    [a] -> do
+      let pad = a - length es
+          es' = raise pad es ++ map (Apply . defaultArg . var) (downFrom pad)
+      Just disp <- displayForm f es'
+      let info = setOrigin Inserted defaultArgInfo
+      return $ foldr (\_ -> Lam info . Abs "") (dtermToTerm disp) (replicate pad ())
     _ -> __IMPOSSIBLE__
-  where
-    (vs, es') = splitApplyElims es
diff --git a/src/full/Agda/Termination/Monad.hs b/src/full/Agda/Termination/Monad.hs
--- a/src/full/Agda/Termination/Monad.hs
+++ b/src/full/Agda/Termination/Monad.hs
@@ -1,10 +1,5 @@
 {-# LANGUAGE CPP                        #-}
-{-# LANGUAGE DeriveFunctor              #-}
-{-# LANGUAGE DeriveFoldable             #-}
-{-# LANGUAGE DeriveTraversable          #-}
-{-# LANGUAGE FlexibleInstances          #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
-{-# LANGUAGE MultiParamTypeClasses      #-}
 
 -- | The monad for the termination checker.
 --
@@ -23,11 +18,12 @@
 
 import Data.Foldable (Foldable)
 import Data.Traversable (Traversable)
+import Data.Semigroup (Semigroup)
 
 import Agda.Interaction.Options
 
 import Agda.Syntax.Abstract (IsProjP(..), AllNames)
-import Agda.Syntax.Common   (Delayed(..), Induction(..), Dom(..))
+import Agda.Syntax.Common
 import Agda.Syntax.Internal
 import Agda.Syntax.Literal
 import Agda.Syntax.Position (noRange)
@@ -39,7 +35,7 @@
 import Agda.TypeChecking.Monad
 import Agda.TypeChecking.Monad.Benchmark
 import Agda.TypeChecking.Monad.Builtin
-import Agda.TypeChecking.Pretty
+import Agda.TypeChecking.Pretty as TCP
 import Agda.TypeChecking.Records
 import Agda.TypeChecking.Reduce
 import Agda.TypeChecking.Substitute
@@ -112,6 +108,7 @@
     -- ^ Are we checking a delayed definition?
   , terMaskArgs :: [Bool]
     -- ^ Only consider the 'notMasked' 'False' arguments for establishing termination.
+    --   See issue #1023.
   , terMaskResult :: Bool
     -- ^ Only consider guardedness if 'False' (not masked).
   , _terSizeDepth :: Int  -- lazy by intention!
@@ -132,6 +129,7 @@
     --   matrix, can we take the variable for use with SIZELT constraints from the context?
     --   Yes, if we are under an inductive constructor.
     --   No, if we are under a record constructor.
+    --   (See issue #1015).
   , terUsableVars :: VarSet
     -- ^ Pattern variables that can be compared to argument variables using SIZELT.
   }
@@ -247,6 +245,10 @@
   catchError m handler = TerM $ ReaderT $ \ tenv -> do
     runTer tenv m `catchError` (\ err -> runTer tenv $ handler err)
 
+instance HasConstInfo TerM where
+  getConstInfo       = liftTCM . getConstInfo
+  getRewriteRulesFor = liftTCM . getRewriteRulesFor
+
 -- * Modifiers and accessors for the termination environment in the monad.
 
 terGetGuardingTypeConstructors :: TerM Bool
@@ -406,8 +408,8 @@
         else do
           mp <- isProjection qn
           case mp of
-            Just Projection{ projProper = Just{}, projFromType = t }
-              -> isInductiveRecord t
+            Just Projection{ projProper = True, projFromType = t }
+              -> isInductiveRecord (unArg t)
             _ -> return False
 
 -- | Check whether a projection belongs to a coinductive record
@@ -426,7 +428,7 @@
   if Just q == flat then return True else do
     pdef <- getConstInfo q
     case isProjection_ (theDef pdef) of
-      Just Projection{ projProper = Just{}, projFromType = r, projIndex = n } ->
+      Just Projection{ projProper = True, projFromType = Arg _ r, projIndex = n } ->
         caseMaybeM (isRecord r) __IMPOSSIBLE__ $ \ rdef -> do
           -- no for inductive or non-recursive record
           if recInduction rdef /= Just CoInductive then return False else do
@@ -475,20 +477,20 @@
     -- ^ Literal.  Also abused to censor part of a pattern.
   | TermDBP Term
     -- ^ Part of dot pattern that cannot be converted into a pattern.
-  | ProjDBP QName
+  | ProjDBP ProjOrigin QName
     -- ^ Projection pattern.
   deriving (Functor, Show)
 
 instance IsProjP (DeBruijnPat' a) where
-  isProjP (ProjDBP d) = Just d
-  isProjP _           = Nothing
+  isProjP (ProjDBP o d) = Just (o, AmbQ [d])
+  isProjP _ = Nothing
 
 instance PrettyTCM DeBruijnPat where
   prettyTCM (VarDBP i)    = prettyTCM $ var i
   prettyTCM (ConDBP c ps) = parens $ do prettyTCM c <+> hsep (map prettyTCM ps)
   prettyTCM (LitDBP l)    = prettyTCM l
   prettyTCM (TermDBP v)   = parens $ prettyTCM v
-  prettyTCM (ProjDBP d)   = prettyTCM d
+  prettyTCM (ProjDBP o d) = text "." TCP.<> prettyTCM d
 
 -- | How long is the path to the deepest variable?
 patternDepth :: DeBruijnPat' a -> Int
@@ -537,9 +539,9 @@
 instance UsableSizeVars DeBruijnPats where
   usableSizeVars ps =
     case ps of
-      []               -> return mempty
-      (ProjDBP q : ps) -> projUseSizeLt q $ usableSizeVars ps
-      (p         : ps) -> mappend <$> usableSizeVars p <*> usableSizeVars ps
+      []                 -> return mempty
+      (ProjDBP _ q : ps) -> projUseSizeLt q $ usableSizeVars ps
+      (p           : ps) -> mappend <$> usableSizeVars p <*> usableSizeVars ps
 
 instance UsableSizeVars (Masked DeBruijnPat) where
   usableSizeVars (Masked m p) = do
@@ -554,11 +556,12 @@
 instance UsableSizeVars MaskedDeBruijnPats where
   usableSizeVars ps =
     case ps of
-      []                          -> return mempty
-      (Masked _ (ProjDBP q) : ps) -> projUseSizeLt q $ usableSizeVars ps
-      (p                    : ps) -> mappend <$> usableSizeVars p <*> usableSizeVars ps
+      []                            -> return mempty
+      (Masked _ (ProjDBP _ q) : ps) -> projUseSizeLt q $ usableSizeVars ps
+      (p                      : ps) -> mappend <$> usableSizeVars p <*> usableSizeVars ps
 
 -- * Masked patterns (which are not eligible for structural descent, only for size descent)
+--   See issue #1023.
 
 type MaskedDeBruijnPats = [Masked DeBruijnPat]
 
@@ -593,7 +596,7 @@
 --   Performance-wise, I could not see a difference between Set and list.
 
 newtype CallPath = CallPath { callInfos :: [CallInfo] }
-  deriving (Show, Monoid, AllNames)
+  deriving (Show, Semigroup, Monoid, AllNames)
 
 -- | Only show intermediate nodes.  (Drop last 'CallInfo').
 instance Pretty CallPath where
diff --git a/src/full/Agda/Termination/Order.hs b/src/full/Agda/Termination/Order.hs
--- a/src/full/Agda/Termination/Order.hs
+++ b/src/full/Agda/Termination/Order.hs
@@ -1,5 +1,4 @@
 {-# LANGUAGE CPP               #-}
-{-# LANGUAGE FlexibleInstances #-}
 {-# LANGUAGE ImplicitParams    #-}
 
 -- | An Abstract domain of relative sizes, i.e., differences
@@ -8,7 +7,7 @@
 
 module Agda.Termination.Order
   ( -- * Structural orderings
-    Order(Mat), decr
+    Order(..), decr
   , increase, decrease
   , (.*.)
   , supremum, infimum
@@ -16,21 +15,19 @@
   , le, lt, unknown, orderMat, collapseO
   , nonIncreasing, decreasing, isDecr
   , NotWorse(..)
-  , tests
+  , isOrder
   ) where
 
 import qualified Data.Foldable as Fold
-import Data.List as List hiding (union, insert)
+import qualified Data.List as List
 
 import Agda.Termination.CutOff
-import Agda.Termination.SparseMatrix as Matrix hiding (tests)
+import Agda.Termination.SparseMatrix as Matrix
 import Agda.Termination.Semiring (HasZero(..), Semiring)
 import qualified Agda.Termination.Semiring as Semiring
 
-import Agda.Utils.PartialOrd hiding (tests)
+import Agda.Utils.PartialOrd
 import Agda.Utils.Pretty
-import Agda.Utils.QuickCheck
-import Agda.Utils.TestHelpers
 
 #include "undefined.h"
 import Agda.Utils.Impossible
@@ -113,19 +110,17 @@
 -}
 
 -- | We assume the matrices have the same dimension.
-instance (Ord i) => NotWorse (Matrix i Order) where
+instance (Ord i, HasZero o, NotWorse o) => NotWorse (Matrix i o) where
   m `notWorse` n
     | size m /= size n = __IMPOSSIBLE__
-    | otherwise        = Fold.all isTrue $
-                           zipMatrices onlym onlyn both trivial m n
+    | otherwise        = Fold.and $ zipMatrices onlym onlyn both trivial m n
     where
-      -- If an element is only in @m@, then its 'Unknown' in @n@
-      -- so it gotten better at best, in any case, not worse.
-      onlym o = True     -- @== o `notWorse` Unknown@
-      onlyn o = Unknown `notWorse` o
-      both    = notWorse
-      isTrue  = id
-      trivial = id
+    -- If an element is only in @m@, then its 'Unknown' in @n@
+    -- so it gotten better at best, in any case, not worse.
+    onlym o = True     -- @== o `notWorse` Unknown@
+    onlyn o = zeroElement `notWorse` o
+    both    = notWorse
+    trivial = id  -- @True@ counts as zero as it is neutral for @and@
 
 -- | Raw increase which does not cut off.
 increase :: Int -> Order -> Order
@@ -141,7 +136,7 @@
 -- | Smart constructor for @Decr k :: Order@ which cuts off too big values.
 --
 -- Possible values for @k@: @- ?cutoff '<=' k '<=' ?cutoff + 1@.
---
+
 decr :: (?cutoff :: CutOff) => Int -> Order
 decr k = case ?cutoff of
   CutOff c | k < -c -> Unknown
@@ -150,10 +145,10 @@
 
 -- | Smart constructor for matrix shaped orders, avoiding empty and singleton matrices.
 orderMat :: Matrix Int Order -> Order
-orderMat m | Matrix.isEmpty m  = Decr 0                -- 0x0 Matrix = neutral element
-           | otherwise         = case isSingleton m of
-                                   Just o -> o         -- 1x1 Matrix
-                                   Nothing -> Mat m    -- nxn Matrix
+orderMat m
+ | Matrix.isEmpty m        = Decr 0 -- 0x0 Matrix = neutral element
+ | Just o <- isSingleton m = o      -- 1x1 Matrix
+ | otherwise               = Mat m  -- nxn Matrix
 
 withinCutOff :: (?cutoff :: CutOff) => Int -> Bool
 withinCutOff k = case ?cutoff of
@@ -197,88 +192,47 @@
   pretty Unknown  = text "?"
   pretty (Mat m)  = text "Mat" <+> pretty m
 
---instance Ord Order where
---    max = maxO
 
-{- instances cannot have implicit arguments?! GHC manual says:
-
-7.8.3.1. Implicit-parameter type constraints
-
-You can't have an implicit parameter in the context of a class or instance declaration. For example, both these declarations are illegal:
-
-  class (?x::Int) => C a where ...
-  instance (?x::a) => Foo [a] where ...
-
-Reason: exactly which implicit parameter you pick up depends on
-exactly where you invoke a function. But the ``invocation'' of
-instance declarations is done behind the scenes by the compiler, so
-it's hard to figure out exactly where it is done. Easiest thing is to
-outlaw the offending types.
-
-instance (?cutoff :: CutOff) => Arbitrary Order where
-  arbitrary = frequency
-    [(20, return Unknown)
-    ,(80, elements [- ?cutoff .. ?cutoff + 1] >>= Decr)
-    ] -- no embedded matrices generated for now.
--}
-instance Arbitrary Order where
-  arbitrary = frequency
-    [(30, return Unknown)
-    ,(70, elements [0,1] >>= return . Decr)
-    ] -- no embedded matrices generated for now.
-
-instance CoArbitrary Order where
-  coarbitrary (Decr k) = variant 0
-  coarbitrary Unknown  = variant 1
-  coarbitrary (Mat m)  = variant 2
-
--- | Multiplication of 'Order's. (Corresponds to sequential
--- composition.)
+-- | Multiplication of 'Order's.
+--   (Corresponds to sequential composition.)
 
 -- I think this funny pattern matching is because overlapping patterns
 -- are producing a warning and thus an error (strict compilation settings)
 (.*.) :: (?cutoff :: CutOff) => Order -> Order -> Order
-Unknown  .*. _         = Unknown
-(Mat m)  .*. Unknown   = Unknown
-(Decr k) .*. Unknown   = Unknown
-(Decr k) .*. (Decr l)  = decr (k + l)
-(Decr 0) .*. (Mat m)   = Mat m
-(Decr k) .*. (Mat m)   = (Decr k) .*. (collapse m)
-(Mat m1) .*. (Mat m2) = if (okM m1 m2) then
-                            Mat $ mul orderSemiring m1 m2
-                        else
-                            (collapse m1) .*. (collapse m2)
+Unknown  .*. _        = Unknown
+(Mat m)  .*. Unknown  = Unknown
+(Decr k) .*. Unknown  = Unknown
+(Decr k) .*. (Decr l) = decr (k + l)
+(Decr 0) .*. (Mat m)  = Mat m
+(Decr k) .*. (Mat m)  = (Decr k) .*. (collapse m)
+(Mat m1) .*. (Mat m2)
+  | okM m1 m2         = Mat $ mul orderSemiring m1 m2
+  | otherwise         = (collapse m1) .*. (collapse m2)
 (Mat m) .*. (Decr 0)  = Mat m
 (Mat m) .*. (Decr k)  = (collapse m) .*. (Decr k)
 
-{- collapse m
-
-We assume that m codes a permutation:  each row has at most one column
-that is not Un.
-
-To collapse a matrix into a single value, we take the best value of
-each column and multiply them.  That means if one column is all Un,
-i.e., no argument relates to that parameter, than the collapsed value
-is also Un.
-
-This makes order multiplication associative.
+-- | collapse @m@
+--
+-- We assume that @m@ codes a permutation:  each row has at most one column
+-- that is not @Unknown@.
+--
+-- To collapse a matrix into a single value, we take the best value of
+-- each column and multiply them.  That means if one column is all @Unknown@,
+-- i.e., no argument relates to that parameter, then the collapsed value
+-- is also @Unknown@.
+--
+-- This makes order multiplication associative.
 
--}
 collapse :: (?cutoff :: CutOff) => Matrix Int Order -> Order
-collapse m = -- if not $ Matrix.matrixInvariant m then __IMPOSSIBLE__ else
-  case toLists $ Matrix.transpose m of
-   [] -> __IMPOSSIBLE__   -- This can never happen if order matrices are generated by the smart constructor
-   m' -> foldl1 (.*.) $ map (foldl1 maxO) m'
-
-{- OLD CODE, does not give associative matrix multiplication:
-collapse :: (?cutoff :: CutOff) => Matrix Int Order -> Order
-collapse m = foldl (.*.) le (Data.Array.elems $ diagonal m)
--}
+collapse m = case toLists $ Matrix.transpose m of
+  [] -> __IMPOSSIBLE__   -- This can never happen if order matrices are generated by the smart constructor
+  m' -> foldl1 (.*.) $ map (foldl1 maxO) m'
 
 collapseO :: (?cutoff :: CutOff) => Order -> Order
 collapseO (Mat m) = collapse m
 collapseO o       = o
 
+-- | Can two matrices be multplied together?
 okM :: Matrix Int Order -> Matrix Int Order -> Bool
 okM m1 m2 = (rows $ size m2) == (cols $ size m1)
 
@@ -288,64 +242,46 @@
 supremum :: (?cutoff :: CutOff) => [Order] -> Order
 supremum = foldr maxO Unknown
 
--- | @('Order', 'maxO', '.*.')@ forms a semiring, with 'Unknown' as
--- zero and 'Le' as one.
+-- | @('Order', 'maxO', '.*.')@ forms a semiring,
+--   with 'Unknown' as zero and 'Le' as one.
 
 maxO :: (?cutoff :: CutOff) => Order -> Order -> Order
 maxO o1 o2 = case (o1,o2) of
-               (Decr k, Decr l) -> Decr (max k l) -- cut off not needed, within borders
-               (Unknown,_) -> o2
-               (_,Unknown) -> o1
-               (Mat m1, Mat m2) -> Mat (Matrix.add maxO m1 m2)
-               (Mat m,_) -> maxO (collapse m) o2
-               (_,Mat m) ->  maxO o1 (collapse m)
+  (Decr k, Decr l) -> Decr (max k l) -- cut off not needed, within borders
+  (Unknown, _)     -> o2
+  (_, Unknown)     -> o1
+  (Mat m1, Mat m2) -> Mat (Matrix.add maxO m1 m2)
+  (Mat m, _)       -> maxO (collapse m) o2
+  (_, Mat m)       -> maxO o1 (collapse m)
 
 -- | The infimum of a (non empty) list of 'Order's.
+--   Gets the worst information.
 --  'Unknown' is the least element, thus, dominant.
 infimum :: (?cutoff :: CutOff) => [Order] -> Order
-infimum (o:l) = foldl' minO o l
+infimum (o:l) = List.foldl' minO o l
 infimum []    = __IMPOSSIBLE__
 
+-- | Pick the worst information.
 minO :: (?cutoff :: CutOff) => Order -> Order -> Order
 minO o1 o2 = case (o1,o2) of
-               (Unknown,_) -> Unknown
-               (_,Unknown) -> Unknown
-               (Decr k, Decr l) -> Decr (min k l) -- cut off not needed, within borders
-               (Mat m1, Mat m2) -> if (size m1 == size m2) then
-                                       Mat $ Matrix.intersectWith minO m1 m2
-                                   else
-                                       minO (collapse m1) (collapse m2)
-               (Mat m1,_) -> minO (collapse m1) o2
-               (_,Mat m2) -> minO o1 (collapse m2)
+  (Unknown, _)           -> Unknown
+  (_, Unknown)           -> Unknown
+  (Decr k, Decr l)       -> Decr (min k l) -- cut off not needed, within borders
+  (Mat m1, Mat m2)
+    | size m1 == size m2 -> Mat $ Matrix.intersectWith minO m1 m2
+    | otherwise          -> minO (collapse m1) (collapse m2)
+  (Mat m1, _)            -> minO (collapse m1) o2
+  (_, Mat m2)            -> minO o1 (collapse m2)
 
 
-{- Cannot have implicit arguments in instances.  Too bad!
-
-instance Monoid Order where
-  mempty = Unknown
-  mappend = maxO
-
-instance (cutoff :: Int) => SemiRing Order where
-  multiply = (.*.)
--}
+-- | We use a record for semiring instead of a type class
+--   since implicit arguments cannot occur in instance constraints,
+--   like @instance (?cutoff :: Int) => SemiRing Order@.
 
 orderSemiring :: (?cutoff :: CutOff) => Semiring Order
-orderSemiring =
-  Semiring.Semiring { Semiring.add = maxO
-                    , Semiring.mul = (.*.)
-                    , Semiring.zero = Unknown
---                    , Semiring.one = Le
-                    }
-
-prop_orderSemiring :: (?cutoff :: CutOff) => Order -> Order -> Order -> Bool
-prop_orderSemiring = Semiring.semiringInvariant orderSemiring
-
-------------------------------------------------------------------------
--- All tests
-
-tests :: IO Bool
-tests = runTests "Agda.Termination.Order"
-  [ quickCheck' prop_decr
-  , quickCheck' prop_orderSemiring
-  ]
-  where ?cutoff = DontCutOff -- CutOff 2  -- don't cut off in tests!
+orderSemiring = Semiring.Semiring
+  { Semiring.add  = maxO
+  , Semiring.mul  = (.*.)
+  , Semiring.zero = Unknown
+  -- , Semiring.one  = Le
+  }
diff --git a/src/full/Agda/Termination/RecCheck.hs b/src/full/Agda/Termination/RecCheck.hs
--- a/src/full/Agda/Termination/RecCheck.hs
+++ b/src/full/Agda/Termination/RecCheck.hs
@@ -1,3 +1,5 @@
+{-# LANGUAGE CPP #-}
+
 {- Checking for recursion:
 
    - We detect truly (co)recursive definitions by computing the
@@ -27,6 +29,9 @@
 import Agda.Syntax.Internal.Defs
 
 import Agda.TypeChecking.Monad
+
+#include "undefined.h"
+import Agda.Utils.Impossible
 
 recursive :: [QName] -> TCM Bool
 recursive names = do
diff --git a/src/full/Agda/Termination/Semiring.hs b/src/full/Agda/Termination/Semiring.hs
--- a/src/full/Agda/Termination/Semiring.hs
+++ b/src/full/Agda/Termination/Semiring.hs
@@ -1,28 +1,15 @@
 -- | Semirings.
 
 module Agda.Termination.Semiring
-  ( HasZero(..), SemiRing(..)
+  ( HasZero(..)
   , Semiring(..)
-  , semiringInvariant
   , integerSemiring
   , intSemiring
   , boolSemiring
-  , Agda.Termination.Semiring.tests
   ) where
 
 import Data.Monoid
 
-import Agda.Utils.QuickCheck
-import Agda.Utils.TestHelpers
-
-{- | SemiRing type class.  Additive monoid with multiplication operation.
-Inherit addition and zero from Monoid. -}
-
-class (Eq a, Monoid a) => SemiRing a where
---  isZero   :: a -> Bool
-  multiply :: a -> a -> a
-
-
 -- | @HasZero@ is needed for sparse matrices, to tell which is the element
 --   that does not have to be stored.
 --   It is a cut-down version of @SemiRing@ which is definable
@@ -32,33 +19,13 @@
 
 -- | Semirings.
 
-data Semiring a
-  = Semiring { add  :: a -> a -> a  -- ^ Addition.
-             , mul  :: a -> a -> a  -- ^ Multiplication.
-             , zero :: a            -- ^ Zero.
--- The one is never used in matrix multiplication
---             , one  :: a            -- ^ One.
-             }
-
--- | Semiring invariant.
-
--- I think it's OK to use the same x, y, z triple for all the
--- properties below.
-
-semiringInvariant :: Eq a
-                  => Semiring a
-                  -> a -> a -> a -> Bool
-semiringInvariant (Semiring { add = (+), mul = (*)
-                            , zero = zero --, one = one
-                            }) = \x y z ->
-  associative (+)           x y z &&
-  identity zero (+)         x     &&
-  commutative (+)           x y   &&
-  associative (*)           x y z &&
---  identity one (*)          x     &&
-  leftDistributive (*) (+)  x y z &&
-  rightDistributive (*) (+) x y z &&
-  isZero zero (*)           x
+data Semiring a = Semiring
+  { add  :: a -> a -> a  -- ^ Addition.
+  , mul  :: a -> a -> a  -- ^ Multiplication.
+  , zero :: a            -- ^ Zero.
+  -- The one is never used in matrix multiplication
+  -- , one  :: a            -- ^ One.
+  }
 
 ------------------------------------------------------------------------
 -- Specific semirings
@@ -71,9 +38,6 @@
 integerSemiring :: Semiring Integer
 integerSemiring = Semiring { add = (+), mul = (*), zero = 0 } -- , one = 1 }
 
-prop_integerSemiring :: Integer -> Integer -> Integer -> Bool
-prop_integerSemiring = semiringInvariant integerSemiring
-
 -- | The standard semiring on 'Int's.
 
 instance HasZero Int where
@@ -82,23 +46,8 @@
 intSemiring :: Semiring Int
 intSemiring = Semiring { add = (+), mul = (*), zero = 0 } -- , one = 1 }
 
-prop_intSemiring :: Int -> Int -> Int -> Bool
-prop_intSemiring = semiringInvariant intSemiring
-
 -- | The standard semiring on 'Bool's.
 
 boolSemiring :: Semiring Bool
 boolSemiring =
   Semiring { add = (||), mul = (&&), zero = False } --, one = True }
-
-prop_boolSemiring :: Bool -> Bool -> Bool -> Bool
-prop_boolSemiring = semiringInvariant boolSemiring
-
-------------------------------------------------------------------------
--- All tests
-
-tests :: IO Bool
-tests = runTests "Agda.Termination.Semiring"
-  [ quickCheck' prop_integerSemiring
-  , quickCheck' prop_boolSemiring
-  ]
diff --git a/src/full/Agda/Termination/SparseMatrix.hs b/src/full/Agda/Termination/SparseMatrix.hs
--- a/src/full/Agda/Termination/SparseMatrix.hs
+++ b/src/full/Agda/Termination/SparseMatrix.hs
@@ -1,13 +1,5 @@
 {-# LANGUAGE CPP                    #-}
-{-# LANGUAGE DeriveFoldable         #-}
-{-# LANGUAGE DeriveFunctor          #-}
-{-# LANGUAGE DeriveTraversable      #-}
-{-# LANGUAGE FlexibleInstances      #-}
-{-# LANGUAGE FunctionalDependencies #-}
-{-# LANGUAGE NamedFieldPuns         #-}
-{-# LANGUAGE MultiParamTypeClasses  #-}
 {-# LANGUAGE ScopedTypeVariables    #-}
-{-# LANGUAGE TupleSections          #-}
 
 {- | Sparse matrices.
 
@@ -26,34 +18,34 @@
 
 module Agda.Termination.SparseMatrix
   ( -- * Basic data types
-    Matrix
-  , matrixInvariant
+    Matrix(Matrix)
+  , unM
+  -- , matrixInvariant  -- Moved to the internal test-suite
   , Size(..)
-  , sizeInvariant
   , MIx (..)
-  , mIxInvariant
     -- * Generating and creating matrices
   , fromLists
   , fromIndexList
   , toLists
 --  , Agda.Termination.Matrix.zipWith
-  , matrix
-  , matrixUsingRowGen
+  -- , matrix  -- Moved to the internal test-suite
     -- * Combining and querying matrices
   , size
   , square
   , isEmpty
   , isSingleton
   , zipMatrices
-  , add, intersectWith
+  , add
+  , intersectWith
+  , interAssocWith
   , mul
   , transpose
   , Diagonal(..)
+  , toSparseRows
+  , supSize
     -- * Modifying matrices
   , addRow
   , addColumn
-    -- * Tests
-  , Agda.Termination.SparseMatrix.tests
   ) where
 
 import Data.Array
@@ -77,8 +69,6 @@
 import Agda.Utils.Monad
 import Agda.Utils.PartialOrd
 import Agda.Utils.Pretty hiding (isEmpty)
-import Agda.Utils.QuickCheck
-import Agda.Utils.TestHelpers
 import Agda.Utils.Tuple
 
 #include "undefined.h"
@@ -189,18 +179,6 @@
           | i' == i   = aux i' ((j,b):row) m
           | otherwise = (i', reverse row) : aux i [(j,b)] m
 
--- | Alternative implementation, serves as specification.
-
-toSparseRows' :: (Eq i) => Matrix i b -> [(i,[(i,b)])]
-toSparseRows' (Matrix _ m) =
-  -- group list by row index
-  for (List.groupBy ((==) `on` (row . fst)) m) $ \ ((MIx i j, b) : vs) ->
-  -- turn each group into a sparse row
-    (i, (j,b) : map (mapFst col) vs)
-
-prop_toSparseRows :: TM -> Bool
-prop_toSparseRows m = toSparseRows m == toSparseRows' m
-
 -- | Turn a sparse vector into a vector by inserting a fixed element
 --   at the missing positions.
 --   @O(size)@ where @size@ is the dimension of the vector.
@@ -446,14 +424,6 @@
 addColumn x m | x == zeroElement = m { size = (size m) { cols = cols (size m) + 1 }}
               | otherwise = __IMPOSSIBLE__
 
-prop_addColumn :: TM -> Bool
-prop_addColumn m =
-  matrixInvariant m'
-  &&
-  map init (toLists m') == toLists m
-  where
-  m' = addColumn zeroElement m
-
 -- | @'addRow' x m@ adds a new row to @m@, after the rows already
 -- existing in the matrix. All elements in the new row get set to @x@.
 
@@ -461,14 +431,6 @@
 addRow x m | x == zeroElement = m { size = (size m) { rows = rows (size m) + 1 }}
            | otherwise = __IMPOSSIBLE__
 
-prop_addRow :: TM -> Bool
-prop_addRow m =
-  matrixInvariant m'
-  &&
-  init (toLists m') == toLists m
-  where
-  m' = addRow zeroElement m
-
 ------------------------------------------------------------------------
 -- * Printing
 ------------------------------------------------------------------------
@@ -497,259 +459,3 @@
 -- http://www.tedreed.info/programming/2012/06/02/how-to-use-textprettyprintboxes/
 -- print_table :: [[String]] -> IO ()
 -- print_table rows = printBox $ hsep 2 left (map (vcat left . map text) (transpose rows))
-
-
-
-------------------------------------------------------------------------
--- * Generators, properties and tests
-------------------------------------------------------------------------
-
--- ** Size
-------------------------------------------------------------------------
-
-instance Integral i => Arbitrary (Size i) where
-  arbitrary = do
-    r <- natural
-    c <- natural
-    return $ Size { rows = fromInteger r, cols = fromInteger c }
-
-instance CoArbitrary i => CoArbitrary (Size i) where
-  coarbitrary (Size rs cs) = coarbitrary rs . coarbitrary cs
-
--- | Size invariant: dimensions are non-negative.
-
-sizeInvariant :: (Ord i, Num i) => Size i -> Bool
-sizeInvariant sz = rows sz >= 0 && cols sz >= 0
-
-prop_Arbitrary_Size :: Size Integer -> Bool
-prop_Arbitrary_Size = sizeInvariant
-
-prop_size :: TM -> Bool
-prop_size m = sizeInvariant (size m)
-
--- ** Matrix indices
-------------------------------------------------------------------------
-
-instance Integral i => Arbitrary (MIx i) where
-  arbitrary = MIx <$> positive <*> positive
-
-instance CoArbitrary i => CoArbitrary (MIx i) where
-  coarbitrary (MIx r c) = coarbitrary r . coarbitrary c
-
--- | Indices must be positive, @>= 1@.
-
-mIxInvariant :: (Ord i, Num i) => MIx i -> Bool
-mIxInvariant i = row i >= 1 && col i >= 1
-
-prop_Arbitrary_MIx :: MIx Integer -> Bool
-prop_Arbitrary_MIx = mIxInvariant
-
--- ** Matrices
-------------------------------------------------------------------------
-
--- | Matrix indices are lexicographically sorted with no duplicates.
---   All indices must be within bounds.
-matrixInvariant :: (Num i, Ix i, HasZero b) => Matrix i b -> Bool
-matrixInvariant (Matrix size@Size{ rows, cols} m) =
-  sizeInvariant size
-  && all inBounds m
-  && all nonZero  m
-  && strictlySorted (MIx 0 0) m
-  where
-    inBounds (MIx i j, _) = 1 <= i && i <= rows
-                         && 1 <= j && j <= cols
-    nonZero (_, b) = b /= zeroElement
-
--- | Check whether an association list is ordered and
---   deterministic, a partial function from @i@ to @b@.
-strictlySorted :: (Ord i) => i -> [(i, b)] -> Bool
-strictlySorted i []            = True
-strictlySorted i ((i', _) : l) = i < i' && strictlySorted i' l
--- Ord MIx should be the lexicographic order already (Haskell report).
-
--- | Generates a matrix of the given size, using the given generator
--- to generate the rows.
-
-matrixUsingRowGen :: (Integral i, HasZero b)
-  => Size i
-  -> (i -> Gen [b])
-     -- ^ The generator is parameterised on the size of the row.
-  -> Gen (Matrix i b)
-matrixUsingRowGen sz rowGen = do
-  rows <- vectorOf (fromIntegral $ rows sz) (rowGen $ cols sz)
-  return $ fromLists sz rows
-
--- | Generates a matrix of the given size.
-
-matrix :: (Integral i, Arbitrary b, HasZero b)
-       => Size i -> Gen (Matrix i b)
-matrix sz = matrixUsingRowGen sz (\n -> vectorOf (fromIntegral n) arbitrary)
-
-prop_matrix :: Size Int -> Property
-prop_matrix sz = forAll (matrix sz :: Gen TM) $ \ m -> size m == sz
-
--- | Generate a matrix of arbitrary size.
-
-instance (Integral i, Arbitrary b, HasZero b)
-         => Arbitrary (Matrix i b) where
-  arbitrary     = matrix =<< arbitrary
-
-instance (Integral i, CoArbitrary b, HasZero b) => CoArbitrary (Matrix i b) where
-  coarbitrary m = coarbitrary (toLists m)
-
--- | This matrix type is used for tests.
-
-type TM = Matrix Int Int
-
-prop_Arbitrary_Matrix :: TM -> Bool
-prop_Arbitrary_Matrix = matrixInvariant
-
--- ** Matrix operations
-
--- | 'fromIndexList' is identity on well-formed sparse matrices.
-
-prop_fromIndexList :: TM -> Bool
-prop_fromIndexList m@(Matrix size vs) = fromIndexList size vs == m
-
--- | Converting a matrix to a list of lists and back is the identity.
-
-prop_fromLists_toLists :: TM -> Bool
-prop_fromLists_toLists m = fromLists (size m) (toLists m) == m
-
--- | Any 1x1 matrix is a singleton.
-
-prop_isSingleton :: Int -> Bool
-prop_isSingleton b = Just b == (isSingleton (fromLists (Size 1 1) [[b]] :: TM))
-
--- | The length of the diagonal is the minimum of the number of
---   rows and columns of the matrix.
-
-prop_diagonal :: TM -> Bool
-prop_diagonal m@(Matrix (Size r c) _) =
-    length (diagonal m) == min r c
-
--- prop_diagonal' n =
---   forAll natural $ \n ->
---   forAll (matrix (Size n n) :: Gen TM) $ \m ->
---     length (diagonal m) == n
-
--- | Transposing twice is the identity.
-
-prop_transpose :: TM -> Bool
-prop_transpose m = matrixInvariant m' && m == transpose m'
-  where m' = transpose m
-
--- ** Matrix addition
-
-
--- | Old implementation of 'zipMatrices'.
-
-zipMatrices' :: forall a b c i . (Ord i)
-  => (a -> c)       -- ^ Element only present in left matrix.
-  -> (b -> c)       -- ^ Element only present in right matrix.
-  -> (a -> b -> c)  -- ^ Element present in both matrices.
-  -> (c -> Bool)    -- ^ Result counts as zero?
-  -> Matrix i a -> Matrix i b -> Matrix i c
-zipMatrices' f g h zero m1 m2 = Matrix (supSize m1 m2) (merge (unM m1) (unM m2))
-  where
-    merge :: [(MIx i,a)] -> [(MIx i,b)] -> [(MIx i,c)]
-    merge [] m2 = filter (not . zero . snd) $ map (mapSnd g) m2
-    merge m1 [] = filter (not . zero . snd) $ map (mapSnd f) m1
-    merge m1@((i,a):m1') m2@((j,b):m2') =
-      case compare i j of
-        LT -> if zero c then r else (i,c) : r where c = f a   ; r = merge m1' m2
-        GT -> if zero c then r else (j,c) : r where c = g b   ; r = merge m1  m2'
-        EQ -> if zero c then r else (i,c) : r where c = h a b ; r = merge m1' m2'
-
--- | Verify 'zipMatrices' against older implementation
-
-prop_zipMatrices_correct :: TM -> TM -> Bool
-prop_zipMatrices_correct m1 m2 =
-  zipMatrices id id (+) (== 0) m1 m2 == zipMatrices' id id (+) (== 0) m1 m2
-
-
--- | Matrix addition is well-defined, associative and commutative.
-
-prop_add :: Size Int -> Property
-prop_add sz =
-  forAll (three (matrix sz :: Gen TM)) $ \(m1, m2, m3) ->
-    let m' = add (+) m1 m2 in
-      associative (add (+)) m1 m2 m3 &&
-      commutative (add (+)) m1 m2 &&
-      matrixInvariant m' &&
-      size m' == size m1
-
--- | Verify addition against an older implementation.
---
---   The older implementation did not fully preserve sparsity,
---   i.e., introduced zeros.  Thus, we need to convert to lists to
---   obtain equal results.
-
-prop_add_correct :: TM -> TM -> Bool
-prop_add_correct m1 m2 = toLists (add (+) m1 m2) == toLists (add' (+) m1 m2)
-  where
-    add' :: (Ord i) => (a -> a -> a) -> Matrix i a -> Matrix i a -> Matrix i a
-    add' plus m1 m2 = Matrix (supSize m1 m2) $ mergeAssocWith plus (unM m1) (unM m2)
-      where
-        mergeAssocWith :: (Ord i) => (a -> a -> a) -> [(i,a)] -> [(i,a)] -> [(i,a)]
-        mergeAssocWith f [] m = m
-        mergeAssocWith f l [] = l
-        mergeAssocWith f l@((i,a):l') m@((j,b):m')
-            | i < j = (i,a) : mergeAssocWith f l' m
-            | i > j = (j,b) : mergeAssocWith f l m'
-            | otherwise = (i, f a b) : mergeAssocWith f l' m'
-
--- ** Matrix multiplication
-
--- | Specification of 'interAssocWith'.
-
-interAssocWith' :: (Eq i) => (a -> a -> a) -> [(i,a)] -> [(i,a)] -> [(i,a)]
-interAssocWith' f l l' = [ (i, f a b) | (i,a) <- l, (j,b) <- l', i == j ]
-
--- | Efficient implementation of 'interAssocWith' matches its specification.
-
-prop_interAssocWith_correct :: [(Int,Int)] -> [(Int,Int)] -> Bool
-prop_interAssocWith_correct xs ys =
-  interAssocWith (*) l l' == interAssocWith' (*) l l'
-  where
-    l  = List.sortBy (compare `on` fst) xs
-    l' = List.sortBy (compare `on` fst) ys
-
--- | Matrix multiplication is well-defined and associative.
-
-prop_mul :: Size Int -> Property
-prop_mul sz =
-  mapSize (`div` 2) $
-  forAll (two natural) $ \(c2, c3) ->
-  forAll (matrix sz :: Gen TM) $ \m1 ->
-  forAll (matrix (Size { rows = cols sz, cols = c2 })) $ \m2 ->
-  forAll (matrix (Size { rows = c2, cols = c3 })) $ \m3 ->
-    let m' = mult m1 m2 in
-      associative mult m1 m2 m3 &&
-      matrixInvariant m' &&
-      size m' == Size { rows = rows sz, cols = c2 }
-  where mult = mul Semiring.intSemiring
-
-------------------------------------------------------------------------
--- All tests
-
-tests :: IO Bool
-tests = runTests "Agda.Termination.SparseMatrix"
-  [ quickCheck' prop_transpose
-  , quickCheck' prop_Arbitrary_Size
-  , quickCheck' prop_Arbitrary_Matrix
-  , quickCheck' prop_Arbitrary_MIx
-  , quickCheck' prop_fromIndexList
-  , quickCheck' prop_matrix
-  , quickCheck' prop_size
-  , quickCheck' prop_toSparseRows
-  , quickCheck' prop_fromLists_toLists
-  , quickCheck' prop_isSingleton
-  , quickCheck' prop_zipMatrices_correct
-  , quickCheck' prop_add
-  , quickCheck' prop_add_correct
-  , quickCheck' prop_mul
-  , quickCheck' prop_diagonal
-  , quickCheck' prop_addColumn
-  , quickCheck' prop_addRow
-  ]
diff --git a/src/full/Agda/Termination/TermCheck.hs b/src/full/Agda/Termination/TermCheck.hs
--- a/src/full/Agda/Termination/TermCheck.hs
+++ b/src/full/Agda/Termination/TermCheck.hs
@@ -1,11 +1,7 @@
 {-# LANGUAGE CPP                        #-}
-{-# LANGUAGE FlexibleInstances          #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE ImplicitParams             #-}
-{-# LANGUAGE NamedFieldPuns             #-}
-{-# LANGUAGE PatternGuards              #-}
-{-# LANGUAGE StandaloneDeriving         #-}
-{-# LANGUAGE TupleSections              #-}
+{-# LANGUAGE NondecreasingIndentation   #-}
 
 {- Checking for Structural recursion
    Authors: Andreas Abel, Nils Anders Danielsson, Ulf Norell,
@@ -16,12 +12,14 @@
 
 module Agda.Termination.TermCheck
     ( termDecl
+    , termMutual
     , Result, DeBruijnPat
     ) where
 
 import Prelude hiding (null)
 
 import Control.Applicative hiding (empty)
+import Control.Monad.Reader
 import Control.Monad.State
 
 import Data.Foldable (toList)
@@ -39,6 +37,7 @@
 import qualified Agda.Syntax.Info as Info
 import Agda.Syntax.Position
 import Agda.Syntax.Common
+import Agda.Syntax.Translation.InternalToAbstract ( reifyPatterns )
 
 import Agda.Termination.CutOff
 import Agda.Termination.Monad
@@ -59,6 +58,7 @@
 import Agda.TypeChecking.Telescope
 import Agda.TypeChecking.EtaContract
 import Agda.TypeChecking.Monad.Builtin
+import Agda.TypeChecking.Records
 import Agda.TypeChecking.Substitute
 import Agda.TypeChecking.SizedTypes
 import Agda.TypeChecking.Datatypes
@@ -78,6 +78,7 @@
 import Agda.Utils.Monad -- (mapM', forM', ifM, or2M, and2M)
 import Agda.Utils.Null
 import Agda.Utils.Permutation
+import Agda.Utils.Pretty (prettyShow)
 import Agda.Utils.Singleton
 import qualified Agda.Utils.VarSet as VarSet
 
@@ -94,30 +95,26 @@
 type Result = [TerminationError]
 
 -- | Entry point: Termination check a single declaration.
-
-termDecl :: MutualId -> A.Declaration -> TCM Result
-termDecl mid d = inTopContext $ ignoreAbstractMode $ termDecl' mid d
-
-
--- | Termination check a sequence of declarations.
+--
+--   Precondition: 'envMutualBlock' must be set correctly.
 
-termDecls :: MutualId -> [A.Declaration] -> TCM Result
-termDecls mid ds = concat <$> mapM (termDecl' mid) ds
+termDecl :: A.Declaration -> TCM Result
+termDecl d = inTopContext $ termDecl' d
 
 
 -- | Termination check a single declaration
 --   (without necessarily ignoring @abstract@).
 
-termDecl' :: MutualId -> A.Declaration -> TCM Result
-termDecl' mid d = case d of
+termDecl' :: A.Declaration -> TCM Result
+termDecl' d = case d of
     A.Axiom {}            -> return mempty
     A.Field {}            -> return mempty
     A.Primitive {}        -> return mempty
     A.Mutual _ ds
       | [A.RecSig{}, A.RecDef _ _ _ _ _ _ _ rds] <- unscopeDefs ds
-                          -> termDecls mid rds
-    A.Mutual i ds         -> termMutual mid i ds
-    A.Section _ _ _ ds    -> termDecls mid ds
+                          -> termDecls rds
+    A.Mutual i ds         -> termMutual $ getNames ds
+    A.Section _ _ _ ds    -> termDecls ds
         -- section structure can be ignored as we are termination checking
         -- definitions lifted to the top-level
     A.Apply {}            -> return mempty
@@ -126,10 +123,10 @@
     A.Open {}             -> return mempty
     A.PatternSynDef {}    -> return mempty
         -- open and pattern synonym defs are just artifacts from the concrete syntax
-    A.ScopedDecl _ ds     -> termDecls mid ds
+    A.ScopedDecl scope ds -> {- withScope_ scope $ -} termDecls ds
         -- scope is irrelevant as we are termination checking Syntax.Internal
     A.RecSig{}            -> return mempty
-    A.RecDef _ r _ _ _ _ _ ds -> termDecls mid ds
+    A.RecDef _ r _ _ _ _ _ ds -> termDecls ds
     -- These should all be wrapped in mutual blocks
     A.FunDef{}      -> __IMPOSSIBLE__
     A.DataSig{}     -> __IMPOSSIBLE__
@@ -137,33 +134,58 @@
     A.UnquoteDecl{} -> __IMPOSSIBLE__
     A.UnquoteDef{}  -> __IMPOSSIBLE__
   where
+    termDecls ds = concat <$> mapM termDecl' ds
+
     unscopeDefs = concatMap unscopeDef
 
     unscopeDef (A.ScopedDecl _ ds) = unscopeDefs ds
     unscopeDef d = [d]
 
+    -- The mutual names mentioned in the abstract syntax
+    -- for symbols that need to be termination-checked.
+    getNames = concatMap getName
+    getName (A.FunDef i x delayed cs)   = [x]
+    getName (A.RecDef _ _ _ _ _ _ _ ds) = getNames ds
+    getName (A.Mutual _ ds)             = getNames ds
+    getName (A.Section _ _ _ ds)        = getNames ds
+    getName (A.ScopedDecl _ ds)         = getNames ds
+    getName (A.UnquoteDecl _ _ xs _)    = xs
+    getName (A.UnquoteDef _ xs _)       = xs
+    getName _                           = []
 
--- | Termination check a bunch of mutually inductive recursive definitions.
 
-termMutual :: MutualId -> Info.MutualInfo -> [A.Declaration] -> TCM Result
-termMutual mid i ds =
+-- | Entry point: Termination check the current mutual block.
 
-  -- We set the range to avoid panics when printing error messages.
-  setCurrentRange i $ do
+termMutual
+  :: [QName]
+     -- ^ The function names defined in this block on top-level.
+     --   (For error-reporting only.)
+  -> TCM Result
+termMutual names0 = ifNotM (optTerminationCheck <$> pragmaOptions) (return mempty) $ {-else-}
+ disableDestructiveUpdate $ do
 
   -- Get set of mutually defined names from the TCM.
   -- This includes local and auxiliary functions introduced
   -- during type-checking.
+  mid <- fromMaybe __IMPOSSIBLE__ <$> asks envMutualBlock
   mutualBlock <- lookupMutualBlock mid
-  let allNames = Set.elems mutualBlock
+  let allNames = Set.elems $ mutualNames mutualBlock
+      names    = if null names0 then allNames else names0
+      i        = mutualInfo mutualBlock
       -- Andreas, 2014-03-26
       -- Keeping recursion check after experiments on the standard lib.
       -- Seems still to save 1s.
       -- skip = return False
       -- No need to term-check if the declarations are acyclic!
       skip = not <$> do
+        -- Andreas, 2016-10-01 issue #2231
+        -- Recursivity checker has to see through abstract definitions!
+        ignoreAbstractMode $ do
         billTo [Benchmark.Termination, Benchmark.RecCheck] $ recursive allNames
 
+  -- We set the range to avoid panics when printing error messages.
+  setCurrentRange i $ do
+
   reportSLn "term.mutual" 10 $ "Termination checking " ++ show allNames
 
   -- NO_TERMINATION_CHECK
@@ -203,25 +225,14 @@
          -- Else: Old check, all at once.
          (runTerm $ termMutual')
 
-     -- record result of termination check in signature
+     -- Record result of termination check in signature.
+     -- If there are some termination errors, we collect them in
+     -- the state and mark the definition as non-terminating so
+     -- that it does not get unfolded
      let terminates = null res
      forM_ allNames $ \ q -> setTerminates q terminates
      return res
 
-  where
-    getName (A.FunDef i x delayed cs) = [x]
-    getName (A.RecDef _ _ _ _ _ _ _ ds) = concatMap getName ds
-    getName (A.Mutual _ ds)       = concatMap getName ds
-    getName (A.Section _ _ _ ds)  = concatMap getName ds
-    getName (A.ScopedDecl _ ds)   = concatMap getName ds
-    getName (A.UnquoteDecl _ _ xs _) = xs
-    getName (A.UnquoteDef _ xs _)    = xs
-    getName _                     = []
-
-    -- the mutual names mentioned in the abstract syntax
-    names = concatMap getName ds
-
-
 -- | @termMutual'@ checks all names of the current mutual block,
 --   henceforth called @allNames@, for termination.
 --
@@ -411,10 +422,9 @@
 --   Only the latter depends on the choice whether we
 --   consider dot patterns or not.
 termDef :: QName -> TerM Calls
-termDef name = terSetCurrent name $ do
+termDef name = terSetCurrent name $ inConcreteOrAbstractMode name $ \ def -> do
 
   -- Retrieve definition
-  def <- liftTCM $ getConstInfo name
   let t = defType def
 
   liftTCM $ reportSDoc "term.def.fun" 5 $
@@ -516,7 +526,7 @@
         t <- constructorForm t
         case ignoreSharing t of
           -- Constructors.
-          Con c args  -> ConDBP (conName c) <$> mapM (loop . unArg) args
+          Con c ci args -> ConDBP (conName c) <$> mapM (loop . unArg) args
           Def s [Apply arg] | Just s == suc
                       -> ConDBP s . (:[]) <$> loop (unArg arg)
           DontCare t  -> __IMPOSSIBLE__  -- removed by stripAllProjections
@@ -544,37 +554,24 @@
     ProjDBP{} -> return p
 
 -- | Masks all non-data/record type patterns if --without-K.
+--   See issue #1023.
 maskNonDataArgs :: [DeBruijnPat] -> TerM [Masked DeBruijnPat]
 maskNonDataArgs ps = zipWith mask ps <$> terGetMaskArgs
   where
     mask p@ProjDBP{} _ = Masked False p
     mask p           d = Masked d     p
 
--- | cf. 'TypeChecking.Coverage.Match.buildMPatterns'
-openClause :: Permutation -> [Pattern] -> ClauseBody -> TerM ([DeBruijnPat], Maybe Term)
-openClause perm ps body = do
-  -- invariant: xs has enough variables for the body
-  unless (permRange perm == genericLength xs) __IMPOSSIBLE__
-  dbps <- evalStateT (mapM build ps) xs
-  return . (dbps,) $ case body `applys` map var xs of
-    NoBody -> Nothing
-    Body v -> Just v
-    _      -> __IMPOSSIBLE__
+-- | Convert patterns to the format used by the termination checker
+--   TODO: refactor termination checking to use regular patterns
+convertPatterns :: [DeBruijnPattern] -> TerM [DeBruijnPat]
+convertPatterns ps = mapM build ps
   where
-    -- TODO: express build using numberPatVars
-    -- length of the telescope
-    n    = size perm
-    -- the variables as a map from the body variables to the clause telescope
-    xs   = permPicks $ flipP $ invertP __IMPOSSIBLE__ perm
-
-    tick = do x : xs <- get; put xs; return x
-
-    build :: Pattern -> StateT [Nat] TerM DeBruijnPat
-    build (VarP _)        = VarDBP <$> tick
+    build :: DeBruijnPattern -> TerM DeBruijnPat
+    build (VarP x)        = return $ VarDBP $ dbPatVarIndex x
     build (ConP con _ ps) = ConDBP (conName con) <$> mapM (build . namedArg) ps
-    build (DotP t)        = tick *> do lift $ termToDBP t
+    build (DotP t)        = termToDBP t
     build (LitP l)        = return $ LitDBP l
-    build (ProjP d)       = return $ ProjDBP d
+    build (ProjP o d)     = return $ ProjDBP o d
 
 -- | Extract recursive calls from one clause.
 termClause :: Clause -> TerM Calls
@@ -586,21 +583,21 @@
 
 termClause' :: Clause -> TerM Calls
 termClause' clause = do
-  cl @ Clause { clauseTel  = tel
-              , clauseBody = body } <- introHiddenLambdas clause
-  let argPats' = clausePats cl
-      perm     = clausePerm cl
+  cl <- introHiddenLambdas clause
+  let tel      = clauseTel cl
+      argPats' = namedClausePats cl
+      body     = clauseBody cl
   liftTCM $ reportSDoc "term.check.clause" 25 $ vcat
     [ text "termClause"
     , nest 2 $ text "tel      =" <+> prettyTCM tel
-    , nest 2 $ text ("perm     = " ++ show perm)
-    -- how to get the following right?
-    -- , nest 2 $ text "argPats' =" <+> do prettyA =<< reifyPatterns tel perm argPats'
+    , nest 2 $ text "argPats' =" <+> do
+      addContext tel $ do
+       aps <- reifyPatterns argPats'
+       fsep $ map prettyA aps
     ]
-  addCtxTel tel $ do
-    ps <- liftTCM $ normalise $ map unArg argPats'
-    (dbpats, res) <- openClause perm (unnumberPatVars ps) body
-    case res of
+  addContext tel $ do
+    dbpats <- convertPatterns $ map namedArg argPats'
+    case body of
       Nothing -> return empty
       Just v -> do
         dbpats <- mapM stripCoConstructors dbpats
@@ -609,13 +606,6 @@
           terSetSizeDepth tel $ do
             reportBody v
             extract v
-  {-
-  -- if we are checking a delayed definition, we treat it as if there were
-  -- a guarding coconstructor (sharp)
-  terModifyGuarded (const $ case delayed of
-        Delayed    -> Order.lt
-        NotDelayed -> Order.le) $ do
-  -}
 
   where
     reportBody :: Term -> TerM ()
@@ -639,8 +629,10 @@
 introHiddenLambdas :: MonadTCM tcm => Clause -> tcm Clause
 introHiddenLambdas clause = liftTCM $ do
   case clause of
-    Clause range ctel ps body Nothing catchall  -> return clause
-    Clause range ctel ps body (Just t) catchall -> do
+    Clause range ctel ps body        Nothing  catchall -> return clause
+
+    Clause range ctel ps Nothing     (Just t) catchall -> return clause
+    Clause range ctel ps (Just body) (Just t) catchall -> do
       case removeHiddenLambdas body of
         -- nobody or no hidden lambdas
         ([], _) -> return clause
@@ -654,26 +646,17 @@
           -- join with lhs telescope
           let ctel' = telFromList $ telToList ctel ++ telToList ttel
               ps'   = raise n ps ++ zipWith toPat (downFrom $ size axs) axs
-          return $ Clause range ctel' ps' body' (Just (t $> t')) catchall
+          return $ Clause range ctel' ps' (Just body') (Just (t $> t')) catchall
   where
-    toPat i (Arg (ArgInfo h r) x) = Arg (ArgInfo h r) $ namedDBVarP i x
-    removeHiddenLambdas :: ClauseBody -> ([Arg ArgName], ClauseBody)
-    removeHiddenLambdas = underBinds $ hlamsToBinds
+    toPat i (Arg info x) = Arg info $ namedDBVarP i x
 
-    hlamsToBinds :: Term -> ([Arg ArgName], ClauseBody)
-    hlamsToBinds v =
+    removeHiddenLambdas :: Term -> ([Arg ArgName], Term)
+    removeHiddenLambdas v =
       case ignoreSharing v of
         Lam info b | getHiding info == Hidden ->
-          let (xs, b') = hlamsToBinds $ unAbs b
-          in  (Arg info (absName b) : xs, Bind $ b' <$ b)
-        _ -> ([], Body v)
-    underBinds :: (Term -> ([a], ClauseBody)) -> ClauseBody -> ([a], ClauseBody)
-    underBinds k body = loop body where
-      loop (Bind b) =
-        let (res, b') = loop $ unAbs b
-        in  (res, Bind $ b' <$ b)
-      loop NoBody = ([], NoBody)
-      loop (Body v) = k v
+          let (xs, b') = removeHiddenLambdas $ unAbs b
+          in  (Arg info (absName b) : xs, b')
+        _ -> ([], v)
 
 -- | Extract recursive calls from expressions.
 class ExtractCalls a where
@@ -723,32 +706,8 @@
 instance ExtractCalls Type where
   extract (El s t) = extract (s, t)
 
-{-
--- | Auxiliary type to write an instance of 'ExtractCalls'.
-
-data TerConstructor = TerConstructor
-  { terConsName      :: QName
-    -- ^ Constructor name.
-  , terConsInduction :: Induction
-    -- ^ Should the constructor be treated as inductive or coinductive?
-  , terConsArgs      :: [(Arg Term, Bool)]
-    -- ^ All the arguments,
-    --   and for every argument a boolean which is 'True' iff the
-    --   argument should be viewed as preserving guardedness.
-  }
-
 -- | Extract recursive calls from a constructor application.
 
-instance ExtractCalls TerConstructor where
-  extract (TerConstructor c ind args) = mapM' loopArg args where
-    loopArg (arg, preserves) = terModifyGuarded g' $ extract arg where
-      g' = case (preserves, ind) of
-             (True,  Inductive)   -> id
-             (True,  CoInductive) -> (Order.lt .*.)
-             (False, _)           -> const Order.unknown
--}
-
--- | Extract recursive calls from a constructor application.
 constructor
   :: QName
     -- ^ Constructor name.
@@ -771,7 +730,6 @@
              (False, _)           -> const Order.unknown
 
 
-
 -- | Handle guardedness preserving type constructor.
 
 guardPresTyCon :: QName -> Elims -> (QName -> Elims -> TerM Calls) -> TerM Calls
@@ -823,8 +781,8 @@
     -- thus, we need to use traverseTermM.  Sharing is handled by traverseTermM,
     -- so no ignoreSharing needed here.
     let reduceCon = traverseTermM $ \ t -> case t of
-           Con c vs -> (`apply` vs) <$> reduce (Con c [])  -- make sure we don't reduce the arguments
-           _        -> return t
+           Con c ci vs -> (`apply` vs) <$> reduce (Con c ci [])  -- make sure we don't reduce the arguments
+           _ -> return t
 
     -- Reduce constructors only when this call is actually a recursive one.
     -- es <- liftTCM $ billTo [Benchmark.Termination, Benchmark.Reduce] $ forM es $
@@ -872,8 +830,8 @@
          let ifDelayed o | Order.decreasing o && delayed == NotDelayed = Order.le
                          | otherwise                                  = o
          liftTCM $ reportSLn "term.guardedness" 20 $
-           "composing with guardedness " ++ show guarded ++
-           " counting as " ++ show (ifDelayed guarded)
+           "composing with guardedness " ++ prettyShow guarded ++
+           " counting as " ++ prettyShow (ifDelayed guarded)
          cutoff <- terGetCutOff
          let ?cutoff = cutoff
          let matrix' = composeGuardedness (ifDelayed guarded) matrix
@@ -922,7 +880,7 @@
     case ignoreSharing t of
 
       -- Constructed value.
-      Con ConHead{conName = c} args -> do
+      Con ConHead{conName = c} _ args -> do
 
         -- A constructor preserves the guardedness of all its arguments.
         let argsg = zip args $ repeat True
@@ -1029,9 +987,9 @@
   -- Count the number of coinductive projection(pattern)s in caller and callee.
   -- Only recursive coinductive projections are eligible (Issue 1209).
   projsCaller <- genericLength <$> do
-    filterM (isCoinductiveProjection True) $ mapMaybe (isProjP . getMasked) pats
+    filterM (isCoinductiveProjection True) $ mapMaybe (fmap (head . unAmbQ . snd) . isProjP . getMasked) pats
   projsCallee <- genericLength <$> do
-    filterM (isCoinductiveProjection True) $ mapMaybe isProjElim es
+    filterM (isCoinductiveProjection True) $ mapMaybe (fmap snd . isProjElim) es
   cutoff <- terGetCutOff
   let ?cutoff = cutoff
   let guardedness = decr $ projsCaller - projsCallee
@@ -1053,7 +1011,7 @@
 annotatePatsWithUseSizeLt :: [DeBruijnPat] -> TerM [(Bool,DeBruijnPat)]
 annotatePatsWithUseSizeLt = loop where
   loop [] = return []
-  loop (p@(ProjDBP q) : pats) = ((False,p) :) <$> do projUseSizeLt q $ loop pats
+  loop (p@(ProjDBP _ q) : pats) = ((False,p) :) <$> do projUseSizeLt q $ loop pats
   loop (p : pats) = (\ b ps -> (b,p) : ps) <$> terGetUseSizeLt <*> loop pats
 
 
@@ -1072,7 +1030,10 @@
       , nest 2 $ text $ "p = " ++ show p
       ]
   case (e, getMasked p) of
-    (Proj d, ProjDBP d')           -> compareProj d d'
+    (Proj _ d, ProjDBP _ d')       -> do
+      d  <- liftTCM $ getOriginalProjection d
+      d' <- liftTCM $ getOriginalProjection d'
+      compareProj d d'
     (Proj{}, _         )           -> return Order.unknown
     (Apply{}, ProjDBP{})           -> return Order.unknown
     (Apply arg, _)                 -> compareTerm (unArg arg) p
@@ -1147,7 +1108,7 @@
   VarDBP _    -> []
   LitDBP _    -> []
   TermDBP _   -> []
-  ProjDBP _   -> []
+  ProjDBP{}   -> []
 
 compareTerm :: Term -> Masked DeBruijnPat -> TerM Order
 compareTerm t p = do
@@ -1191,9 +1152,9 @@
       []             -> return []
       (Apply a : es) -> do
         (:) <$> (Apply <$> stripAllProjections a) <*> stripAllProjections es
-      (Proj p  : es) -> do
+      (Proj o p  : es) -> do
         isP <- isProjectionButNotCoinductive p
-        applyUnless isP (Proj p :) <$> stripAllProjections es
+        applyUnless isP (Proj o p :) <$> stripAllProjections es
 
 instance StripAllProjections Args where
   stripAllProjections = mapM stripAllProjections
@@ -1202,7 +1163,7 @@
   stripAllProjections t = do
     case ignoreSharing t of
       Var i es   -> Var i <$> stripAllProjections es
-      Con c ts   -> Con c <$> stripAllProjections ts
+      Con c ci ts -> Con c ci <$> stripAllProjections ts
       Def d es   -> Def d <$> stripAllProjections es
       DontCare t -> stripAllProjections t
       _ -> return t
@@ -1268,14 +1229,14 @@
     (Con{}, ConDBP c ps) | any (isSubTerm v) ps ->
       decrease <$> offsetFromConstructor c <*> return Order.le
 
-    (Con c ts, ConDBP c' ps) | conName c == c'->
+    (Con c ci ts, ConDBP c' ps) | conName c == c'->
       compareConArgs ts ps
 
-    (Con c [], _) -> return Order.le
+    (Con c ci [], _) -> return Order.le
 
     -- new case for counting constructors / projections
     -- register also increase
-    (Con c ts, _) -> do
+    (Con c ci ts, _) -> do
       increase <$> offsetFromConstructor (conName c)
                <*> (infimum <$> mapM (\ t -> compareTerm' (unArg t) mp) ts)
 
@@ -1286,7 +1247,7 @@
 subTerm t p = if equal t p then Order.le else properSubTerm t p
   where
     equal (Shared p) dbp = equal (derefPtr p) dbp
-    equal (Con c ts) (ConDBP c' ps) =
+    equal (Con c ci ts) (ConDBP c' ps) =
       and $ (conName c == c')
           : (length ts == length ps)
           : zipWith equal (map unArg ts) ps
diff --git a/src/full/Agda/Termination/Termination.hs b/src/full/Agda/Termination/Termination.hs
--- a/src/full/Agda/Termination/Termination.hs
+++ b/src/full/Agda/Termination/Termination.hs
@@ -12,21 +12,18 @@
   , terminatesFilter
   , endos
   , idempotent
-  , Agda.Termination.Termination.tests
   ) where
 
 import Agda.Termination.CutOff
-import Agda.Termination.CallGraph  hiding (tests)
-import Agda.Termination.CallMatrix hiding (tests, toList)
+import Agda.Termination.CallGraph
+import Agda.Termination.CallMatrix hiding (toList)
 import qualified Agda.Termination.CallMatrix as CMSet
-import Agda.Termination.Order      hiding (tests)
+import Agda.Termination.Order
 import Agda.Termination.SparseMatrix
 
 import Agda.Utils.Either
 import Agda.Utils.List
 import Agda.Utils.Maybe
-import Agda.Utils.TestHelpers hiding (idempotent)
-import Agda.Utils.QuickCheck
 
 import Data.Monoid
 
@@ -87,192 +84,3 @@
 
 hasDecrease :: CallMatrixAug cinfo -> Bool
 hasDecrease = any isDecr . diagonal
-
-------------------------------------------------------------------------
--- Some examples
-
-{- Convention (see TermCheck):
-   Guardedness flag is in position (0,0) of the matrix,
-   it is always present even if the functions are all recursive.
-   The examples below do not include the guardedness flag, though.
- -}
-
--- | The call graph instantiation used by the examples below.
-
-type CG = CallGraph ()
-
--- | Constructs a call graph.  No meta info.
-
-buildCallGraph :: [Call ()] -> CG
-buildCallGraph = fromList
-
--- | The example from the JFP'02 paper.
-
-example1 :: CG
-example1 = buildCallGraph [c1, c2, c3]
-  where
-  flat = 1
-  aux  = 2
-  c1 = mkCall' flat aux $ CallMatrix $ fromLists (Size 2 1) [ [lt]
-                                                            , [lt]]
-  c2 = mkCall' aux  aux $ CallMatrix $ fromLists (Size 2 2) [ [lt, unknown]
-                                                            , [unknown, le]]
-  c3 = mkCall' aux flat $ CallMatrix $ fromLists (Size 1 2) [ [unknown, le]]
-
-prop_terminates_example1 ::  (?cutoff :: CutOff) => Bool
-prop_terminates_example1 = isRight $ terminates example1
-
--- | An example which is now handled by this algorithm: argument
--- swapping addition.
---
--- @S x + y = S (y + x)@
---
--- @Z   + y = y@
-
-example2 :: CG
-example2 = buildCallGraph [c]
-  where
-  plus = 1
-  c = mkCall' plus plus $ CallMatrix $ fromLists (Size 2 2) [ [unknown, le]
-                                                            , [lt, unknown] ]
-
-prop_terminates_example2 ::  (?cutoff :: CutOff) => Bool
-prop_terminates_example2 = isRight $ terminates example2
-
--- | A related example which is anyway handled: argument swapping addition
--- using two alternating functions.
---
--- @S x + y = S (y +' x)@
---
--- @Z   + y = y@
---
--- @S x +' y = S (y + x)@
---
--- @Z   +' y = y@
-
-example3 :: CG
-example3 = buildCallGraph [c plus plus', c plus' plus]
-  where
-  plus  = 1
-  plus' = 2
-  c f g = mkCall' f g $ CallMatrix $ fromLists (Size 2 2) [ [unknown, le]
-                                                         , [lt, unknown] ]
-
-prop_terminates_example3 ::  (?cutoff :: CutOff) => Bool
-prop_terminates_example3 = isRight $ terminates example3
-
--- | A contrived example.
---
--- @f (S x) y = f (S x) y + g x y@
---
--- @f Z     y = y@
---
--- @g x y = f x y@
---
--- TODO: This example checks that the meta information is reported properly
--- when an error is encountered.
-
-example4 :: CG
-example4 = buildCallGraph [c1, c2, c3]
-  where
-  f = 1
-  g = 2
-  c1 = mkCall' f f $ CallMatrix $ fromLists (Size 2 2) $
-         [ [le, unknown]
-         , [unknown, le] ]
-
-  c2 = mkCall' f g $ CallMatrix $ fromLists (Size 2 2) $
-         [ [lt, unknown]
-         , [unknown, le] ]
-
-  c3 = mkCall' g f $ CallMatrix $ fromLists (Size 2 2) $
-         [ [le, unknown]
-         , [unknown, le] ]
-
-prop_terminates_example4 ::  (?cutoff :: CutOff) => Bool
-prop_terminates_example4 = isLeft $ terminates example4
-
--- | This should terminate.
---
--- @f (S x) (S y) = g x (S y) + f (S (S x)) y@
---
--- @g (S x) (S y) = f (S x) (S y) + g x (S y)@
-
-example5 :: CG
-example5 = buildCallGraph [c1, c2, c3, c4]
-  where
-  f = 1
-  g = 2
-  c1 = mkCall' f g $ CallMatrix $ fromLists (Size 2 2) [ [lt, unknown]
-                                                       , [unknown, le] ]
-  c2 = mkCall' f f $ CallMatrix $ fromLists (Size 2 2) [ [unknown, unknown]
-                                                       , [unknown, lt] ]
-  c3 = mkCall' g f $ CallMatrix $ fromLists (Size 2 2) [ [le, unknown]
-                                                       , [unknown, le] ]
-  c4 = mkCall' g g $ CallMatrix $ fromLists (Size 2 2) [ [lt, unknown]
-                                                       , [unknown, le] ]
-
-prop_terminates_example5 ::  (?cutoff :: CutOff) => Bool
-prop_terminates_example5 = isRight $ terminates example5
-
--- | Another example which should fail.
---
--- @f (S x) = f x + f (S x)@
---
--- @f x     = f x@
---
--- TODO: This example checks that the meta information is reported properly
--- when an error is encountered.
-
-example6 :: CG
-example6 = buildCallGraph [c1, c2, c3]
-  where
-  f = 1
-  c1 = mkCall' f f $ CallMatrix $ fromLists (Size 1 1) [ [lt] ]
-  c2 = mkCall' f f $ CallMatrix $ fromLists (Size 1 1) [ [le] ]
-  c3 = mkCall' f f $ CallMatrix $ fromLists (Size 1 1) [ [le] ]
-
-prop_terminates_example6 ::  (?cutoff :: CutOff) => Bool
-prop_terminates_example6 = isLeft $ terminates example6
-
--- See issue 1055.
--- (The following function was adapted from Lee, Jones, and Ben-Amram,
--- POPL '01).
---
--- p : ℕ → ℕ → ℕ → ℕ
--- p m n        (succ r) = p m r n
--- p m (succ n) zero     = p zero n m
--- p m zero     zero     = m
-
-example7 :: CG
-example7 = buildCallGraph [call1, call2]
-  where
-    call1 = mkCall' 1 1 $ CallMatrix $ fromLists (Size 3 3)
-      [ [le, le, le]
-      , [un, lt, un]
-      , [le, un, un]
-      ]
-    call2 = mkCall' 1 1 $ CallMatrix $ fromLists (Size 3 3)
-      [ [le, un, un]
-      , [un, un, lt]
-      , [un, le, un]
-      ]
-    un = unknown
-
-prop_terminates_example7 ::  (?cutoff :: CutOff) => Bool
-prop_terminates_example7 = isRight $ terminates example7
-
-------------------------------------------------------------------------
--- All tests
-
-tests :: IO Bool
-tests = runTests "Agda.Termination.Termination"
-  [ quickCheck' prop_terminates_example1
-  , quickCheck' prop_terminates_example2
-  , quickCheck' prop_terminates_example3
-  , quickCheck' prop_terminates_example4
-  , quickCheck' prop_terminates_example5
-  , quickCheck' prop_terminates_example6
-  , quickCheck' prop_terminates_example7
-  ]
-  where ?cutoff = CutOff 0 -- all these examples are with just lt,le,unknown
diff --git a/src/full/Agda/Tests.hs b/src/full/Agda/Tests.hs
deleted file mode 100644
--- a/src/full/Agda/Tests.hs
+++ /dev/null
@@ -1,75 +0,0 @@
--- | Responsible for running all internal tests.
-module Agda.Tests (testSuite) where
-
-import Agda.Utils.TestHelpers
-
-import Agda.Compiler.MAlonzo.Encode           as CompEnco   (tests)
-import Agda.Interaction.Highlighting.Emacs    as InteEmac   (tests)
-import Agda.Interaction.Highlighting.Generate as InteGene   (tests)
-import Agda.Interaction.Highlighting.Precise  as IntePrec   (tests)
-import Agda.Interaction.Highlighting.Range    as InteRang   (tests)
-import Agda.Interaction.Options               as InteOpti   (tests)
-import Agda.Syntax.Parser.Parser              as SyntPars   (tests)
-import Agda.Syntax.Position                   as SyntPosi   (tests)
-import Agda.Termination.CallGraph             as TermCall   (tests)
-import Agda.Termination.CallMatrix            as TermCM     (tests)
-import Agda.Termination.Order                 as TermOrd    (tests)
-import Agda.Termination.Semiring              as TermRing   (tests)
-import Agda.Termination.SparseMatrix          as TermSparse (tests)
-import Agda.Termination.Termination           as TermTerm   (tests)
-import Agda.TypeChecking.Free.Tests           as Free       (tests)
-import Agda.TypeChecking.Irrelevance          as Irrel      (tests)
-import Agda.TypeChecking.Positivity.Tests     as Positivity (tests)
-import Agda.TypeChecking.Positivity.Occurrence as Occurrence (tests)
-import Agda.TypeChecking.Tests                as TypeChck   (tests)
-import Agda.TypeChecking.SizedTypes.Tests     as SizedTypes (tests)
-import Agda.Utils.Bag                         as UtilBag    (tests)
-import Agda.Utils.BiMap                       as UtilBiMap  (tests)
-import Agda.Utils.Cluster                     as UtilClust  (tests)
-import Agda.Utils.Either                      as UtilEith   (tests)
-import Agda.Utils.Favorites                   as UtilFav    (tests)
-import Agda.Utils.FileName                    as UtilFile   (tests)
-import Agda.Utils.Graph.AdjacencyMap.Unidirectional.Tests as UtilGraphUni (tests)
-import Agda.Utils.List                        as UtilList   (tests)
-import Agda.Utils.ListT.Tests                 as UtilListT  (tests)
-import Agda.Utils.PartialOrd                  as UtilPOrd   (tests)
-import Agda.Utils.Permutation.Tests           as UtilPerm   (tests)
-import Agda.Utils.Trie                        as UtilTrie   (tests)
-import Agda.Utils.Warshall                    as UtilWarsh  (tests)
-
-testSuite :: IO Bool
-testSuite = runTests "QuickCheck test suite:"
-  [ Free.tests
-  , Irrel.tests
-  , SizedTypes.tests
-  , UtilFav.tests
-  , UtilListT.tests
-  , UtilPerm.tests
-  , UtilPOrd.tests
-  , CompEnco.tests
-  , InteEmac.tests
-  , InteGene.tests
-  , IntePrec.tests
-  , InteRang.tests
-  , InteOpti.tests
-  , SyntPars.tests
-  , SyntPosi.tests
-  , TermCall.tests
-  , TermCM.tests
-  , TermOrd.tests
-  , TermRing.tests
-  , TermSparse.tests
-  , TermTerm.tests
-  , Positivity.tests
-  , Occurrence.tests
-  , TypeChck.tests
-  , UtilBag.tests
-  , UtilBiMap.tests
-  , UtilClust.tests
-  , UtilEith.tests
-  , UtilFile.tests
-  , UtilGraphUni.tests
-  , UtilList.tests
-  , UtilTrie.tests
-  , UtilWarsh.tests
-  ]
diff --git a/src/full/Agda/TypeChecking/Abstract.hs b/src/full/Agda/TypeChecking/Abstract.hs
--- a/src/full/Agda/TypeChecking/Abstract.hs
+++ b/src/full/Agda/TypeChecking/Abstract.hs
@@ -1,7 +1,4 @@
 {-# LANGUAGE CPP #-}
-{-# LANGUAGE FlexibleInstances #-}
-{-# LANGUAGE FlexibleContexts #-}
-{-# LANGUAGE PatternGuards #-}
 {-# LANGUAGE UndecidableInstances #-}
 
 -- | Functions for abstracting terms over other terms.
@@ -36,9 +33,9 @@
 typeOf :: Type -> Type
 typeOf = sort . getSort
 
--- Doesn't abstract in the sort.
+-- | @abstractType a v b[v] = b@ where @a : v@.
 abstractType :: Type -> Term -> Type -> TCM Type
-abstractType a v (El s b) = El (raise 1 s) <$> abstractTerm a v (sort s) b
+abstractType a v (El s b) = El (absTerm v s) <$> abstractTerm a v (sort s) b
 
 -- | @piAbstractTerm v a b[v] = (w : a) -> b[w]@
 piAbstractTerm :: Term -> Type -> Type -> TCM Type
@@ -91,7 +88,7 @@
     case (ignoreSharing u, ignoreSharing v) of
       (Var   i us, Var   j vs) | i == j  -> us `isPrefixOf` vs
       (Def   f us, Def   g vs) | f == g  -> us `isPrefixOf` vs
-      (Con   c us, Con   d vs) | c == d  -> us `isPrefixOf` vs
+      (Con c _ us, Con d _ vs) | c == d  -> us `isPrefixOf` vs
       (MetaV x us, MetaV y vs) | x == y  -> us `isPrefixOf` vs
       (u, v) -> guard (u == v) >> return []
 
@@ -152,7 +149,7 @@
       Var i vs    -> Var (i + 1) $ absT vs
       Lam h b     -> Lam h $ absT b
       Def c vs    -> Def c $ absT vs
-      Con c vs    -> Con c $ absT vs
+      Con c ci vs -> Con c ci $ absT vs
       Pi a b      -> uncurry Pi $ absT (a, b)
       Lit l       -> Lit l
       Level l     -> Level $ absT l
diff --git a/src/full/Agda/TypeChecking/CheckInternal.hs b/src/full/Agda/TypeChecking/CheckInternal.hs
--- a/src/full/Agda/TypeChecking/CheckInternal.hs
+++ b/src/full/Agda/TypeChecking/CheckInternal.hs
@@ -1,5 +1,4 @@
 {-# LANGUAGE CPP               #-}
-{-# LANGUAGE FlexibleInstances #-}
 
 -- Initially authored by Andreas, 2013-10-22.
 
@@ -126,17 +125,17 @@
     MetaV x es -> do -- we assume meta instantiations to be well-typed
       a <- metaType x
       checkSpine action a (MetaV x []) es t
-    Con c vs   -> do
+    Con c ci vs -> do
       -- we need to fully apply the constructor to make getConType work
       TelV tel t <- telView t
-      addCtxTel tel $ do
+      addContext tel $ do
         let failure = typeError $ DoesNotConstructAnElementOf (conName c) t
             vs'     = raise (size tel) vs ++ teleArgs tel
         a <- maybe failure return =<< getConType c t
-        Con c vs2 <- checkArgs action a (Con c []) vs' t
+        Con c ci vs2 <- checkArgs action a (Con c ci []) vs' t
                  -- Strip away the extra arguments
         return $ applySubst (strengthenS __IMPOSSIBLE__ (size tel))
-               $ Con c (take (length vs) vs2)
+               $ Con c ci (take (length vs) vs2)
     Lit l      -> Lit l <$ ((`subtype` t) =<< litType l)
     Lam ai vb  -> do
       (a, b) <- shouldBePi t
@@ -227,7 +226,7 @@
     Just Projection{ projIndex = n } | n > 0 -> do
       let self = unArg a
       b <- infer self
-      snd <$> inferSpine b self (Proj f : es)
+      snd <$> inferSpine b self (Proj ProjSystem f : es)
     _ -> inferDef f (Apply a : es)
 
 
@@ -257,10 +256,10 @@
       v' <- checkInternal' action v $ unDom a
       inferSpine' action (b `absApp` v) (self `applyE` [e]) (self' `applyE` [Apply (Arg ai v')]) es
     -- case: projection or projection-like
-    Proj f -> do
+    Proj o f -> do
       (a, b) <- shouldBePi =<< shouldBeProjectible t f
-      u  <- f `applyDef` (argFromDom a $> self)
-      u' <- f `applyDef` (argFromDom a $> self')
+      u  <- applyDef o f (argFromDom a $> self)
+      u' <- applyDef o f (argFromDom a $> self')
       inferSpine' action (b `absApp` self) u u' es
 
 -- | Type should either be a record type of a type eligible for
diff --git a/src/full/Agda/TypeChecking/CompiledClause.hs b/src/full/Agda/TypeChecking/CompiledClause.hs
--- a/src/full/Agda/TypeChecking/CompiledClause.hs
+++ b/src/full/Agda/TypeChecking/CompiledClause.hs
@@ -1,8 +1,5 @@
 {-# LANGUAGE CPP                #-}
 {-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveFoldable     #-}
-{-# LANGUAGE DeriveFunctor      #-}
-{-# LANGUAGE DeriveTraversable  #-}
 
 -- | Case trees.
 --
@@ -16,7 +13,7 @@
 
 import qualified Data.Map as Map
 import Data.Map (Map)
-import Data.Monoid
+import Data.Semigroup (Semigroup, Monoid, (<>), mempty, mappend, Any(..))
 import Data.Typeable (Typeable)
 import Data.Foldable (Foldable, foldMap)
 import Data.Traversable (Traversable)
@@ -27,7 +24,7 @@
 import Agda.Syntax.Position
 
 import Agda.Utils.Null
-import Agda.Utils.Pretty
+import Agda.Utils.Pretty hiding ((<>))
 
 #include "undefined.h"
 import Agda.Utils.Impossible
@@ -89,20 +86,25 @@
     Done{}    -> mempty
     Case _ br -> maybe (foldMap loop br) (const $ Any True) $ catchAllBranch br
 
-instance Monoid c => Monoid (WithArity c) where
-  mempty = WithArity __IMPOSSIBLE__ mempty
-  mappend (WithArity n1 c1) (WithArity n2 c2)
+instance Monoid c => Semigroup (WithArity c) where
+  WithArity n1 c1 <> WithArity n2 c2
     | n1 == n2  = WithArity n1 $ mappend c1 c2
     | otherwise = __IMPOSSIBLE__   -- arity must match!
 
-instance Monoid m => Monoid (Case m) where
-  mempty = empty
-  mappend (Branches cop  cs  ls  m)
-          (Branches cop' cs' ls' m') =
+instance Monoid c => Monoid (WithArity c) where
+  mempty = WithArity __IMPOSSIBLE__ mempty
+  mappend = (<>)
+
+instance Monoid m => Semigroup (Case m) where
+  Branches cop  cs  ls  m <> Branches cop' cs' ls' m' =
     Branches (cop || cop') -- for @projCase <> mempty@
              (Map.unionWith mappend cs cs')
              (Map.unionWith mappend ls ls')
              (mappend m m')
+
+instance Monoid m => Monoid (Case m) where
+  mempty = empty
+  mappend = (<>)
 
 instance Null (Case m) where
   empty = Branches False Map.empty Map.empty Nothing
diff --git a/src/full/Agda/TypeChecking/CompiledClause/Compile.hs b/src/full/Agda/TypeChecking/CompiledClause/Compile.hs
--- a/src/full/Agda/TypeChecking/CompiledClause/Compile.hs
+++ b/src/full/Agda/TypeChecking/CompiledClause/Compile.hs
@@ -1,5 +1,4 @@
 {-# LANGUAGE CPP           #-}
-{-# LANGUAGE TupleSections #-}
 
 module Agda.TypeChecking.CompiledClause.Compile where
 
@@ -8,7 +7,7 @@
 import Data.Maybe
 import Data.Monoid
 import qualified Data.Map as Map
-import Data.List (genericReplicate, nubBy, findIndex)
+import Data.List (nubBy)
 import Data.Function
 
 import Debug.Trace
@@ -45,13 +44,21 @@
   Maybe (QName, Type) -- ^ Translate record patterns and coverage check with given type?
   -> [Clause] -> TCM CompiledClauses
 compileClauses mt cs = do
-  let cls = [ Cl (unnumberPatVars $ clausePats c) (clauseBody c) | c <- cs ]
+  -- Construct clauses with pattern variables bound in left-to-right order.
+  -- Discard de Bruijn indices in patterns.
+  cs <- normaliseProjP cs
+  let unBruijn cs = [ Cl (map (fmap (fmap dbPatVarName . namedThing)) $ namedClausePats c)
+                         (compiledClauseBody c) | c <- cs ]
   shared <- sharedFun
   case mt of
-    Nothing -> return $ compile shared cls
+    Nothing -> return $ compile shared $ unBruijn cs
     Just (q, t)  -> do
       splitTree <- coverageCheck q t cs
 
+      -- The coverage checker might have added some clauses (#2288)!
+      cs <- normaliseProjP =<< defClauses <$> getConstInfo q
+      let cls = unBruijn cs
+
       reportSDoc "tc.cc" 30 $ sep $ do
         (text "clauses patterns  before compilation") : do
           map (prettyTCM . map unArg . clPats) cls
@@ -71,11 +78,12 @@
 --   used in clause compiler.
 data Cl = Cl
   { clPats :: [Arg Pattern]
-  , clBody :: ClauseBody
+      -- ^ Pattern variables are considered in left-to-right order.
+  , clBody :: Maybe Term
   } deriving (Show)
 
 instance Pretty Cl where
-  pretty (Cl ps b) = P.prettyList ps P.<+> P.text "->" P.<+> pretty b
+  pretty (Cl ps b) = P.prettyList ps P.<+> P.text "->" P.<+> maybe (P.text "_|_") pretty b
 
 type Cls = [Cl]
 
@@ -108,13 +116,14 @@
 compile :: (Term -> Term) -> Cls -> CompiledClauses
 compile shared cs = case nextSplit cs of
   Just (isRecP, n)-> Case n $ fmap (compile shared) $ splitOn isRecP (unArg n) cs
-  Nothing -> case map (getBody . clBody) cs of
+  Nothing -> case clBody c of
     -- It's possible to get more than one clause here due to
     -- catch-all expansion.
-    Just t : _  -> Done (map (fmap name) $ clPats $ head cs) (shared t)
-    Nothing : _ -> Fail
-    []          -> __IMPOSSIBLE__
+    Just t  -> Done (map (fmap name) $ clPats c) (shared t)
+    Nothing -> Fail
   where
+    -- If there are more than one clauses, take the first one.
+    c = headWithDefault __IMPOSSIBLE__ cs
     name (VarP x) = x
     name (DotP _) = underscore
     name ConP{}  = __IMPOSSIBLE__
@@ -130,7 +139,7 @@
 
 -- | Is is not a variable pattern?
 --   And if yes, is it a record pattern?
-properSplit :: Pattern -> Maybe Bool
+properSplit :: Pattern' a -> Maybe Bool
 properSplit (ConP _ cpi _) = Just $ isJust $ conPRecord cpi
 properSplit LitP{}  = Just False
 properSplit ProjP{} = Just False
@@ -140,7 +149,7 @@
 -- | Is this a variable pattern?
 --
 --   Maintain invariant: @isVar = isNothing . properSplit@!
-isVar :: Pattern -> Bool
+isVar :: Pattern' a -> Bool
 isVar VarP{}  = True
 isVar DotP{}  = True
 isVar ConP{}  = False
@@ -155,15 +164,18 @@
     expandCatchAlls single n cs
 
 splitC :: Int -> Cl -> Case Cl
-splitC n (Cl ps b) = case unArg p of
-  ProjP d     -> projCase d $ Cl (ps0 ++ ps1) b
+splitC n (Cl ps b) = caseMaybe mp fallback $ \case
+  ProjP _ d   -> projCase d $ Cl (ps0 ++ ps1) b
   ConP c _ qs -> conCase (conName c) $ WithArity (length qs) $
                    Cl (ps0 ++ map (fmap namedThing) qs ++ ps1) b
   LitP l      -> litCase l $ Cl (ps0 ++ ps1) b
-  VarP{}      -> catchAll $ Cl ps b
-  DotP{}      -> catchAll $ Cl ps b
+  VarP{}      -> fallback
+  DotP{}      -> fallback
   where
-    (ps0, p, ps1) = extractNthElement' n ps
+    (ps0, rest) = splitAt n ps
+    mp          = unArg <$> headMaybe rest
+    ps1         = drop 1 rest
+    fallback    = catchAll $ Cl ps b
 
 -- | Expand catch-alls that appear before actual matches.
 --
@@ -202,6 +214,21 @@
 --          _   -> case 3 of true  -> a; false -> b
 --   _          -> case 3 of true  -> a; false -> b
 -- @
+--
+-- Example from issue #2168:
+-- @
+--   f x     false = a
+--   f false       = \ _ -> b
+--   f x     true  = c
+-- @
+-- case tree:
+-- @
+--   f x y = case y of
+--     true  -> case x of
+--       true  -> c
+--       false -> b
+--     false -> a
+-- @
 expandCatchAlls :: Bool -> Int -> Cls -> Cls
 expandCatchAlls single n cs =
   -- Andreas, 2013-03-22
@@ -209,23 +236,24 @@
   -- we force expansion
   if single then doExpand =<< cs else
   case cs of
-  _            | all (isCatchAllNth . clPats) cs -> cs
-  Cl ps b : cs | not (isCatchAllNth ps) -> Cl ps b : expandCatchAlls False n cs
-               | otherwise -> map (expand ps b) expansions ++ Cl ps b : expandCatchAlls False n cs
+  _                | all (isCatchAllNth . clPats) cs -> cs
+  c@(Cl ps b) : cs | not (isCatchAllNth ps) -> c : expandCatchAlls False n cs
+                   | otherwise -> map (expand c) expansions ++ c : expandCatchAlls False n cs
   _ -> __IMPOSSIBLE__
   where
     -- In case there is only one branch in the split tree, we expand all
     -- catch-alls for this position
     -- The @expansions@ are collected from all the clauses @cs@ then.
     -- Note: @expansions@ could be empty, so we keep the orignal clause.
-    doExpand c@(Cl ps b)
-      | isVar $ unArg $ nth ps = map (expand ps b) expansions ++ [c]
-      | otherwise              = [c]
+    doExpand c@(Cl ps _)
+      | exCatchAllNth ps = map (expand c) expansions ++ [c]
+      | otherwise = [c]
 
     -- True if nth pattern is variable or there are less than n patterns.
     isCatchAllNth ps = all (isVar . unArg) $ take 1 $ drop n ps
 
-    nth qs = headWithDefault __IMPOSSIBLE__ $ drop n qs
+    -- True if nth pattern exists and is variable.
+    exCatchAllNth ps = any (isVar . unArg) $ take 1 $ drop n ps
 
     classify (LitP l)     = Left l
     classify (ConP c _ _) = Right c
@@ -233,38 +261,53 @@
 
     -- All non-catch-all patterns following this one (at position n).
     -- These are the cases the wildcard needs to be expanded into.
-    expansions = nubBy ((==) `on` (classify . unArg))
-               . filter (not . isVar . unArg)
-               . map (nth . clPats)
+    expansions = nubBy ((==) `on` (classify . unArg . snd))
+               . mapMaybe (notVarNth . clPats)
                $ cs
+    notVarNth ps = caseMaybe (headMaybe ps2) Nothing $ \ p ->
+      if isVar (unArg p) then Nothing else Just (ps1, p)
+      where (ps1, ps2) = splitAt n ps
 
-    expand ps b q =
+    expand cl (qs, q) =
       case unArg q of
         ConP c mt qs' -> Cl (ps0 ++ [q $> ConP c mt conPArgs] ++ ps1)
-                            (substBody n' m (Con c conArgs) b)
+                            (substBody n' m (Con c ci conArgs) b)
           where
+            ci       = fromConPatternInfo mt
             m        = length qs'
             -- replace all direct subpatterns of q by _
-            conPArgs = map (fmap ($> VarP underscore)) qs'
-            conArgs  = zipWith (\ q n -> q $> var n) qs' $ downFrom m
+            conPArgs = map (fmap ($> VarP "_")) qs'
+            conArgs  = zipWith (\ q' i -> q' $> var i) qs' $ downFrom m
         LitP l -> Cl (ps0 ++ [q $> LitP l] ++ ps1) (substBody n' 0 (Lit l) b)
         _ -> __IMPOSSIBLE__
       where
-        (ps0, rest) = splitAt n ps
-        ps1         = maybe __IMPOSSIBLE__ snd $ uncons rest
+        -- Andreas, 2016-09-19 issue #2168
+        -- Due to varying function arity, some clauses might be eta-contracted.
+        -- Thus, we eta-expand them.
+        Cl ps b = ensureNPatterns (n + 1) (map getArgInfo $ qs ++ [q]) cl
+        -- The following pattern match cannot fail (by construction of @ps@).
+        (ps0, _:ps1) = splitAt n ps
 
-        n' = countVars ps0
+        n' = countVars ps1
         countVars = sum . map (count . unArg)
         count VarP{}        = 1
         count (ConP _ _ ps) = countVars $ map (fmap namedThing) ps
         count DotP{}        = 1   -- dot patterns are treated as variables in the clauses
         count _             = 0
 
-substBody :: Int -> Int -> Term -> ClauseBody -> ClauseBody
-substBody _ _ _ NoBody = NoBody
-substBody 0 m v b = case b of
-  Bind   b -> foldr (.) id (replicate m (Bind . Abs underscore)) $ subst 0 v (absBody $ raise m b)
-  _        -> __IMPOSSIBLE__
-substBody n m v b = case b of
-  Bind b   -> Bind $ fmap (substBody (n - 1) m v) b
-  _        -> __IMPOSSIBLE__
+-- | Make sure (by eta-expansion) that clause has arity at least @n@
+--   where @n@ is also the length of the provided list.
+ensureNPatterns :: Int -> [ArgInfo] -> Cl -> Cl
+ensureNPatterns n ais0 cl@(Cl ps b)
+  | m <= 0    = cl
+  | otherwise = Cl (ps ++ ps') (raise m b `apply` args)
+  where
+  k    = length ps
+  ais  = drop k ais0
+  -- m = Number of arguments to add
+  m    = n - k
+  ps'  = for ais $ \ ai -> Arg ai $ VarP "_"
+  args = zipWith (\ i ai -> Arg ai $ var i) (downFrom m) ais
+
+substBody :: (Subst t a) => Int -> Int -> t -> a -> a
+substBody n m v = applySubst $ liftS n $ v :# raiseS m
diff --git a/src/full/Agda/TypeChecking/CompiledClause/Match.hs b/src/full/Agda/TypeChecking/CompiledClause/Match.hs
--- a/src/full/Agda/TypeChecking/CompiledClause/Match.hs
+++ b/src/full/Agda/TypeChecking/CompiledClause/Match.hs
@@ -1,10 +1,6 @@
 {-# LANGUAGE CPP                 #-}
 {-# LANGUAGE ScopedTypeVariables #-}
 
-#if __GLASGOW_HASKELL__ >= 710
-{-# LANGUAGE FlexibleContexts #-}
-#endif
-
 module Agda.TypeChecking.CompiledClause.Match where
 
 import Control.Applicative
@@ -33,9 +29,7 @@
   r <- matchCompiledE c $ map (fmap Apply) args
   case r of
     YesReduction simpl v -> return $ YesReduction simpl v
-    NoReduction bes      -> return $ NoReduction $ fmap (map fromElim) bes
-  where fromElim (Apply v) = v
-        fromElim (Proj f ) = __IMPOSSIBLE__
+    NoReduction bes      -> return $ NoReduction $ fmap (map argFromElim) bes
 
 -- | @matchCompiledE c es@ takes a function given by case tree @c@ and
 --   and a spine @es@ and tries to apply the function to @es@.
@@ -71,18 +65,10 @@
 
 match' :: Stack -> ReduceM (Reduced (Blocked Elims) Term)
 match' ((c, es, patch) : stack) = do
-  let debug = do
-       traceSDoc "reduce.compiled" 95 $ vcat $
-         [ text "reducing case" <+> do
-             caseMaybeM (asks envAppDef) __IMPOSSIBLE__ $ \ f -> do
-               sep $ prettyTCM f : map prettyTCM es
-         , text $ "trying clause " ++ show c
-         ]
   let no blocking es = return $ NoReduction $ blocking $ patch $ map ignoreReduced es
       yes t          = flip YesReduction t <$> asks envSimplification
 
-  -- traceSLn "reduce.compiled" 95 "CompiledClause.Match.match'" $ do
-  debug $ do
+  do
 
     shared <- sharedFun
 
@@ -123,7 +109,7 @@
                     NotReduced -> unfoldCorecursionE e0
             let e = ignoreBlocking eb
                 -- replace the @n@th argument by its reduced form
-                es' = es0 ++ [MaybeRed red e] ++ es1
+                es' = es0 ++ [MaybeRed (Reduced $ () <$ eb) e] ++ es1
                 -- if a catch-all clause exists, put it on the stack
                 catchAllFrame stack = maybe stack (\c -> (c, es', patch) : stack) (catchAllBranch bs)
                 -- If our argument is @Lit l@, we push @litFrame l@ onto the stack.
@@ -131,14 +117,14 @@
                   case Map.lookup l (litBranches bs) of
                     Nothing -> stack
                     Just cc -> (cc, es0 ++ es1, patchLit) : stack
-                -- If our argument (or its constructor form) is @Con c vs@
+                -- If our argument (or its constructor form) is @Con c ci vs@
                 -- we push @conFrame c vs@ onto the stack.
-                conFrame c vs stack =
+                conFrame c ci vs stack =
                   case Map.lookup (conName c) (conBranches bs) of
                     Nothing -> stack
                     Just cc -> ( content cc
-                               , es0 ++ map (MaybeRed red . Apply) vs ++ es1
-                               , patchCon c (length vs)
+                               , es0 ++ map (MaybeRed NotReduced . Apply) vs ++ es1
+                               , patchCon c ci (length vs)
                                ) : stack
                 -- If our argument is @Proj p@, we push @projFrame p@ onto the stack.
                 projFrame p stack =
@@ -150,14 +136,14 @@
                 patchLit es = patch (es0 ++ [e] ++ es1)
                   where (es0, es1) = splitAt n es
                 -- In case we matched constructor @c@ with @m@ arguments,
-                -- contract these @m@ arguments @vs@ to @Con c vs@.
-                patchCon c m es = patch (es0 ++ [Con c vs <$ e] ++ es2)
+                -- contract these @m@ arguments @vs@ to @Con c ci vs@.
+                patchCon c ci m es = patch (es0 ++ [Con c ci vs <$ e] ++ es2)
                   where (es0, rest) = splitAt n es
                         (es1, es2)  = splitAt m rest
                         vs          = map argFromElim es1
 
             -- Now do the matching on the @n@ths argument:
-            traceSLn "reduce.compiled" 100 ("caseing on raw " ++ show eb) $
+            id $
              case fmap ignoreSharing <$> eb of
               Blocked x _            -> no (Blocked x) es'
               NotBlocked _ (Apply (Arg info (MetaV x _))) -> no (Blocked x) es'
@@ -166,18 +152,18 @@
               NotBlocked _ (Apply (Arg info v@(Lit l))) -> performedSimplification $ do
                 cv <- constructorForm v
                 let cFrame stack = case ignoreSharing cv of
-                      Con c vs -> conFrame c vs stack
+                      Con c ci vs -> conFrame c ci vs stack
                       _        -> stack
-                traceSLn "reduce.compiled" 100 ("constructorForm = " ++ show cv) $
-                 match' $ litFrame l $ cFrame $ catchAllFrame stack
+                match' $ litFrame l $ cFrame $ catchAllFrame stack
 
               -- In case of a constructor, push the conFrame
-              NotBlocked _ (Apply (Arg info (Con c vs))) -> performedSimplification $
-                match' $ conFrame c vs $ catchAllFrame $ stack
+              NotBlocked _ (Apply (Arg info (Con c ci vs))) -> performedSimplification $
+                match' $ conFrame c ci vs $ catchAllFrame $ stack
 
-              -- In case of a projection, push the litFrame
-              NotBlocked _ (Proj p) -> performedSimplification $
-                match' $ projFrame p $ stack
+              -- In case of a projection, push the projFrame
+              NotBlocked _ (Proj _ p) -> performedSimplification $
+                match' $ projFrame p $ stack -- catchAllFrame $ stack
+                -- Issue #1986: no catch-all for copattern matching!
 
               -- Otherwise, we are stuck.  If we were stuck before,
               -- we keep the old reason, otherwise we give reason StuckOn here.
diff --git a/src/full/Agda/TypeChecking/Constraints.hs b/src/full/Agda/TypeChecking/Constraints.hs
--- a/src/full/Agda/TypeChecking/Constraints.hs
+++ b/src/full/Agda/TypeChecking/Constraints.hs
@@ -1,13 +1,22 @@
 {-# LANGUAGE CPP #-}
+{-# LANGUAGE NondecreasingIndentation #-}
 
 module Agda.TypeChecking.Constraints where
 
-import Control.Monad.State
+import Prelude hiding (null)
+
+import Control.Applicative hiding (empty)
+
+import Control.Monad
 import Control.Monad.Reader
-import Control.Applicative
-import Data.List as List
+import Control.Monad.State
+import Control.Monad.Trans.Maybe
 
+import Data.List as List hiding (null)
+
 import Agda.Syntax.Internal
+
+import Agda.TypeChecking.Free
 import Agda.TypeChecking.Monad
 import Agda.TypeChecking.InstanceArguments
 import Agda.TypeChecking.Pretty
@@ -22,10 +31,14 @@
 import {-# SOURCE #-} Agda.TypeChecking.Empty
 
 import Agda.Utils.Except ( MonadError(throwError) )
+import Agda.Utils.Functor
 import Agda.Utils.Maybe
 import Agda.Utils.Monad
+import Agda.Utils.Null
 import Agda.Utils.Pretty (prettyShow)
 import Agda.Utils.Lens
+import Agda.Utils.Size
+import qualified Agda.Utils.VarSet as VarSet
 
 #include "undefined.h"
 import Agda.Utils.Impossible
@@ -71,22 +84,31 @@
     isIFSConstraint FindInScope{} = True
     isIFSConstraint _             = False
 
+    isLvl LevelCmp{} = True
+    isLvl _          = False
+
+    -- Try to simplify a level constraint
     simpl :: Constraint -> TCM Constraint
-    simpl c = do
+    simpl c = if not $ isLvl c then return c else do
       n <- genericLength <$> getContext
-      let isLvl LevelCmp{} = True
-          isLvl _          = False
-      cs <- getAllConstraints
-      lvls <- instantiateFull $ List.filter (isLvl . clValue . theConstraint) cs
-      when (not $ List.null lvls) $ reportSDoc "tc.constr.add" 40 $ text "  simplifying using" <+> prettyTCM lvls
-      return $ simplifyLevelConstraint n c lvls
+      cs <- map theConstraint <$> getAllConstraints
+      lvls <- instantiateFull $ List.filter (isLvl . clValue) cs
+      when (not $ null lvls) $ do
+        reportSDoc "tc.constr.lvl" 40 $ text "simplifying level constraint" <+> prettyTCM c
+                                        $$ nest 2 (hang (text "using") 2 (prettyTCM lvls))
+      let c' = simplifyLevelConstraint c $ map clValue lvls
+      reportSDoc "tc.constr.lvl" 40 $
+        if c' /= c then text "simplified to" <+> prettyTCM c'
+                   else text "no simplification"
+      return c'
 
 -- | Don't allow the argument to produce any constraints.
 noConstraints :: TCM a -> TCM a
 noConstraints problem = liftTCM $ do
   (pid, x) <- newProblem problem
   cs <- getConstraintsForProblem pid
-  unless (List.null cs) $ typeError $ UnsolvedConstraints cs
+  w <- warning_ (UnsolvedConstraints cs)
+  unless (null cs) $ typeError $ NonFatalErrors [ w ]
   return x
 
 -- | Create a fresh problem for the given action.
@@ -144,7 +166,9 @@
     verboseS "profile.constraints" 10 $ liftTCM $ tickMax "max-open-constraints" . genericLength =<< getAllConstraints
     whenM ((force ||) . not <$> isSolvingConstraints) $ nowSolvingConstraints $ do
      -- solveSizeConstraints -- Andreas, 2012-09-27 attacks size constrs too early
-     solve
+     -- Ulf, 2016-12-06: Don't inherit problems here! Stored constraints
+     -- already contain all their dependencies.
+     locally eActiveProblems (const []) solve
   where
     solve = do
       reportSDoc "tc.constr.solve" 10 $ hsep [ text "Solving awake constraints."
@@ -194,7 +218,6 @@
       -- already solved metavariables: should only happen for size
       -- metas (not sure why it does, Andreas?)
       InstV{} -> return ()
-      InstS{} -> return ()
       -- Open (whatever that means)
       Open -> __IMPOSSIBLE__
       OpenIFS -> __IMPOSSIBLE__
@@ -215,4 +238,3 @@
     [ text "Current constraints"
     , nest 2 $ vcat [ text "awake " <+> vcat (map prettyTCM awake)
                     , text "asleep" <+> vcat (map prettyTCM sleeping) ] ]
-
diff --git a/src/full/Agda/TypeChecking/Conversion.hs b/src/full/Agda/TypeChecking/Conversion.hs
--- a/src/full/Agda/TypeChecking/Conversion.hs
+++ b/src/full/Agda/TypeChecking/Conversion.hs
@@ -1,11 +1,5 @@
 {-# LANGUAGE CPP               #-}
-{-# LANGUAGE FlexibleInstances #-}
-{-# LANGUAGE PatternGuards     #-}
 
-#if __GLASGOW_HASKELL__ >= 710
-{-# LANGUAGE FlexibleContexts #-}
-#endif
-
 module Agda.TypeChecking.Conversion where
 
 import Control.Applicative
@@ -23,7 +17,7 @@
 import Agda.Syntax.Translation.InternalToAbstract (reify)
 
 import Agda.TypeChecking.Monad
-import Agda.TypeChecking.Monad.Builtin (constructorForm)
+import Agda.TypeChecking.Monad.Builtin
 import Agda.TypeChecking.CompiledClause (CompiledClauses(Fail))
 import Agda.TypeChecking.MetaVars
 import Agda.TypeChecking.MetaVars.Occurs (killArgs,PruneResult(..))
@@ -59,11 +53,6 @@
 #include "undefined.h"
 import Agda.Utils.Impossible
 
-{- MOVED to TypeChecking.Level
-mlevel :: TCM (Maybe Term)
-mlevel = liftTCM $ (Just <$> primLevel) `catchError` \_ -> return Nothing
--}
-
 -- | Try whether a computation runs without errors or new constraints
 --   (may create new metas, though).
 --   Restores state upon failure.
@@ -75,8 +64,7 @@
 --   Return 'Just' the result upon success.
 --   Return 'Nothing' and restore state upon failure.
 tryConversion' :: TCM a -> TCM (Maybe a)
-tryConversion' m = (Just <$> do disableDestructiveUpdate $ noConstraints m)
-  `catchError` \ _ -> return Nothing
+tryConversion' m = tryMaybe $ disableDestructiveUpdate $ noConstraints m
 
 -- | Check if to lists of arguments are the same (and all variables).
 --   Precondition: the lists have the same length.
@@ -247,7 +235,7 @@
     proofIrr <- proofIrrelevance
     isSize   <- isJust <$> isSizeType a'
     s        <- reduce $ getSort a'
-    mlvl     <- mlevel
+    mlvl     <- tryMaybe primLevel
     reportSDoc "tc.conv.level" 60 $ nest 2 $ sep
       [ text $ "a'   = " ++ show a'
       , text $ "mlvl = " ++ show mlvl
@@ -309,7 +297,7 @@
                   -- No subtyping on record terms
                   c <- getRecordConstructor r
                   -- Record constructors are covariant (see test/succeed/CovariantConstructors).
-                  compareArgs (repeat $ polFromCmp cmp) (telePi_ tel $ sort Prop) (Con c []) m' n'
+                  compareArgs (repeat $ polFromCmp cmp) (telePi_ tel $ sort Prop) (Con c ConOSystem []) m' n'
 
             else compareAtom cmp a' m n
         _ -> compareAtom cmp a' m n
@@ -335,37 +323,26 @@
     (EmptyTel, EmptyTel) -> return ()
     (EmptyTel, _)        -> bad
     (_, EmptyTel)        -> bad
-    (ExtendTel dom1@(Dom i1 a1) tel1, ExtendTel dom2@(Dom i2 a2) tel2)
-      | getHiding i1 /= getHiding i2 -> bad
-        -- Andreas, 2011-09-11 do not test r1 == r2 because they could differ
-        -- e.g. one could be Forced and the other Relevant (see fail/UncurryMeta)
-      | otherwise -> do
-          name <- freshName_ (suggest (absName tel1) (absName tel2))
-          let r = max (getRelevance i1) (getRelevance i2) -- take "most irrelevant"
-              dependent = (r /= Irrelevant) && isBinderUsed tel2
--- NEW
-          pid <- newProblem_ $ compareType cmp a1 a2
-          dom <- if dependent
-                 then Dom i1 <$> blockTypeOnProblem a1 pid
-                 else return dom1
-          addContext (name, dom) $ compareTel t1 t2 cmp (absBody tel1) (absBody tel2)
-          stealConstraints pid
+    (ExtendTel dom1@(Dom i1 a1) tel1, ExtendTel dom2@(Dom i2 a2) tel2) -> do
+      compareDom cmp dom1 dom2 tel1 tel2 bad bad $
+        compareTel t1 t2 cmp (absBody tel1) (absBody tel2)
 
 {- OLD, before 2013-05-15
           let checkDom = escapeContext 1 $ compareType cmp a1 a2
               c = TelCmp t1 t2 cmp (absBody tel1) (absBody tel2)
 
-          addCtx name dom1 $
+          addContext (name, dom1) $
             if dependent
             then guardConstraint c checkDom
             else checkDom >> solveConstraint_ c
 -}
   where
     -- Andreas, 2011-05-10 better report message about types
-    bad = typeError $ UnequalTypes cmp t2 t1 -- switch t2 and t1 because of contravariance!
---    bad = typeError $ UnequalTelescopes cmp tel1 tel2
+    bad = typeError $ UnequalTypes cmp t2 t1
+      -- switch t2 and t1 because of contravariance!
 
 
+
 -- | Raise 'UnequalTerms' if there is no hope that by
 --   meta solving and subsequent eta-contraction these
 --   terms could become equal.
@@ -542,13 +519,13 @@
             (Def f es, Def f' es') ->
               unlessM (bothAbsurd f f') $ do
                 trySizeUniv cmp t m n f es f' es'
-            (Con x xArgs, Con y yArgs)
+            (Con x ci xArgs, Con y _ yArgs)
                 | x == y -> do
                     -- Get the type of the constructor instantiated to the datatype parameters.
                     a' <- conType x t
                     -- Constructors are covariant in their arguments
                     -- (see test/succeed/CovariantConstructors).
-                    compareArgs (repeat $ polFromCmp cmp) a' (Con x []) xArgs yArgs
+                    compareArgs (repeat $ polFromCmp cmp) a' (Con x ci []) xArgs yArgs
             _ -> etaInequal cmp t m n -- fixes issue 856 (unsound conversion error)
     where
         -- Andreas, 2013-05-15 due to new postponement strategy, type can now be blocked
@@ -566,44 +543,64 @@
                 patternViolation
           maybe impossible return =<< getConType c t
         equalFun t1 t2 = case (ignoreSharing t1, ignoreSharing t2) of
-          (Pi dom1@(Dom i1 a1@(El a1s a1t)) b1, Pi (Dom i2 a2) b2)
-            | argInfoHiding i1 /= argInfoHiding i2 -> typeError $ UnequalHiding t1 t2
-            -- Andreas 2010-09-21 compare r1 and r2, but ignore forcing annotations!
-            | not (compareRelevance cmp (ignoreForced $ argInfoRelevance i2)
-                                        (ignoreForced $ argInfoRelevance i1))
-                -> typeError $ UnequalRelevance cmp t1 t2
-            | otherwise -> verboseBracket "tc.conv.fun" 15 "compare function types" $ do
-                reportSDoc "tc.conv.fun" 20 $ nest 2 $ vcat
-                  [ text "t1 =" <+> prettyTCM t1
-                  , text "t2 =" <+> prettyTCM t2 ]
-
-                -- We only need to require a1 == a2 if t2 is a dependent function type.
-                -- If it's non-dependent it doesn't matter what we add to the context.
-                pid <- newProblem_ $ compareType cmp a2 a1
-                dom <- if isBinderUsed b2
-                       then Dom i1 <$> blockTypeOnProblem a1 pid
-                       -- then Dom i1 . El a1s <$> blockTermOnProblem (El Inf $ Sort a1s) a1t pid
-                       else return dom1
-                name <- freshName_ (suggest b1 b2)
-                addContext (name, dom) $ compareType cmp (absBody b1) (absBody b2)
-                stealConstraints pid
-                -- Andreas, 2013-05-15 Now, comparison of codomains is not
-                -- blocked any more by getting stuck on domains.
-                -- Only the domain type in context will be blocked.
+          (Pi dom1 b1, Pi dom2 b2) -> do
+            verboseBracket "tc.conv.fun" 15 "compare function types" $ do
+              reportSDoc "tc.conv.fun" 20 $ nest 2 $ vcat
+                [ text "t1 =" <+> prettyTCM t1
+                , text "t2 =" <+> prettyTCM t2 ]
+              compareDom cmp dom2 dom1 b1 b2 errH errR $
+                compareType cmp (absBody b1) (absBody b2)
+            where
+            errH = typeError $ UnequalHiding t1 t2
+            errR = typeError $ UnequalRelevance cmp t1 t2
 
-{- OLD
+{- OLD, before 2013-05-15
                 let checkDom = escapeContext 1 $ compareType cmp a2 a1
                     conCoDom = TypeCmp cmp (absBody b1) (absBody b2)
                 -- We only need to require a1 == a2 if t2 is a dependent function type.
                 -- If it's non-dependent it doesn't matter what we add to the context.
                 name <- freshName_ (suggest b1 b2)
-                addCtx name dom1 $
+                addContext (name, dom1) $
                   if isBinderUsed b2 -- dependent function type?
                   then guardConstraint conCoDom checkDom
                   else checkDom >> solveConstraint_ conCoDom
 -}
           _ -> __IMPOSSIBLE__
 
+-- | Check whether @a1 `cmp` a2@ and continue in context extended by @a1@.
+compareDom :: Free c
+  => Comparison -- ^ @cmp@ The comparison direction
+  -> Dom Type   -- ^ @a1@  The smaller domain.
+  -> Dom Type   -- ^ @a2@  The other domain.
+  -> Abs b      -- ^ @b1@  The smaller codomain.
+  -> Abs c      -- ^ @b2@  The bigger codomain.
+  -> TCM ()     -- ^ Continuation if mismatch in 'Hiding'.
+  -> TCM ()     -- ^ Continuation if mismatch in 'Relevance'.
+  -> TCM ()     -- ^ Continuation if comparison is successful.
+  -> TCM ()
+compareDom cmp dom1@(Dom i1 a1) dom2@(Dom i2 a2) b1 b2 errH errR cont
+  | getHiding dom1 /= getHiding dom2 = errH
+  -- Andreas 2010-09-21 compare r1 and r2, but ignore forcing annotations!
+  | not $ compareRelevance cmp (ignoreForced $ getRelevance dom1)
+                               (ignoreForced $ getRelevance dom2) = errR
+  | otherwise = do
+      let r = max (getRelevance dom1) (getRelevance dom2)
+              -- take "most irrelevant"
+          dependent = (r /= Irrelevant) && isBinderUsed b2
+      pid <- newProblem_ $ compareType cmp a1 a2
+      dom <- if dependent
+             then Dom i1 <$> blockTypeOnProblem a1 pid
+             else return dom1
+        -- We only need to require a1 == a2 if b2 is dependent
+        -- If it's non-dependent it doesn't matter what we add to the context.
+      name <- freshName_ $ suggest b1 b2
+      addContext (name, dom) $ cont
+      stealConstraints pid
+        -- Andreas, 2013-05-15 Now, comparison of codomains is not
+        -- blocked any more by getting stuck on domains.
+        -- Only the domain type in context will be blocked.
+        -- But see issue #1258.
+
 compareRelevance :: Comparison -> Relevance -> Relevance -> Bool
 compareRelevance CmpEq  = (==)
 compareRelevance CmpLeq = (<=)
@@ -652,7 +649,7 @@
       ifBlockedType a (\ m t -> patternViolation) $ \ a -> do
         case ignoreSharing . unEl $ a of
           (Pi (Dom info b) codom) -> do
-            mlvl <- mlevel
+            mlvl <- tryMaybe primLevel
             let freeInCoDom (Abs _ c) = 0 `freeInIgnoringSorts` c
                 freeInCoDom _         = False
                 dependent = (Just (unEl b) /= mlvl) && freeInCoDom codom
@@ -719,12 +716,12 @@
             -- __IMPOSSIBLE__
 
     -- case: f == f' are projections
-    (Proj f : els1, Proj f' : els2)
+    (Proj o f : els1, Proj _ f' : els2)
       | f /= f'   -> typeError . GenericError . show =<< prettyTCM f <+> text "/=" <+> prettyTCM f'
       | otherwise -> ifBlockedType a (\ m t -> patternViolation) $ \ a -> do
-        res <- projectTyped v a f -- fails only if f is proj.like but parameters cannot be retrieved
+        res <- projectTyped v a o f -- fails only if f is proj.like but parameters cannot be retrieved
         case res of
-          Just (u, t) -> do
+          Just (_, u, t) -> do
             -- Andreas, 2015-07-01:
             -- The arguments following the principal argument of a projection
             -- are invariant.  (At least as long as we have no explicit polarity
@@ -766,7 +763,6 @@
       let rel  = getMetaRelevance mv
           inst = case mvInstantiation mv of
                    InstV{} -> True
-                   InstS{} -> True
                    _       -> False
       reportSDoc "tc.conv.irr" 20 $ vcat
         [ nest 2 $ text $ "rel  = " ++ show rel
@@ -774,7 +770,10 @@
         ]
       if not (irrelevantOrUnused rel) || inst
         then fallback
-        else assignE DirEq x es w $ compareIrrelevant t
+        -- Andreas, 2016-08-08, issue #2131:
+        -- Mining for solutions for irrelevant metas is not definite.
+        -- Thus, in case of error, leave meta unsolved.
+        else (assignE DirEq x es w $ compareIrrelevant t) `catchError` \ _ -> fallback
         -- the value of irrelevant or unused meta does not matter
     try v w fallback = fallback
 
@@ -979,9 +978,11 @@
   -- See case for `same term` below.
   a <- normalise a
   b <- normalise b
-  catchConstraint (LevelCmp CmpLeq a b) $ leqView a b
+  leqView a b
   where
-    leqView a@(Max as) b@(Max bs) = do
+    -- Andreas, 2016-09-28
+    -- If we have to postpone a constraint, then its simplified form!
+    leqView a@(Max as) b@(Max bs) = catchConstraint (LevelCmp CmpLeq a b) $ do
       reportSDoc "tc.conv.nat" 30 $
         text "compareLevelView" <+>
           sep [ text (show a) <+> text "=<"
@@ -995,7 +996,11 @@
         ([], _) -> ok
 
         -- as ≤ 0
-        (as, [])  -> sequence_ [ equalLevel' (Max [a]) (Max []) | a <- as ]
+        (as, [])              -> sequence_ [ equalLevel' (Max [a]) (Max []) | a <- as ]
+        (as, [ClosedLevel 0]) -> sequence_ [ equalLevel' (Max [a]) (Max []) | a <- as ]
+           -- Andreas, 2016-09-28, @[ClosedLevel 0]@ is possible if we come from case
+           -- "reduce constants" where we run @subtr@ on both sides.
+           -- See test/Succeed/LevelMetaLeqZero.agda.
 
         -- as ≤ [b]
         (as@(_:_:_), [b]) -> sequence_ [ leqView (Max [a]) (Max [b]) | a <- as ]
@@ -1041,11 +1046,14 @@
                         [n] -> n
                         _   -> __IMPOSSIBLE__
 
-        -- [a] ≤ [neutral]
-        ([a@(Plus n _)], [b@(Plus m NeutralLevel{})])
-          | m == n -> equalLevel' (Max [a]) (Max [b])
-          -- Andreas, 2014-04-07: This call to equalLevel is ok even if we removed
-          -- subsumed terms from the lhs.
+        -- Andreas, 2016-09-28: This simplification loses the solution lzero.
+        -- Thus, it is invalid.
+        -- See test/Succeed/LevelMetaLeqNeutralLevel.agda.
+        -- -- [a] ≤ [neutral]
+        -- ([a@(Plus n _)], [b@(Plus m NeutralLevel{})])
+        --   | m == n -> equalLevel' (Max [a]) (Max [b])
+        --   -- Andreas, 2014-04-07: This call to equalLevel is ok even if we removed
+        --   -- subsumed terms from the lhs.
 
         -- anything else
         _ -> postpone
diff --git a/src/full/Agda/TypeChecking/Coverage.hs b/src/full/Agda/TypeChecking/Coverage.hs
--- a/src/full/Agda/TypeChecking/Coverage.hs
+++ b/src/full/Agda/TypeChecking/Coverage.hs
@@ -1,9 +1,5 @@
 {-# LANGUAGE CPP              #-}
-{-# LANGUAGE FlexibleContexts #-}
-{-# LANGUAGE PatternGuards    #-}
-{-# LANGUAGE TupleSections    #-}
-
-{-# OPTIONS_GHC -fwarn-unused-imports #-}
+{-# LANGUAGE NondecreasingIndentation #-}
 
 {-| Coverage checking, case splitting, and splitting for refine tactics.
 
@@ -13,9 +9,11 @@
   ( SplitClause(..), clauseToSplitClause, fixTarget
   , Covering(..), splitClauses
   , coverageCheck
+  , isCovered
   , splitClauseWithAbsurd
   , splitLast
   , splitResult
+  , normaliseProjP
   ) where
 
 import Prelude hiding (null)
@@ -28,18 +26,23 @@
 #endif
 
 import Data.List hiding (null)
+import Data.Monoid (Any(..))
+import Data.Map (Map)
+import qualified Data.Map as Map
 import Data.Set (Set)
 import qualified Data.Set as Set
 import qualified Data.Traversable as Trav
 
 import Agda.Syntax.Common
+import Agda.Syntax.Position
+import Agda.Syntax.Literal
 import Agda.Syntax.Internal
 import Agda.Syntax.Internal.Pattern
 
 import Agda.TypeChecking.Monad
 import Agda.TypeChecking.Monad.Exception
 
-import Agda.TypeChecking.Rules.LHS.Problem (flexibleVarFromHiding)
+import Agda.TypeChecking.Rules.LHS.Problem (allFlexVars)
 import Agda.TypeChecking.Rules.LHS.Unify
 
 import Agda.TypeChecking.Coverage.Match
@@ -48,10 +51,10 @@
 import Agda.TypeChecking.Datatypes (getConForm)
 import Agda.TypeChecking.Pretty
 import Agda.TypeChecking.Substitute
-import Agda.TypeChecking.Substitute.Pattern
 import Agda.TypeChecking.Reduce
-import Agda.TypeChecking.Records (isRecordType)
+import Agda.TypeChecking.Records
 import Agda.TypeChecking.Telescope
+import Agda.TypeChecking.MetaVars
 
 import Agda.Interaction.Options
 
@@ -64,6 +67,7 @@
 import Agda.Utils.Permutation
 import Agda.Utils.Size
 import Agda.Utils.Tuple
+import Agda.Utils.Lens
 
 #include "undefined.h"
 import Agda.Utils.Impossible
@@ -87,6 +91,9 @@
     --   'splitResult', which does not split on a variable,
     --   should reset it to the identity 'idS', lest it be
     --   applied to 'scTarget' again, leading to Issue 1294.
+  , scModuleParameterSub :: ModuleParamDict
+    -- ^ We need to keep track of the module parameter substitutions for the
+    -- clause for the purpose of inferring missing instance clauses.
   , scTarget :: Maybe (Arg Type)
     -- ^ The type of the rhs, living in context 'scTel'.
     --   This invariant is broken before calls to 'fixTarget';
@@ -107,12 +114,13 @@
 splitClauses :: Covering -> [SplitClause]
 splitClauses (Covering _ qcs) = map snd qcs
 
--- | Create a split clause from a clause in internal syntax.
+-- | Create a split clause from a clause in internal syntax. Used by make-case.
 clauseToSplitClause :: Clause -> SplitClause
 clauseToSplitClause cl = SClause
   { scTel    = clauseTel  cl
   , scPats   = namedClausePats cl
   , scSubst  = idS  -- Andreas, 2014-07-15  TODO: Is this ok?
+  , scModuleParameterSub = Map.empty
   , scTarget = clauseType cl
   }
 
@@ -125,13 +133,22 @@
   let -- n             = arity
       -- xs            = variable patterns fitting lgamma
       n            = size gamma
-      xs           = teleNamedArgs gamma
+      xs           =  map (setOrigin Inserted) $ teleNamedArgs gamma
+      -- The initial module parameter substitutions need to be weakened by the
+      -- number of arguments that aren't module parameters.
+  fv           <- getDefFreeVars f
+  moduleParams <- raise (n - fv) <$> use stModuleParameters
       -- construct the initial split clause
-      sc           = SClause gamma xs idS $ Just $ defaultArg a
-  reportSDoc "tc.cover.top" 10 $ vcat
-    [ text $ "Coverage checking " ++ show f
-    , nest 2 $ vcat $ map (text . show . clausePats) cs
-    ]
+  let sc = SClause gamma xs idS moduleParams $ Just $ defaultArg a
+
+  reportSDoc "tc.cover.top" 10 $ do
+    let prCl cl = addContext (clauseTel cl) $
+                  prettyTCMPatternList $ namedClausePats cl
+    vcat
+      [ text $ "Coverage checking " ++ show f ++ " with patterns:"
+      , nest 2 $ vcat $ map prCl cs
+      ]
+
   -- used = actually used clauses for cover
   -- pss  = uncovered cases
   (splitTree, used, pss) <- cover f cs sc
@@ -142,39 +159,49 @@
   -- report an error if there are uncovered cases
   unless (null pss) $
       setCurrentRange cs $
-        typeError $ CoverageFailure f (map (map (fmap namedThing)) pss)
+        typeError $ CoverageFailure f pss
   -- is = indices of unreachable clauses
   let is = Set.toList $ Set.difference (Set.fromList [0..genericLength cs - 1]) used
   -- report an error if there are unreachable clauses
   unless (null is) $ do
       let unreached = map (cs !!) is
       setCurrentRange unreached $
-        typeError $ UnreachableClauses f (map clausePats unreached)
+        typeError $ UnreachableClauses f $ map namedClausePats unreached
   return splitTree
 
+-- | Top-level function for eliminating redundant clauses in the interactive
+--   case splitter
+isCovered :: QName -> [Clause] -> SplitClause -> TCM Bool
+isCovered f cs sc = do
+  (_, _, missing) <- cover f cs sc
+  return $ null missing
 
 -- | @cover f cs (SClause _ _ ps _) = return (splitTree, used, pss)@.
 --   checks that the list of clauses @cs@ covers the given split clause.
 --   Returns the @splitTree@, the @used@ clauses, and missing cases @pss@.
 cover :: QName -> [Clause] -> SplitClause ->
          TCM (SplitTree, Set Nat, [[NamedArg DeBruijnPattern]])
-cover f cs sc@(SClause tel ps _ target) = do
+cover f cs sc@(SClause tel ps _ _ target) = do
   reportSDoc "tc.cover.cover" 10 $ vcat
     [ text "checking coverage of pattern:"
     , nest 2 $ text "tel  =" <+> prettyTCM tel
-    , nest 2 $ text "ps   =" <+> text (show ps)
+    , nest 2 $ text "ps   =" <+> do addContext tel $ prettyTCMPatternList ps
     ]
-  let ups = map (fmap namedThing) ps
   exactSplitEnabled <- optExactSplit <$> pragmaOptions
-  case match cs ups of
-    Yes (i,mps)
-     | not exactSplitEnabled || (clauseCatchall (cs !! i) || all isTrivialMPattern mps)
+  cs' <- normaliseProjP cs
+  case match cs' ps of
+    Yes (i,(mps,ls0))
+     | not exactSplitEnabled || (clauseCatchall (cs !! i) || all isTrivialPattern mps)
      -> do
       reportSLn "tc.cover.cover" 10 $ "pattern covered by clause " ++ show i
       -- Check if any earlier clauses could match with appropriate literals
-      let is = [ j | (j, c) <- zip [0..i-1] cs, matchLits c ups ]
-      reportSLn "tc.cover.cover"  10 $ "literal matches: " ++ show is
-      return (SplittingDone (size tel), Set.fromList (i : is), [])
+      let lsis = mapMaybe (\(j,c) -> (,j) <$> matchLits c ps) $ zip [0..i-1] cs
+      reportSLn "tc.cover.cover"  10 $ "literal matches: " ++ show lsis
+      -- Andreas, 2016-10-08, issue #2243 (#708)
+      -- If we have several literal matches with the same literals
+      -- only take the first matching clause of these.
+      let is = Map.elems $ Map.fromListWith min $ (ls0,i) : lsis
+      return (SplittingDone (size tel), Set.fromList is, [])
 
      | otherwise -> do
          reportSDoc "tc.cover.cover" 10 $ vcat
@@ -186,25 +213,24 @@
 
     No        ->  do
       reportSLn "tc.cover" 20 $ "pattern is not covered"
-      return (SplittingDone (size tel), Set.empty, [ps])
+      case fmap getHiding target of
+        Just h | h == Instance -> do
+          -- Ulf, 2016-10-31: For now we only infer instance clauses. It would
+          -- make sense to do it also for hidden, but since the value of a
+          -- hidden clause is expected to be forced by later clauses, it's too
+          -- late to add it now. If it was inferrable we would have gotten a
+          -- type error before getting to this point.
+          inferMissingClause f sc
+          return (SplittingDone (size tel), Set.empty, [])
+        _ -> return (SplittingDone (size tel), Set.empty, [ps])
 
-    -- case: split into projection patterns
-    BlockP   -> do
-      reportSLn "tc.cover" 20 $ "blocked by projection pattern"
-      -- if we want to split projections, but have no target type, we give up
+    -- We need to split!
+    -- If all clauses have an unsplit copattern, we try that first.
+    Block res bs -> tryIf (getAny res) splitRes $ do
       let done = return (SplittingDone (size tel), Set.empty, [ps])
-      caseMaybeM (splitResult f sc) done $ \ (Covering n scs) -> do
-        (projs, (trees, useds, psss)) <- mapSnd unzip3 . unzip <$> do
-          mapM (traverseF $ cover f cs <=< (snd <.> fixTarget)) scs
-          -- OR:
-          -- forM scs $ \ (proj, sc') -> (proj,) <$> do
-          --   cover f cs =<< do
-          --     snd <$> fixTarget sc'
-        let tree = SplitAt n $ zip projs trees
-        return (tree, Set.unions useds, concat psss)
-
-    -- case: split on variable
-    Block bs -> do
+      if null bs then done else do
+      -- Otherwise, if there are variables to split, we try them
+      -- in the order determined by a split strategy.
       reportSLn "tc.cover.strategy" 20 $ "blocking vars = " ++ show bs
       -- xs is a non-empty lists of blocking variables
       -- try splitting on one of them
@@ -234,53 +260,88 @@
             , nest 2 $ vcat
               [ text "n   = " <+> text (show n)
               , text "scs = " <+> prettyTCM scs
-              , text "ups = " <+> text (show ups)
+              , text "ps  = " <+> text (show ps)
               ]
             ]
-          let trees' = zipWith (etaRecordSplits (unArg n) ups) scs trees
+          let trees' = zipWith (etaRecordSplits (unArg n) ps) scs trees
               tree   = SplitAt n trees'
           return (tree, Set.unions useds, concat psss)
 
   where
+    tryIf :: Monad m => Bool -> m (Maybe a) -> m a -> m a
+    tryIf True  me m = fromMaybeM m me
+    tryIf False me m = m
+
+    -- Try to split result
+    splitRes :: TCM (Maybe (SplitTree, Set Nat, [[NamedArg DeBruijnPattern]]))
+    splitRes = do
+      reportSLn "tc.cover" 20 $ "blocked by projection pattern"
+      -- forM is a monadic map over a Maybe here
+      mcov <- splitResult f sc
+      Trav.forM mcov $ \ (Covering n scs) -> do
+        -- If result splitting was successful, continue coverage checking.
+        (projs, (trees, useds, psss)) <- mapSnd unzip3 . unzip <$> do
+          mapM (traverseF $ cover f cs <=< (snd <.> fixTarget)) scs
+          -- OR:
+          -- forM scs $ \ (proj, sc') -> (proj,) <$> do
+          --   cover f cs =<< do
+          --     snd <$> fixTarget sc'
+        let tree = SplitAt n $ zip projs trees
+        return (tree, Set.unions useds, concat psss)
+
     gatherEtaSplits :: Int -> SplitClause
-                    -> [Arg DeBruijnPattern] -> [Arg DeBruijnPattern]
+                    -> [NamedArg DeBruijnPattern] -> [NamedArg DeBruijnPattern]
     gatherEtaSplits n sc []
        | n >= 0    = __IMPOSSIBLE__ -- we should have encountered the main
                                     -- split by now already
        | otherwise = []
-    gatherEtaSplits n sc (p:ps) = case unArg p of
-      VarP  (i,_)
-       | n == 0    -> case lookupS (scSubst sc) i of -- this is the main split
+    gatherEtaSplits n sc (p:ps) = case namedArg p of
+      VarP x
+       | n == 0    -> case p' of -- this is the main split
            VarP  _      -> __IMPOSSIBLE__
            DotP  _      -> __IMPOSSIBLE__
-           ConP  _ _ qs ->
-             map (fmap namedThing) qs ++ gatherEtaSplits (-1) sc ps
+           ConP  _ _ qs -> qs ++ gatherEtaSplits (-1) sc ps
            LitP  _      -> __IMPOSSIBLE__
-           ProjP _      -> __IMPOSSIBLE__
+           ProjP{}      -> __IMPOSSIBLE__
        | otherwise ->
-           (p $> lookupS (scSubst sc) i) : gatherEtaSplits (n-1) sc ps
+           updateNamedArg (\ _ -> p') p : gatherEtaSplits (n-1) sc ps
+        where p' = lookupS (scSubst sc) $ dbPatVarIndex x
       DotP  _      -> p : gatherEtaSplits (n-1) sc ps -- count dot patterns
-      ConP  _ _ qs -> gatherEtaSplits n sc (map (fmap namedThing) qs ++ ps)
+      ConP  _ _ qs -> gatherEtaSplits n sc (qs ++ ps)
       LitP  _      -> gatherEtaSplits n sc ps
-      ProjP _      -> gatherEtaSplits n sc ps
+      ProjP{}      -> gatherEtaSplits n sc ps
 
-    addEtaSplits :: Int -> [Arg DeBruijnPattern] -> SplitTree -> SplitTree
+    addEtaSplits :: Int -> [NamedArg DeBruijnPattern] -> SplitTree -> SplitTree
     addEtaSplits k []     t = t
-    addEtaSplits k (p:ps) t = case unArg p of
+    addEtaSplits k (p:ps) t = case namedArg p of
       VarP  _       -> addEtaSplits (k+1) ps t
       DotP  _       -> addEtaSplits (k+1) ps t
-      ConP c cpi nqs ->
-        let qs = map (fmap namedThing) nqs
-            t' = [(conName c , addEtaSplits k (qs ++ ps) t)]
-        in  SplitAt (p $> k) t'
+      ConP c cpi qs -> SplitAt (p $> k) [(conName c , addEtaSplits k (qs ++ ps) t)]
       LitP  _       -> __IMPOSSIBLE__
-      ProjP _       -> __IMPOSSIBLE__
+      ProjP{}       -> __IMPOSSIBLE__
 
-    etaRecordSplits :: Int -> [Arg DeBruijnPattern] -> (QName,SplitClause)
+    etaRecordSplits :: Int -> [NamedArg DeBruijnPattern] -> (QName,SplitClause)
                     -> SplitTree -> (QName,SplitTree)
     etaRecordSplits n ps (q , sc) t =
       (q , addEtaSplits 0 (gatherEtaSplits n sc ps) t)
 
+inferMissingClause :: QName -> SplitClause -> TCM ()
+inferMissingClause f (SClause tel ps _ mpsub (Just t)) = setCurrentRange f $ do
+  reportSDoc "tc.cover.infer" 20 $ addContext tel $ text "Trying to infer right-hand side of type" <+> prettyTCM t
+  cl <- addContext tel $ withModuleParameters mpsub $ do
+    (x, rhs) <- case getHiding t of
+                  Instance  -> newIFSMeta "" (unArg t)
+                  Hidden    -> __IMPOSSIBLE__
+                  NotHidden -> __IMPOSSIBLE__
+    return $ Clause { clauseRange     = noRange
+                    , clauseTel       = tel
+                    , namedClausePats = ps
+                    , clauseBody      = Just rhs
+                    , clauseType      = Just t
+                    , clauseCatchall  = False }
+  addClauses f [cl]
+inferMissingClause _ (SClause _ _ _ _ Nothing) = __IMPOSSIBLE__
+
 splitStrategy :: BlockingVars -> Telescope -> TCM BlockingVars
 splitStrategy bs tel = return $ updateLast clearBlockingVarCons xs
   -- Make sure we do not insists on precomputed coverage when
@@ -335,26 +396,31 @@
 --   if target becomes a function type.
 --   Returns the domains of the function type (if any).
 fixTarget :: SplitClause -> TCM (Telescope, SplitClause)
-fixTarget sc@SClause{ scTel = sctel, scPats = ps, scSubst = sigma, scTarget = target } =
+fixTarget sc@SClause{ scTel = sctel, scPats = ps, scSubst = sigma, scModuleParameterSub = mpsub, scTarget = target } =
   caseMaybe target (return (empty, sc)) $ \ a -> do
     reportSDoc "tc.cover.target" 20 $ sep
       [ text "split clause telescope: " <+> prettyTCM sctel
-      , text "old patterns          : " <+> sep (map (prettyTCM . namedArg) ps)
-      , text "substitution          : " <+> text (show sigma)
+      , text "old patterns          : " <+> do
+          addContext sctel $ prettyTCMPatternList ps
       ]
+    reportSDoc "tc.cover.target" 60 $ sep
+      [ text "substitution          : " <+> text (show sigma)
+      ]
     reportSDoc "tc.cover.target" 30 $ sep
       [ text "target type before substitution (variables may be wrong): " <+> do
           addContext sctel $ prettyTCM a
       ]
     TelV tel b <- telView $ applyPatSubst sigma $ unArg a
-    reportSDoc "tc.cover.target" 10 $ sep
+    reportSDoc "tc.cover.target" 15 $ sep
       [ text "target type telescope (after substitution): " <+> do
           addContext sctel $ prettyTCM tel
       , text "target type core      (after substitution): " <+> do
           addContext sctel $ addContext tel $ prettyTCM b
       ]
     let n         = size tel
-        xs        = teleNamedArgs tel
+        -- Andreas, 2016-10-04 issue #2236
+        -- Need to set origin to "Inserted" to avoid printing of hidden patterns.
+        xs        = map (setOrigin Inserted) $ teleNamedArgs tel
         -- Compute new split clause
         sctel'    = telFromList $ telToList (raise n sctel) ++ telToList tel
         -- Dot patterns in @ps@ need to be raised!  (Issue 1298)
@@ -365,6 +431,7 @@
           , scPats   = ps'
           , scSubst  = wkS n $ sigma -- Should be wkS instead of liftS since
                                      -- variables are only added to new tel.
+          , scModuleParameterSub = applySubst (raiseS n) mpsub
           , scTarget = newTarget
           }
     -- Separate debug printing to find cause of crash (Issue 1374)
@@ -372,9 +439,10 @@
       [ text "new split clause telescope   : " <+> prettyTCM sctel'
       ]
     reportSDoc "tc.cover.target" 30 $ sep
-      [ text "new split clause patterns    : " <+> sep (map (prettyTCM . namedArg) ps')
+      [ text "new split clause patterns    : " <+> do
+          addContext sctel' $ prettyTCMPatternList ps'
       ]
-    reportSDoc "tc.cover.target" 30 $ sep
+    reportSDoc "tc.cover.target" 60 $ sep
       [ text "new split clause substitution: " <+> text (show $ scSubst sc')
       ]
     reportSDoc "tc.cover.target" 30 $ sep
@@ -387,7 +455,7 @@
       ]
     return $ if n == 0 then (empty, sc { scTarget = newTarget }) else (tel, sc')
 
--- | @computeNeighbourhood delta1 delta2 d pars ixs hix hps con@
+-- | @computeNeighbourhood delta1 delta2 d pars ixs hix tel ps mpsub con@
 --
 --   @
 --      delta1   Telescope before split point
@@ -397,7 +465,9 @@
 --      pars     Data type parameters
 --      ixs      Data type indices
 --      hix      Index of split variable
+--      tel      Telescope for patterns ps
 --      ps       Patterns before doing the split
+--      mpsub    Current module parameter substitutions
 --      con      Constructor to fit into hole
 --   @
 --   @dtype == d pars ixs@
@@ -409,10 +479,12 @@
   -> Args                         -- ^ Data type parameters.
   -> Args                         -- ^ Data type indices.
   -> Nat                          -- ^ Index of split variable.
-  -> [NamedArg DeBruijnPattern] -- ^ Patterns before doing the split.
+  -> Telescope                    -- ^ Telescope for the patterns.
+  -> [NamedArg DeBruijnPattern]   -- ^ Patterns before doing the split.
+  -> ModuleParamDict              -- ^ Current module parameter substitution.
   -> QName                        -- ^ Constructor to fit into hole.
   -> CoverM (Maybe SplitClause)   -- ^ New split clause if successful.
-computeNeighbourhood delta1 n delta2 d pars ixs hix ps c = do
+computeNeighbourhood delta1 n delta2 d pars ixs hix tel ps mpsub c = do
 
   -- Get the type of the datatype
   dtype <- liftTCM $ (`piApply` pars) . defType <$> getConstInfo d
@@ -423,7 +495,7 @@
                                        -- Andreas, 2013-11-29 changes nothing!
 {-
   con <- conSrcCon . theDef <$> getConstInfo con
-  Con con [] <- liftTCM $ ignoreSharing <$> (constructorForm =<< normalise (Con con []))
+  Con con ci [] <- liftTCM $ ignoreSharing <$> (constructorForm =<< normalise (Con con ci []))
 -}
 
   -- Get the type of the constructor
@@ -444,21 +516,19 @@
       preserve p = p
       gammal = map (fmap preserve) . telToList $ gamma0
       gamma  = telFromList gammal
+      delta1Gamma = delta1 `abstract` gamma
 
-  debugInit con ctype d pars ixs cixs delta1 delta2 gamma ps hix
+  debugInit con ctype d pars ixs cixs delta1 delta2 gamma tel ps hix
 
   -- All variables are flexible
-  -- let flex = [0..size delta1 + size gamma - 1]
-  let gammaDelta1  = gammal ++ telToList delta1
-      makeFlex i d = flexibleVarFromHiding (getHiding d) i
-      flex = zipWith makeFlex [0..] gammaDelta1
+  let flex = allFlexVars delta1Gamma
 
   -- Unify constructor target and given type (in Δ₁Γ)
   let conIxs   = drop (size pars) cixs
       givenIxs = raise (size gamma) ixs
 
   r <- unifyIndices
-         (delta1 `abstract` gamma)
+         delta1Gamma
          flex
          (raise (size gamma) dtype)
          conIxs
@@ -470,7 +540,7 @@
     DontKnow{} -> do
       debugCantSplit
       throwException $ CantSplit (conName con) (delta1 `abstract` gamma) conIxs givenIxs
-    Unifies (delta1',rho0) -> do
+    Unifies (delta1',rho0,_) -> do
       debugSubst "rho0" rho0
 
       -- We have Δ₁' ⊢ ρ₀ : Δ₁Γ, so split it into the part for Δ₁ and the part for Γ
@@ -479,7 +549,9 @@
       -- Andreas, 2015-05-01  I guess it is fine to use @noConPatternInfo@
       -- as the result of splitting is never used further down the pipeline.
       -- After splitting, Agda reloads the file.
-      let conp    = ConP con noConPatternInfo $ applySubst rho2 $ teleNamedArgs gamma
+      let conp    = ConP con noConPatternInfo $ applySubst rho2 $
+                      map (setOrigin Inserted) $ tele2NamedArgs gamma0 gamma
+          -- Andreas, 2016-09-08, issue #2166: use gamma0 for correct argument names
 
       -- Compute final context and substitution
       let rho3    = consS conp rho1            -- Δ₁' ⊢ ρ₃ : Δ₁(x:D)
@@ -489,26 +561,29 @@
 
       debugTel "delta'" delta'
       debugSubst "rho" rho
+      addContext tel $ debugPs ps
 
       -- Apply the substitution
       let ps' = applySubst rho ps
-      debugPlugged ps ps'
+      addContext delta' $ debugPlugged ps'
 
-      return $ Just $ SClause delta' ps' rho Nothing -- target fixed later
+      let mpsub' = applySubst (fromPatternSubstitution rho) mpsub
 
+      return $ Just $ SClause delta' ps' rho mpsub' Nothing -- target fixed later
+
   where
-    debugInit con ctype d pars ixs cixs delta1 delta2 gamma hps hix =
+    debugInit con ctype d pars ixs cixs delta1 delta2 gamma tel ps hix =
       liftTCM $ reportSDoc "tc.cover.split.con" 20 $ vcat
         [ text "computeNeighbourhood"
         , nest 2 $ vcat
           [ text "context=" <+> (inTopContext . prettyTCM =<< getContextTelescope)
           , text "con    =" <+> prettyTCM con
           , text "ctype  =" <+> prettyTCM ctype
-          , text "hps    =" <+> text (show hps)
+          , text "ps     =" <+> do addContext tel $ prettyTCMPatternList ps
           , text "d      =" <+> prettyTCM d
           , text "pars   =" <+> prettyList (map prettyTCM pars)
-          , text "ixs    =" <+> addCtxTel delta1 (prettyList (map prettyTCM ixs))
-          , text "cixs   =" <+> do addCtxTel gamma $ prettyList (map prettyTCM cixs)
+          , text "ixs    =" <+> addContext delta1 (prettyList (map prettyTCM ixs))
+          , text "cixs   =" <+> do addContext gamma $ prettyList (map prettyTCM cixs)
           , text "delta1 =" <+> prettyTCM delta1
           , text "delta2 =" <+> prettyTCM delta2
           , text "gamma  =" <+> prettyTCM gamma
@@ -532,21 +607,14 @@
         [ text (s ++ " =") <+> prettyTCM tel
         ]
 
-    debugShow s x =
-      liftTCM $ reportSDoc "tc.cover.split.con" 20 $ nest 2 $ vcat
-        [ text (s ++ " =") <+> text (show x)
-        ]
-
-    debugPlugged ps ps' =
+    debugPs ps =
       liftTCM $ reportSDoc "tc.cover.split.con" 20 $ nest 2 $ vcat
-        [ text "ps     =" <+> text (show ps)
-        , text "ps'    =" <+> text (show ps')
+        [ text "ps     =" <+> prettyTCMPatternList ps
         ]
 
-    debugFinal tel ps =
+    debugPlugged ps' =
       liftTCM $ reportSDoc "tc.cover.split.con" 20 $ nest 2 $ vcat
-        [ text "rtel   =" <+> prettyTCM tel
-        , text "rps    =" <+> text (show ps)
+        [ text "ps'    =" <+> do prettyTCMPatternList ps'
         ]
 
 -- | Entry point from @Interaction.MakeCase@.
@@ -561,7 +629,7 @@
 
 splitLast :: Induction -> Telescope -> [NamedArg DeBruijnPattern] -> TCM (Either SplitError Covering)
 splitLast ind tel ps = split ind sc (BlockingVar 0 Nothing)
-  where sc = SClause tel ps __IMPOSSIBLE__ Nothing
+  where sc = SClause tel ps empty empty Nothing
 
 -- | @split ind splitClause x = return res@
 --   splits @splitClause@ at pattern var @x@ (de Bruijn index).
@@ -595,7 +663,8 @@
     if n < 0 then __IMPOSSIBLE__ else n
   where n = if k < 0
             then __IMPOSSIBLE__
-            else fromMaybe __IMPOSSIBLE__ $ permPicks (dbPatPerm pats) !!! k
+            else fromMaybe __IMPOSSIBLE__ $ permPicks perm !!! k
+        perm = fromMaybe __IMPOSSIBLE__ $ dbPatPerm pats
         k = size tel - x - 1
         arg = telVars (size tel) tel !! k
 
@@ -622,9 +691,9 @@
        -> SplitClause
        -> BlockingVar
        -> TCM (Either SplitError (Either SplitClause Covering))
-split' ind fixtarget sc@(SClause tel ps _ target) (BlockingVar x mcons) = liftTCM $ runExceptionT $ do
+split' ind fixtarget sc@(SClause tel ps _ mpsub target) (BlockingVar x mcons) = liftTCM $ runExceptionT $ do
 
-  debugInit tel x ps
+  debugInit tel x ps mpsub
 
   -- Split the telescope at the variable
   -- t = type of the variable,  Δ₁ ⊢ t
@@ -641,19 +710,24 @@
   ns <- catMaybes <$> do
     forM cons $ \ con ->
       fmap (con,) <$> do
-        msc <- computeNeighbourhood delta1 n delta2 d pars ixs x ps con
+        msc <- computeNeighbourhood delta1 n delta2 d pars ixs x tel ps mpsub con
         if not fixtarget then return msc else do
         Trav.forM msc $ \ sc -> lift $ snd <$> fixTarget sc{ scTarget = target }
 
   case ns of
     []  -> do
-      let ps' = (fmap . fmap . fmap . fmap) (\(y,name) -> if (x==y) then (y,"()") else (y,name)) ps
+      let ps' = (fmap . fmap . fmap . fmap)
+                  (\(DBPatVar name y) -> if (x==y)
+                                         then DBPatVar absurdPatternName y
+                                         else DBPatVar name y)
+                  ps
       return $ Left $ SClause
                { scTel  = telFromList $ telToList delta1 ++
                                         [fmap ((,) "()") t] ++ -- add name "()"
                                         telToList delta2
                , scPats = ps
                , scSubst = idS -- not used anyway
+               , scModuleParameterSub = __IMPOSSIBLE__ -- not used
                , scTarget = Nothing -- not used
                }
 
@@ -681,19 +755,20 @@
 
   where
     inContextOfT :: MonadTCM tcm => tcm a -> tcm a
-    inContextOfT = addCtxTel tel . escapeContext (x + 1)
+    inContextOfT = addContext tel . escapeContext (x + 1)
 
     inContextOfDelta2 :: MonadTCM tcm => tcm a -> tcm a
-    inContextOfDelta2 = addCtxTel tel . escapeContext x
+    inContextOfDelta2 = addContext tel . escapeContext x
 
     -- Debug printing
-    debugInit tel x ps =
-      liftTCM $ reportSDoc "tc.cover.top" 10 $ vcat
+    debugInit tel x ps mpsub = liftTCM $ do
+      reportSDoc "tc.cover.top" 10 $ vcat
         [ text "TypeChecking.Coverage.split': split"
         , nest 2 $ vcat
           [ text "tel     =" <+> prettyTCM tel
           , text "x       =" <+> text (show x)
-          , text "ps      =" <+> text (show ps)
+          , text "ps      =" <+> do addContext tel $ prettyTCMPatternList ps
+          , text "mpsub   =" <+> prettyTCM mpsub
           ]
         ]
 
@@ -713,7 +788,7 @@
 --   otherwise @res == Nothing@.
 --   Note that the empty set of split clauses is returned if the record has no fields.
 splitResult :: QName -> SplitClause -> TCM (Maybe Covering)
-splitResult f sc@(SClause tel ps _ target) = do
+splitResult f sc@(SClause tel ps _ _ target) = do
   reportSDoc "tc.cover.split" 10 $ vcat
     [ text "splitting result:"
     , nest 2 $ text "f      =" <+> text (show f)
@@ -722,33 +797,36 @@
   -- if we want to split projections, but have no target type, we give up
   let done = return Nothing
   caseMaybe target done $ \ t -> do
-    isR <- addCtxTel tel $ isRecordType $ unArg t
+    isR <- addContext tel $ isRecordType $ unArg t
     case isR of
       Just (_r, vs, Record{ recFields = fs }) -> do
         reportSDoc "tc.cover" 20 $ sep
           [ text $ "we are of record type _r = " ++ show _r
-          , text   "applied to parameters vs = " <+> (addCtxTel tel $ prettyTCM vs)
+          , text   "applied to parameters vs = " <+> (addContext tel $ prettyTCM vs)
           , text $ "and have fields       fs = " ++ show fs
           ]
-        fvs <- freeVarsToApply f
         let es = patternsToElims ps
-        let self  = defaultArg $ Def f (map Apply fvs) `applyE` es
+        -- Note: module parameters are part of ps
+        let self  = defaultArg $ Def f [] `applyE` es
             pargs = vs ++ [self]
         reportSDoc "tc.cover" 20 $ sep
-          [ text   "we are              self = " <+> (addCtxTel tel $ prettyTCM $ unArg self)
+          [ text   "we are              self = " <+> (addContext tel $ prettyTCM $ unArg self)
           ]
-        let n = defaultArg $ permRange (dbPatPerm ps)
+        let n = defaultArg $ permRange $ fromMaybe __IMPOSSIBLE__ $ dbPatPerm ps
             -- Andreas & James, 2013-11-19 includes the dot patterns!
             -- See test/succeed/CopatternsAndDotPatterns.agda for a case with dot patterns
             -- and copatterns which fails for @n = size tel@ with a broken case tree.
 
+        -- Andreas, 2016-07-22 read the style of projections from the user's lips
+        projOrigin <- ifM (optPostfixProjections <$> pragmaOptions) (return ProjPostfix) (return ProjPrefix)
         Just . Covering n <$> do
           forM fs $ \ proj -> do
             -- compute the new target
             dType <- defType <$> do getConstInfo $ unArg proj -- WRONG: typeOfConst $ unArg proj
             let -- type of projection instantiated at self
-                target' = Just $ proj $> dType `piApply` pargs
-                sc' = sc { scPats   = scPats sc ++ [fmap (Named Nothing . ProjP) proj]
+                target' = Just $ proj $> dType `piApply` pargs      -- Always visible (#2287)
+                projArg = fmap (Named Nothing . ProjP projOrigin) $ setHiding NotHidden proj
+                sc' = sc { scPats   = scPats sc ++ [projArg]
                          , scSubst  = idS
                          , scTarget = target'
                          }
@@ -759,13 +837,14 @@
 
 -- | For debugging only.
 instance PrettyTCM SplitClause where
-  prettyTCM (SClause tel pats sigma target) = sep
+  prettyTCM (SClause tel pats sigma mpsub target) = sep
     [ text "SplitClause"
     , nest 2 $ vcat
-      [ text "tel          = " <+> prettyTCM tel
-      , text "pats         = " <+> sep (map (prettyTCM . namedArg) pats)
-      , text "subst        = " <+> (text . show) sigma
-      , text "target       = " <+> do
+      [ text "tel          =" <+> prettyTCM tel
+      , text "pats         =" <+> sep (map (prettyTCM . namedArg) pats)
+      , text "subst        =" <+> (text . show) sigma
+      , text "mpsub        =" <+> prettyTCM mpsub
+      , text "target       =" <+> do
           caseMaybe target empty $ \ t -> do
             addContext tel $ prettyTCM t
       -- Triggers crash (see Issue 1374).
diff --git a/src/full/Agda/TypeChecking/Coverage/Match.hs b/src/full/Agda/TypeChecking/Coverage/Match.hs
--- a/src/full/Agda/TypeChecking/Coverage/Match.hs
+++ b/src/full/Agda/TypeChecking/Coverage/Match.hs
@@ -1,6 +1,4 @@
 {-# LANGUAGE CPP           #-}
-{-# LANGUAGE DeriveFunctor #-}
-{-# LANGUAGE PatternGuards #-}
 
 module Agda.TypeChecking.Coverage.Match where
 
@@ -8,8 +6,8 @@
 import Control.Monad.State
 
 import qualified Data.List as List
-import Data.Maybe (mapMaybe)
-import Data.Monoid
+import Data.Maybe (mapMaybe, isJust)
+import Data.Semigroup (Semigroup, Monoid, (<>), mempty, mappend, mconcat, Any(..))
 import Data.Traversable (traverse)
 
 import Agda.Syntax.Abstract (IsProjP(..))
@@ -18,6 +16,8 @@
 import Agda.Syntax.Internal.Pattern ()
 import Agda.Syntax.Literal
 
+import Agda.TypeChecking.Substitute
+
 import Agda.Utils.Permutation
 import Agda.Utils.Size
 import Agda.Utils.List
@@ -40,11 +40,9 @@
 -}
 
 -- | Match the given patterns against a list of clauses
-match :: [Clause] -> [Arg DeBruijnPattern] -> Match (Nat,[MPat])
+match :: [Clause] -> [NamedArg DeBruijnPattern] -> Match (Nat,([DeBruijnPattern],[Literal]))
 match cs ps = foldr choice No $ zipWith matchIt [0..] cs
   where
-    mps = buildMPatterns ps
-
     -- If liberal matching on literals fails or blocks we go with that.
     -- If it succeeds we use the result from conservative literal matching.
     -- This is to make sure that we split enough when literals are involved.
@@ -53,57 +51,46 @@
     --    f (c :: s) = ...
     -- would never split the tail of the list if we only used conservative
     -- literal matching.
-    matchIt i c = matchClause yesMatchLit mps i c +++
-                  matchClause noMatchLit  mps i c
-
-    Yes _   +++ m = m
-    No      +++ _ = No
-    Block x +++ _ = Block x
-    BlockP  +++ _ = BlockP
+    matchIt i c = (i,) <$>
+      matchClause yesMatchLit ps i c +++
+      matchClause noMatchLit  ps i c
 
--- | We use a special representation of the patterns we're trying to match
---   against a clause. In particular we want to keep track of which variables
---   are blocking a match.
-data MPat
-  = VarMP Nat    -- ^ De Bruijn index (usually, rightmost variable in patterns is 0).
-  | ConMP ConHead (Maybe ConPOrigin) [Arg MPat]
-  | LitMP Literal
-  | DotMP MPat   -- ^ For keeping track of the original dot positions.
-  | WildMP       -- ^ For dot patterns that cannot be turned into patterns.
-  | ProjMP QName -- ^ Projection copattern.
-  deriving (Show)
+    Yes _     +++ m = m
+    No        +++ _ = No
+    m@Block{} +++ _ = m
 
-buildMPatterns :: [Arg DeBruijnPattern] -> [Arg MPat]
-buildMPatterns ps = map (fmap build) ps
-  where
-    build (VarP (i,_))    = VarMP i
-    build (ConP con i ps) = ConMP con (conPRecord i) $ buildMPatterns $ map (fmap namedThing) $ ps
-    build (DotP t)        = DotMP $ buildT t
-    build (LitP l)        = LitMP l
-    build (ProjP dest)    = ProjMP dest
+-- | Convert the root of a term into a pattern constructor, if possible.
+buildPattern :: Term -> Maybe DeBruijnPattern
+buildPattern (Con c ci args) = Just $
+  ConP c (toConPatternInfo ci) $ map (fmap $ unnamed . DotP) args
+buildPattern (Var i [])     = Just $ deBruijnVar i
+buildPattern (Shared p)     = buildPattern (derefPtr p)
+buildPattern _              = Nothing
 
-    buildT (Con c args)   = ConMP c Nothing $ map (fmap buildT) args
-    buildT (Var i [])     = VarMP i
-    buildT (Shared p)     = buildT (derefPtr p)
-    buildT _              = WildMP
+-- | A pattern that matches anything (modulo eta).
+isTrivialPattern :: Pattern' a -> Bool
+isTrivialPattern p = case p of
+  VarP{}      -> True
+  DotP{}      -> True
+  ConP c i ps -> isJust (conPRecord i) && all (isTrivialPattern . namedArg) ps
+  LitP{}      -> False
+  ProjP{}     -> False
 
-isTrivialMPattern :: MPat -> Bool
-isTrivialMPattern VarMP{} = True
-isTrivialMPattern (ConMP c (Just _) ps) = all isTrivialMPattern $ map unArg ps
-isTrivialMPattern (ConMP c Nothing ps) = False
-isTrivialMPattern LitMP{} = False
-isTrivialMPattern DotMP{} = True
-isTrivialMPattern WildMP{} = True
-isTrivialMPattern ProjMP{} = False -- or True?
+-- | If matching succeeds, we return the instantiation of the clause pattern vector
+--   to obtain the split clause pattern vector, plus the literals of the clause patterns
+--   matched against split clause variables.
+type MatchResult = Match ([DeBruijnPattern],[Literal])
 
 -- | If matching is inconclusive (@Block@) we want to know which
 --   variables are blocking the match.
 data Match a
-  = Yes a                -- ^ Matches unconditionally.
-  | No                   -- ^ Definitely does not match.
-  | Block BlockingVars   -- ^ Could match if non-empty list of blocking variables
-                         --   is instantiated properly.
-  | BlockP               -- ^ Could match if split on possible projections is performed.
+  = Yes a   -- ^ Matches unconditionally.
+  | No      -- ^ Definitely does not match.
+  | Block Any BlockingVars
+            -- ^ Could match if non-empty list of blocking variables
+            --   is instantiated properly.
+            --   Also 'Any' is 'True' if all clauses have a result split.
+            --   (Only then can we do result splitting.)
   deriving (Functor)
 
 -- | Variable blocking a match.
@@ -120,6 +107,7 @@
   } deriving (Show)
 type BlockingVars = [BlockingVar]
 
+-- | Lens for 'blockingVarCons'.
 mapBlockingVarCons :: (Maybe [ConHead] -> Maybe [ConHead]) -> BlockingVar -> BlockingVar
 mapBlockingVarCons f b = b { blockingVarCons = f (blockingVarCons b) }
 
@@ -144,65 +132,107 @@
 --   It is left-strict, to be used with @foldr@.
 --   If one clause unconditionally matches ('Yes') we do not look further.
 choice :: Match a -> Match a -> Match a
-choice (Yes a)   _         = Yes a
-choice (Block x) (Block y) = Block (zipBlockingVars x y)
-choice (Block x) (Yes _)   = Block $ overlapping x
-choice (Block x) _         = Block x
-choice BlockP    m         = BlockP
-choice No        m         = m
+choice (Yes a)      _            = Yes a
+choice (Block r xs) (Block s ys) = Block (Any $ getAny r && getAny s) $
+  zipBlockingVars xs ys
+choice (Block r xs) (Yes _)      = Block r $ overlapping xs
+choice m@Block{}    No           = m
+choice No           m            = m
 
-type MatchLit = Literal -> MPat -> Match [MPat]
+-- | Could the literal cover (an instantiation of) the split clause pattern?
+--   Basically, the split clause pattern needs to be a variable.
+--
+--   Note: literal patterns do not occur in the split clause
+--   since we cannot split into all possible literals (that would be infeasible).
+type MatchLit = Literal -> DeBruijnPattern -> MatchResult
 
+-- | Use this function if literal patterns should not cover a split clause pattern.
 noMatchLit :: MatchLit
 noMatchLit _ _ = No
 
+-- | Use this function if a literal pattern should cover a split clause variable pattern.
 yesMatchLit :: MatchLit
-yesMatchLit _ q@VarMP{}  = Yes [q]
-yesMatchLit _ q@WildMP{} = Yes [q]
-yesMatchLit _ _        = No
+yesMatchLit l q@VarP{} = Yes ([q], [l])
+yesMatchLit l (DotP t) = maybe No (yesMatchLit l) $ buildPattern t
+yesMatchLit _ ConP{}   = No
+yesMatchLit _ ProjP{}  = No
+yesMatchLit _ LitP{}   = __IMPOSSIBLE__
 
 -- | Check if a clause could match given generously chosen literals
-matchLits :: Clause -> [Arg DeBruijnPattern] -> Bool
+matchLits :: Clause -> [NamedArg DeBruijnPattern] -> Maybe [Literal]
 matchLits c ps =
-  case matchClause yesMatchLit (buildMPatterns ps) 0 c of
-    Yes _ -> True
-    _     -> False
+  case matchClause yesMatchLit ps 0 c of
+    Yes (qs,ls) -> Just ls
+    _ -> Nothing
 
 -- | @matchClause mlit qs i c@ checks whether clause @c@ number @i@
 --   covers a split clause with patterns @qs@.
-matchClause :: MatchLit -> [Arg MPat] -> Nat -> Clause -> Match (Nat,[MPat])
-matchClause mlit qs i c = (\q -> (i,q)) <$> matchPats mlit (clausePats c) qs
+matchClause
+  :: MatchLit
+     -- ^ Consider literals?
+  -> [NamedArg DeBruijnPattern]
+     -- ^ Split clause patterns @qs@.
+  -> Nat
+     -- ^ Clause number @i@.
+  -> Clause
+     -- ^ Clause @c@ to cover split clause.
+  -> MatchResult
+     -- ^ Result.
+     --   If 'Yes' the instantiation @rs@ such that @(namedClausePats c)[rs] == qs@.
+matchClause mlit qs i c = matchPats mlit (namedClausePats c) qs
 
+
 -- | @matchPats mlit ps qs@ checks whether a function clause with patterns
 --   @ps@ covers a split clause with patterns @qs@.
 --
---   Issue 842: if in case of functions with varying arity,
---   the split clause has proper patterns left, we refuse to match,
---   because it would be troublesome to construct the split tree later.
---   We would have to move bindings from the rhs to the lhs.
---   For example, this is rejected:
+--   Issue #842 / #1986: This is accepted:
 --   @
 --     F : Bool -> Set1
 --     F true = Set
 --     F      = \ x -> Set
 --   @
-matchPats :: MatchLit -> [Arg (Pattern' a)] -> [Arg MPat] -> Match [MPat]
-matchPats mlit ps qs = mconcat $ properMatchesLeft :
-    zipWith (matchPat mlit) (map unArg ps) (map unArg qs) ++
-    [ projPatternsLeft ]
+--   For the second clause, the split clause is @F false@,
+--   so there are more patterns in the split clause than
+--   in the considered clause.  These additional patterns
+--   are simply dropped by @zipWith@.  This will result
+--   in @mconcat []@ which is @Yes []@.
+
+matchPats
+  :: MatchLit
+     -- ^ Matcher for literals.
+  -> [NamedArg (Pattern' a)]
+     -- ^ Clause pattern vector @ps@ (to cover split clause pattern vector).
+  -> [NamedArg DeBruijnPattern]
+     -- ^ Split clause pattern vector @qs@ (to be covered by clause pattern vector).
+  -> MatchResult
+     -- ^ Result.
+     --   If 'Yes' the instantiation @rs@ such that @ps[rs] == qs@.
+
+matchPats mlit ps qs = mconcat $ [ projPatternsLeftInSplitClause ] ++
+    zipWith (matchPat mlit) (map namedArg ps) (map namedArg qs) ++
+    [ projPatternsLeftInMatchedClause ]
   where
-    projPatternsLeft =
-      let psrest = map unArg $ drop (length qs) ps
-      in  if null $ mapMaybe isProjP psrest -- not $ any properlyMatching psrest
-            then Yes []  -- no proj. patterns left
-            else BlockP  -- proj. patterns left
-    properMatchesLeft =
-      if any (properMatch . unArg) $ drop (length ps) qs
-      then No else Yes []
-    properMatch ConMP{} = True
-    properMatch LitMP{} = True
-    properMatch _       = False
+    -- Patterns left in split clause:
+    qsrest = drop (length ps) qs
+    -- Andreas, 2016-06-03, issue #1986:
+    -- catch-all for copatterns is inconsistent as found by Ulf.
+    -- Thus, if the split clause has copatterns left,
+    -- the current (shorter) clause is not considered covering.
+    projPatternsLeftInSplitClause =
+        case mapMaybe isProjP qsrest of
+            [] -> mempty -- no proj. patterns left
+            _  -> No     -- proj. patterns left
 
+    -- Patterns left in candidate clause:
+    psrest = drop (length qs) ps
+    -- If the current clause has additional copatterns in
+    -- comparison to the split clause, we should split on them.
+    projPatternsLeftInMatchedClause =
+        case mapMaybe isProjP psrest of
+            [] -> mempty               -- no proj. patterns left
+            ds -> Block (Any True) []  -- proj. patterns left
+
+
 -- | Combine results of checking whether function clause patterns
 --   covers split clause patterns.
 --
@@ -213,66 +243,56 @@
 --   'Yes' is neutral: for a match, all patterns have to match.
 --
 --   'Block' accumulates variables of the split clause
---   that have to be instantiated
+--   that have to be instantiated (an projection names of copattern matches)
 --   to make the split clause an instance of the function clause.
---
---   'BlockP' yields to 'Block', since blocking vars can also
---   block the result type.
+
+instance Monoid a => Semigroup (Match a) where
+  Yes a      <> Yes b      = Yes $ mappend a b
+  Yes _      <> m          = m
+  No         <> _          = No
+  Block{}    <> No         = No
+  Block r xs <> Block s ys = Block (mappend r s) $ mappend xs ys
+  m@Block{}  <> Yes{}      = m
+
 instance Monoid a => Monoid (Match a) where
-  mempty                    = Yes mempty
-  Yes a   `mappend` Yes b   = Yes $ mappend a b
-  Yes _   `mappend` m       = m
-  No      `mappend` _       = No
-  Block x `mappend` No      = No
-  Block x `mappend` Block y = Block $ mappend x y
-  Block x `mappend` _       = Block x
-  BlockP  `mappend` No      = No
-  BlockP  `mappend` Block y = Block y
-  BlockP  `mappend` _       = BlockP
+  mempty  = Yes mempty
+  mappend = (<>)
 
+
 -- | @matchPat mlit p q@ checks whether a function clause pattern @p@
 --   covers a split clause pattern @q@.  There are three results:
---   @Yes ()@ means it covers, because @p@ is a variable
---   pattern or @q@ is a wildcard.
+--   @Yes rs@ means it covers, because @p@ is a variable pattern. @rs@ collects
+--   the instantiations of the variables in @p@ s.t. @p[rs] = q@.
 --   @No@ means it does not cover.
 --   @Block [x]@ means @p@ is a proper instance of @q@ and could become
 --   a cover if @q@ was split on variable @x@.
-matchPat :: MatchLit -> Pattern' a -> MPat -> Match [MPat]
-matchPat _    (VarP _) q = Yes [q]
-matchPat _    (DotP _) q = Yes []
+
+matchPat
+  :: MatchLit
+     -- ^ Matcher for literals.
+  -> Pattern' a
+     -- ^ Clause pattern @p@ (to cover split clause pattern).
+  -> DeBruijnPattern
+     -- ^ Split clause pattern @q@ (to be covered by clause pattern).
+  -> MatchResult
+     -- ^ Result.
+     --   If 'Yes', also the instantiation @rs@ of the clause pattern variables
+     --   to produce the split clause pattern, @p[rs] = q@.
+
+matchPat _    VarP{}   q = Yes ([q],[])
+matchPat _    DotP{}   q = mempty
 -- Jesper, 2014-11-04: putting 'Yes [q]' here triggers issue 1333.
--- Not checking for trivial MPats should be safe here, as dot patterns are
+-- Not checking for trivial patterns should be safe here, as dot patterns are
 -- guaranteed to match if the rest of the pattern does, so some extra splitting
 -- on them doesn't change the reduction behaviour.
-matchPat mlit p (DotMP q) = matchPat mlit p q
 matchPat mlit (LitP l) q = mlit l q
-matchPat _    (ProjP d) (ProjMP d') = if d == d' then Yes [] else No
-matchPat _    (ProjP d) _ = __IMPOSSIBLE__
--- matchPat mlit (ConP c (Just _) ps) q | recordPattern ps = Yes ()  -- Andreas, 2012-07-25 record patterns always match!
-matchPat mlit (ConP c _ ps) q = case q of
-  VarMP x -> Block [BlockingVar x (Just [c])]
-  WildMP{} -> No -- Andreas, 2013-05-15 this was "Yes()" triggering issue 849
-  ConMP c' i qs
-    | c == c'   -> matchPats mlit (map (fmap namedThing) ps) qs
+matchPat _    (ProjP _ d) (ProjP _ d') = if d == d' then mempty else No
+matchPat _    ProjP{} _ = __IMPOSSIBLE__
+matchPat mlit p@(ConP c _ ps) q = case q of
+  VarP x -> Block (Any False) [BlockingVar (dbPatVarIndex x) (Just [c])]
+  ConP c' i qs
+    | c == c'   -> matchPats mlit ps qs
     | otherwise -> No
-  LitMP _  -> __IMPOSSIBLE__
-  ProjMP _ -> __IMPOSSIBLE__
-  DotMP _  -> __IMPOSSIBLE__
-
-{- UNUSED
-class RecordPattern a where
-  recordPattern :: a -> Bool
-
-instance RecordPattern Pattern where
-  recordPattern VarP{} = True
-  recordPattern DotP{} = False
-  recordPattern LitP{} = False
-  recordPattern (ConP _ Nothing _) = False
-  recordPattern (ConP _ (Just _) ps) = recordPattern ps
-
-instance RecordPattern a => RecordPattern [a] where
-  recordPattern = all recordPattern
-
-instance RecordPattern a => RecordPattern (Arg a) where
-  recordPattern = recordPattern . unArg
--}
+  DotP t  -> maybe No (matchPat mlit p) $ buildPattern t
+  LitP _  -> __IMPOSSIBLE__  -- split clause has no literal patterns
+  ProjP{} -> __IMPOSSIBLE__  -- excluded by typing
diff --git a/src/full/Agda/TypeChecking/Coverage/SplitTree.hs b/src/full/Agda/TypeChecking/Coverage/SplitTree.hs
--- a/src/full/Agda/TypeChecking/Coverage/SplitTree.hs
+++ b/src/full/Agda/TypeChecking/Coverage/SplitTree.hs
@@ -14,7 +14,6 @@
 module Agda.TypeChecking.Coverage.SplitTree where
 
 import Data.Tree
-import Test.QuickCheck
 
 import Agda.Syntax.Abstract.Name
 import Agda.Syntax.Common
@@ -75,24 +74,3 @@
 
 instance Show a => Show (SplitTree' a) where
   show = drawTree . fmap show . toTree
-
--- * Generating random split trees for testing
-
-instance Arbitrary a => Arbitrary (SplitTree' a) where
-  arbitrary = frequency
-    [ (5, return $ SplittingDone 0)
-    , (3, (SplitAt . defaultArg) <$> choose (1,5) <*> (take 3 <$> listOf1 arbitrary))
-    ]
-
--- * Testing the printer
-
-newtype CName = CName String
-instance Show CName where
-  show (CName s) = s
-
-instance Arbitrary CName where
-  arbitrary = CName <$> elements
-    [ "zero", "suc", "nil", "cons", "left", "right", "just", "nothing" ]
-
-testSplitTreePrinting :: IO ()
-testSplitTreePrinting = sample (arbitrary :: Gen (SplitTree' CName))
diff --git a/src/full/Agda/TypeChecking/Datatypes.hs b/src/full/Agda/TypeChecking/Datatypes.hs
--- a/src/full/Agda/TypeChecking/Datatypes.hs
+++ b/src/full/Agda/TypeChecking/Datatypes.hs
@@ -26,15 +26,12 @@
 getConHead :: QName -> TCM ConHead
 getConHead c = conSrcCon . theDef <$> getConstInfo c
 
--- | Get true constructor as term.
-getConTerm :: QName -> TCM Term
-getConTerm c = flip Con [] <$> getConHead c
-
 -- | Get true constructor with fields, expanding literals to constructors
 --   if possible.
 getConForm :: QName -> TCM ConHead
 getConForm c = do
-  Con con [] <- ignoreSharing <$> do constructorForm =<< getConTerm c
+  ch <- getConHead c
+  Con con _ [] <- ignoreSharing <$> constructorForm (Con ch ConOCon [])
   return con
 
 -- | Augment constructor with record fields (preserve constructor name).
@@ -42,10 +39,6 @@
 getOrigConHead :: QName -> TCM ConHead
 getOrigConHead c = setConName c <$> getConHead c
 
--- | Analogous to 'getConTerm'.
-getOrigConTerm :: QName -> TCM Term
-getOrigConTerm c = flip Con [] <$> getOrigConHead c
-
 -- | Get the name of the datatype constructed by a given constructor.
 --   Precondition: The argument must refer to a constructor
 {-# SPECIALIZE getConstructorData :: QName -> TCM QName #-}
@@ -152,6 +145,15 @@
     Record{ recPars = n }      -> return $ Just n
     Constructor{ conPars = n } -> return $ Just n
     _                          -> return Nothing
+
+-- | Precondition: Name is a data or record type.
+getConstructors :: QName -> TCM [QName]
+getConstructors d = do
+  def <- theDef <$> getConstInfo d
+  case def of
+    Datatype{dataCons = cs} -> return cs
+    Record{recConHead = h}  -> return [conName h]
+    _                       -> __IMPOSSIBLE__
 
 {- UNUSED
 data DatatypeInfo = DataInfo
diff --git a/src/full/Agda/TypeChecking/DisplayForm.hs b/src/full/Agda/TypeChecking/DisplayForm.hs
--- a/src/full/Agda/TypeChecking/DisplayForm.hs
+++ b/src/full/Agda/TypeChecking/DisplayForm.hs
@@ -1,5 +1,4 @@
 {-# LANGUAGE CPP #-}
-{-# LANGUAGE FlexibleInstances #-}
 
 -- | Tools for 'DisplayTerm' and 'DisplayForm'.
 
@@ -8,6 +7,7 @@
 import Prelude hiding (all)
 import Control.Applicative
 import Control.Monad
+import Control.Monad.Trans (lift)
 import Control.Monad.Trans.Maybe
 import Data.Foldable (all)
 import qualified Data.Set as Set
@@ -20,10 +20,12 @@
 import Agda.TypeChecking.Monad
 import Agda.TypeChecking.Substitute
 import Agda.TypeChecking.Level
+import Agda.TypeChecking.Reduce (instantiate)
 
 import Agda.Utils.List
 import Agda.Utils.Maybe
 import Agda.Utils.Except
+import Agda.Utils.Functor
 
 #include "undefined.h"
 import Agda.Utils.Impossible
@@ -31,43 +33,44 @@
 -- | Convert a 'DisplayTerm' into a 'Term'.
 dtermToTerm :: DisplayTerm -> Term
 dtermToTerm dt = case dt of
-  DWithApp d ds vs -> dtermToTerm d `apply` (map (defaultArg . dtermToTerm) ds ++ vs)
-  DCon c args      -> Con c $ map (fmap dtermToTerm) args
+  DWithApp d ds es ->
+    dtermToTerm d `apply` map (defaultArg . dtermToTerm) ds `applyE` es
+  DCon c ci args   -> Con c ci $ map (fmap dtermToTerm) args
   DDef f es        -> Def f $ map (fmap dtermToTerm) es
   DDot v           -> v
   DTerm v          -> v
 
 -- | Get the arities of all display forms for a name.
 displayFormArities :: QName -> TCM [Int]
-displayFormArities q = map (length . dfPats . openThing) <$> getDisplayForms q
+displayFormArities q = map (length . dfPats . dget) <$> getDisplayForms q
 
--- | Find a matching display form for @q vs@.
---   In essence this tries to reqwrite @q vs@ with any
+-- | Find a matching display form for @q es@.
+--   In essence this tries to rewrite @q es@ with any
 --   display form @q ps --> dt@ and returns the instantiated
 --   @dt@ if successful.  First match wins.
-displayForm :: QName -> Args -> TCM (Maybe DisplayTerm)
-displayForm q vs = do
+displayForm :: QName -> Elims -> TCM (Maybe DisplayTerm)
+displayForm q es = do
     -- Get display forms for name q.
     odfs  <- getDisplayForms q `catchError` \_ -> return []
     -- Display debug info about the @Open@s.
     unless (null odfs) $ verboseS "tc.display.top" 100 $ do
       n <- getContextId
       reportSLn "tc.display.top" 100 $
-        "displayForm: context = " ++ show n ++
-        ", dfs = " ++ show (map openThingCtxIds odfs)
+        "displayForm for " ++ show q ++ ": context = " ++ show n ++
+        ", dfs = " ++ show odfs
     -- Use only the display forms that can be opened in the current context.
-    dfs   <- catMaybes <$> mapM tryOpen odfs
+    dfs   <- catMaybes <$> mapM getLocal odfs
     scope <- getScope
-    -- Keep the display forms that match the application @c vs@.
+    -- Keep the display forms that match the application @q es@.
     ms <- do
-      ms <- mapM (runMaybeT . (`matchDisplayForm` vs)) dfs
+      ms <- mapM (runMaybeT . (`matchDisplayForm` es)) dfs
       return [ m | Just (d, m) <- ms, wellScoped scope d ]
     -- Not safe when printing non-terminating terms.
-    -- (nfdfs, us) <- normalise (dfs, vs)
+    -- (nfdfs, us) <- normalise (dfs, es)
     unless (null odfs) $ reportSLn "tc.display.top" 100 $ unlines
       [ "name        : " ++ show q
       , "displayForms: " ++ show dfs
-      , "arguments   : " ++ show vs
+      , "arguments   : " ++ show es
       , "matches     : " ++ show ms
       , "result      : " ++ show (headMaybe ms)
       ]
@@ -92,16 +95,16 @@
     isWithDisplay DWithApp{} = True
     isWithDisplay _          = False
 
--- | Match a 'DisplayForm' @q ps = v@ against @q vs@.
+-- | Match a 'DisplayForm' @q ps = v@ against @q es@.
 --   Return the 'DisplayTerm' @v[us]@ if the match was successful,
---   i.e., @vs / ps = Just us@.
-matchDisplayForm :: DisplayForm -> Args -> MaybeT TCM (DisplayForm, DisplayTerm)
-matchDisplayForm d@(Display _ ps v) vs
-  | length ps > length vs = mzero
+--   i.e., @es / ps = Just us@.
+matchDisplayForm :: DisplayForm -> Elims -> MaybeT TCM (DisplayForm, DisplayTerm)
+matchDisplayForm d@(Display _ ps v) es
+  | length ps > length es = mzero
   | otherwise             = do
-      let (vs0, vs1) = splitAt (length ps) vs
-      us <- match ps $ raise 1 $ map unArg vs0
-      return (d, applySubst (parallelS $ reverse us) v `apply` vs1)
+      let (es0, es1) = splitAt (length ps) es
+      us <- match ps $ raise 1 es0
+      return (d, applySubst (parallelS $ reverse us) v `applyE` es1)
 
 -- | Class @Match@ for matching a term @p@ in the role of a pattern
 --   against a term @v@.
@@ -130,16 +133,16 @@
 instance Match a => Match (Elim' a) where
   match p v =
     case (p, v) of
-      (Proj f, Proj f') | f == f' -> return []
+      (Proj _ f, Proj _ f') | f == f' -> return []
       (Apply a, Apply a')         -> match a a'
       _                           -> mzero
 
 instance Match Term where
-  match p v = case (ignoreSharing p, ignoreSharing v) of
+  match p v = lift (instantiate v) >>= \ v -> case (ignoreSharing p, ignoreSharing v) of
     (Var 0 [], v)                  -> return [strengthen __IMPOSSIBLE__ v]
     (Var i ps, Var j vs) | i == j  -> match ps vs
     (Def c ps, Def d vs) | c == d  -> match ps vs
-    (Con c ps, Con d vs) | c == d  -> match ps vs
+    (Con c _ ps, Con d _ vs) | c == d -> match ps vs
     (Lit l, Lit l')      | l == l' -> return []
     (p, v)               | p == v  -> return []
     (p, Level l)                   -> match p =<< reallyUnLevelView l
diff --git a/src/full/Agda/TypeChecking/DropArgs.hs b/src/full/Agda/TypeChecking/DropArgs.hs
--- a/src/full/Agda/TypeChecking/DropArgs.hs
+++ b/src/full/Agda/TypeChecking/DropArgs.hs
@@ -1,5 +1,4 @@
 {-# LANGUAGE CPP #-}
-{-# LANGUAGE FlexibleInstances #-}
 
 module Agda.TypeChecking.DropArgs where
 
@@ -8,7 +7,6 @@
 
 import Agda.TypeChecking.Monad
 import Agda.TypeChecking.Substitute
-import Agda.TypeChecking.Substitute.Pattern
 
 import Agda.TypeChecking.CompiledClause
 
@@ -37,22 +35,17 @@
 instance DropArgs Permutation where
   dropArgs n (Perm m p) = Perm (m - n) $ map (subtract n) $ drop n p
 
--- | NOTE: does not go into the body, so does not work for recursive functions.
-instance DropArgs ClauseBody where
-  dropArgs 0 b        = b
-  dropArgs _ NoBody   = NoBody
-  dropArgs n (Bind b) = dropArgs (n - 1) (absBody b)
-  dropArgs n Body{}   = __IMPOSSIBLE__
-
 -- | NOTE: does not work for recursive functions.
 instance DropArgs Clause where
   dropArgs n cl =
-      cl{ clauseTel  = dropArgs n $ clauseTel cl
-          -- Andreas, 2012-09-25: just dropping the front of telescope
+      cl{ -- Andreas, 2012-09-25: just dropping the front of telescope
           -- makes it ill-formed (unbound indices)
           -- we should let the telescope intact!?
-        , namedClausePats = drop n $ namedClausePats cl
-        , clauseBody = dropArgs n $ clauseBody cl -- BUG: need to drop also from recursive calls!!
+          -- Ulf, 2016-06-23: Indeed. After parameter refinement it's even
+          -- worse: the module parameters we want to drop aren't necessarily
+          -- the first things in the telescope.
+          namedClausePats = drop n $ namedClausePats cl
+          -- BUG: need to drop also from recursive calls!!
         }
 
 instance DropArgs FunctionInverse where
diff --git a/src/full/Agda/TypeChecking/Empty.hs b/src/full/Agda/TypeChecking/Empty.hs
--- a/src/full/Agda/TypeChecking/Empty.hs
+++ b/src/full/Agda/TypeChecking/Empty.hs
@@ -39,4 +39,4 @@
         Right cov -> do
           let cs = splitClauses cov
           unless (null cs) $
-            typeError $ ShouldBeEmpty t $ map (namedArg . last . unnumberPatVars . scPats) $ cs
+            typeError $ ShouldBeEmpty t $ map (namedArg . last . scPats) cs
diff --git a/src/full/Agda/TypeChecking/Errors.hs b/src/full/Agda/TypeChecking/Errors.hs
--- a/src/full/Agda/TypeChecking/Errors.hs
+++ b/src/full/Agda/TypeChecking/Errors.hs
@@ -1,18 +1,19 @@
-{-# LANGUAGE CPP               #-}
-{-# LANGUAGE FlexibleInstances #-}
-{-# LANGUAGE TupleSections     #-}
+{-# LANGUAGE CPP #-}
+{-# LANGUAGE NondecreasingIndentation #-}
 
 {-# OPTIONS_GHC -fno-warn-orphans #-}
 
 module Agda.TypeChecking.Errors
   ( prettyError
   , tcErrString
-  , Warnings(..)
-  , warningsToError
+  , prettyTCWarnings
+  , tcWarningsToError
+  , applyFlagsToTCWarnings
   ) where
 
 import Prelude hiding (null)
 
+import Control.Monad.Reader
 import Control.Monad.State
 
 import Data.Function
@@ -23,6 +24,7 @@
 import qualified Data.Map as Map
 import qualified Text.PrettyPrint.Boxes as Boxes
 
+import Agda.Interaction.Options
 import Agda.Syntax.Common
 import Agda.Syntax.Fixity
 import Agda.Syntax.Notation
@@ -43,13 +45,16 @@
 import Agda.TypeChecking.Monad.Options
 import Agda.TypeChecking.Monad.Builtin
 import Agda.TypeChecking.Monad.State
+import Agda.TypeChecking.Positivity
 import Agda.TypeChecking.Pretty
+import Agda.TypeChecking.Substitute
 import Agda.TypeChecking.Reduce (instantiate)
 
-import Agda.Utils.Except ( MonadError(catchError) )
+import Agda.Utils.Except ( MonadError(catchError, throwError) )
 import Agda.Utils.FileName
 import Agda.Utils.Function
 import Agda.Utils.List
+import Agda.Utils.Maybe
 import Agda.Utils.Monad
 import Agda.Utils.Null
 import Agda.Utils.Size
@@ -80,25 +85,97 @@
 -- * Warnings
 ---------------------------------------------------------------------------
 
--- | Warnings.
---
--- Invariant: The fields are never empty at the same time.
+instance PrettyTCM TCWarning where
+  prettyTCM (TCWarning tcst clw) = localState $ do
+    put tcst
+    sayWhen (envRange  $ clEnv clw)
+            (envCall   $ clEnv clw)
+            (prettyTCM $ clValue clw)
 
-data Warnings = Warnings
-  { unsolvedMetaVariables :: [Range]
-    -- ^ Meta-variable problems are reported as type errors unless
-    -- 'optAllowUnsolved' is 'True'.
-  , unsolvedConstraints   :: Constraints
-    -- ^ Same as 'unsolvedMetaVariables'.
-  }
+instance PrettyTCM Warning where
+  prettyTCM wng = case wng of
 
--- | Turns warnings into an error. Even if several errors are possible
---   only one is raised.
-warningsToError :: Warnings -> TCM a
-warningsToError (Warnings [] [])     = typeError $ SolvedButOpenHoles
-warningsToError (Warnings w@(_:_) _) = typeError $ UnsolvedMetas w
-warningsToError (Warnings _ w@(_:_)) = typeError $ UnsolvedConstraints w
+    UnsolvedMetaVariables ms  ->
+      fsep ( pwords "Unsolved metas at the following locations:" )
+      $$ nest 2 (vcat $ map prettyTCM ms)
 
+    UnsolvedInteractionMetas is ->
+      fsep ( pwords "Unsolved interaction metas at the following locations:" )
+      $$ nest 2 (vcat $ map prettyTCM is)
+
+    UnsolvedConstraints cs ->
+      fsep ( pwords "Failed to solve the following constraints:" )
+      $$ nest 2 (P.vcat . nub <$> mapM prettyConstraint cs)
+
+      where prettyConstraint :: ProblemConstraint -> TCM Doc
+            prettyConstraint c = f (prettyTCM c)
+              where
+              r   = getRange c
+              f d = if null $ P.pretty r
+                    then d
+                    else d $$ nest 4 (text "[ at" <+> prettyTCM r <+> text "]")
+
+    TerminationIssue tes ->
+      fwords "Termination checking failed for the following functions:"
+      $$ (nest 2 $ fsep $ punctuate comma $
+           map (pretty . dropTopLevelModule) $
+             concatMap termErrFunctions tes)
+      $$ fwords "Problematic calls:"
+      $$ (nest 2 $ fmap (P.vcat . nub) $
+            mapM prettyTCM $ sortBy (compare `on` callInfoRange) $
+            concatMap termErrCalls tes)
+
+    NotStrictlyPositive d ocs -> fsep $
+      [prettyTCM (dropTopLevelModule d)] ++
+      pwords "is not strictly positive, because it occurs"
+      ++ [prettyTCM ocs]
+
+    OldBuiltin old new -> fwords $
+      "Builtin " ++ old ++ " does no longer exist. " ++
+      "It is now bound by BUILTIN " ++ new
+
+    EmptyRewritePragma -> fsep . pwords $ "Empty REWRITE pragma"
+
+    ParseWarning pw -> pretty pw
+
+prettyTCWarnings :: [TCWarning] -> TCM String
+prettyTCWarnings = fmap (unlines . intersperse " ") . prettyTCWarnings'
+
+prettyTCWarnings' :: [TCWarning] -> TCM [String]
+prettyTCWarnings' = mapM (fmap show . prettyTCM)
+
+-- | Turns all warnings into errors.
+tcWarningsToError :: [TCWarning] -> TCM a
+tcWarningsToError ws = typeError $ case ws of
+  [] -> SolvedButOpenHoles
+  _  -> NonFatalErrors ws
+
+
+-- | Depending which flags are set, one may happily ignore some
+-- warnings.
+
+applyFlagsToTCWarnings :: IgnoreFlags -> [TCWarning] -> TCM [TCWarning]
+applyFlagsToTCWarnings ifs ws = do
+
+  unsolvedNotOK <- not . optAllowUnsolved <$> pragmaOptions
+  negativeNotOK <- not . optDisablePositivity <$> pragmaOptions
+  loopingNotOK  <- optTerminationCheck <$> pragmaOptions
+
+  let cleanUp w =
+        let ignore = ifs == IgnoreFlags
+            keepUnsolved us = not (null us) && (ignore || unsolvedNotOK)
+        in case w of
+          TerminationIssue{}           -> ignore || loopingNotOK
+          NotStrictlyPositive{}        -> ignore || negativeNotOK
+          UnsolvedMetaVariables ums    -> keepUnsolved ums
+          UnsolvedInteractionMetas uis -> keepUnsolved uis
+          UnsolvedConstraints ucs      -> keepUnsolved ucs
+          OldBuiltin{}                 -> True
+          EmptyRewritePragma           -> True
+          ParseWarning{}               -> True
+
+  return $ filter (cleanUp . tcWarning) ws
+
 ---------------------------------------------------------------------------
 -- * Helpers
 ---------------------------------------------------------------------------
@@ -126,7 +203,6 @@
   Exception r s   -> show r ++ " " ++ show s
   IOException r e -> show r ++ " " ++ show e
   PatternErr{}    -> "PatternErr"
-  {- AbortAssign _   -> "AbortAssign" -- UNUSED -}
 
 errorString :: TypeError -> String
 errorString err = case err of
@@ -184,6 +260,7 @@
   ModuleArityMismatch{}                    -> "ModuleArityMismatch"
   ModuleDefinedInOtherFile {}              -> "ModuleDefinedInOtherFile"
   ModuleDoesntExport{}                     -> "ModuleDoesntExport"
+  ModuleNameUnexpected{}                   -> "ModuleNameUnexpected"
   ModuleNameDoesntMatchFileName {}         -> "ModuleNameDoesntMatchFileName"
   NeedOptionCopatterns{}                   -> "NeedOptionCopatterns"
   NeedOptionRewriting{}                    -> "NeedOptionRewriting"
@@ -204,12 +281,12 @@
   InvalidTypeSort{}                        -> "InvalidTypeSort"
   FunctionTypeInSizeUniv{}                 -> "FunctionTypeInSizeUniv"
   NotAValidLetBinding{}                    -> "NotAValidLetBinding"
+  NotValidBeforeField{}                    -> "NotValidBeforeField"
   NotAnExpression{}                        -> "NotAnExpression"
   NotImplemented{}                         -> "NotImplemented"
   NotSupported{}                           -> "NotSupported"
   NotInScope{}                             -> "NotInScope"
   NotLeqSort{}                             -> "NotLeqSort"
-  NotStrictlyPositive{}                    -> "NotStrictlyPositive"
   NothingAppliedToHiddenArg{}              -> "NothingAppliedToHiddenArg"
   NothingAppliedToInstanceArg{}            -> "NothingAppliedToInstanceArg"
   OverlappingProjects {}                   -> "OverlappingProjects"
@@ -223,7 +300,8 @@
   SafeFlagNonTerminating{}                 -> "SafeFlagNonTerminating"
   SafeFlagTerminating{}                    -> "SafeFlagTerminating"
   SafeFlagPrimTrustMe{}                    -> "SafeFlagPrimTrustMe"
-  SafeFlagNoPositivityCheck{}              -> "SafeNoPositivityCheck"
+  SafeFlagNoPositivityCheck{}              -> "SafeFlagNoPositivityCheck"
+  SafeFlagPolarity{}                       -> "SafeFlagPolarity"
   ShadowedModule{}                         -> "ShadowedModule"
   ShouldBeASort{}                          -> "ShouldBeASort"
   ShouldBeApplicationOf{}                  -> "ShouldBeApplicationOf"
@@ -239,6 +317,7 @@
   TooFewFields{}                           -> "TooFewFields"
   TooManyArgumentsInLHS{}                  -> "TooManyArgumentsInLHS"
   TooManyFields{}                          -> "TooManyFields"
+  TooManyPolarities{}                      -> "TooManyPolarities"
   SplitOnIrrelevant{}                      -> "SplitOnIrrelevant"
   DefinitionIsIrrelevant{}                 -> "DefinitionIsIrrelevant"
   VariableIsIrrelevant{}                   -> "VariableIsIrrelevant"
@@ -261,11 +340,10 @@
   UninstantiatedDotPattern{}               -> "UninstantiatedDotPattern"
   UninstantiatedModule{}                   -> "UninstantiatedModule"
   UnreachableClauses{}                     -> "UnreachableClauses"
-  UnsolvedConstraints{}                    -> "UnsolvedConstraints"
-  UnsolvedMetas{}                          -> "UnsolvedMetas"
   SolvedButOpenHoles{}                     -> "SolvedButOpenHoles"
   UnusedVariableInPatternSynonym           -> "UnusedVariableInPatternSynonym"
   UnquoteFailed{}                          -> "UnquoteFailed"
+  DeBruijnIndexOutOfScope{}                -> "DeBruijnIndexOutOfScope"
   WithClausePatternMismatch{}              -> "WithClausePatternMismatch"
   WithoutKError{}                          -> "WithoutKError"
   WrongHidingInApplication{}               -> "WrongHidingInApplication"
@@ -277,9 +355,15 @@
   WrongNumberOfConstructorArguments{}      -> "WrongNumberOfConstructorArguments"
   HidingMismatch{}                         -> "HidingMismatch"
   RelevanceMismatch{}                      -> "RelevanceMismatch"
+  NonFatalErrors{}                         -> "NonFatalErrors"
+  InstanceSearchDepthExhausted{}           -> "InstanceSearchDepthExhausted"
 
 instance PrettyTCM TCErr where
   prettyTCM err = case err of
+    -- Gallais, 2016-05-14
+    -- Given where `NonFatalErrors` are created, we know for a
+    -- fact that ̀ws` is non-empty.
+    TypeError _ (Closure _ _ _ _ (NonFatalErrors ws)) -> foldr1 ($$) $ fmap prettyTCM ws
     -- Andreas, 2014-03-23
     -- This use of localState seems ok since we do not collect
     -- Benchmark info during printing errors.
@@ -289,7 +373,6 @@
     Exception r s   -> sayWhere r $ return s
     IOException r e -> sayWhere r $ fwords $ show e
     PatternErr{}    -> sayWhere err $ panic "uncaught pattern violation"
-    {- AbortAssign _   -> sayWhere err $ panic "uncaught aborted assignment" -- UNUSED -}
 
 instance PrettyTCM CallInfo where
   prettyTCM c = do
@@ -300,8 +383,11 @@
       else call $$ nest 2 (text "(at" <+> prettyTCM r <> text ")")
 
 -- | Drops the filename component of the qualified name.
+dropTopLevelModule' :: Int -> QName -> QName
+dropTopLevelModule' k (QName (MName ns) n) = QName (MName (drop k ns)) n
+
 dropTopLevelModule :: QName -> QName
-dropTopLevelModule (QName (MName ns) n) = QName (MName (drop 1 ns)) n
+dropTopLevelModule = dropTopLevelModule' 1
 
 instance PrettyTCM TypeError where
   prettyTCM err = case err of
@@ -317,15 +403,19 @@
 
     GenericDocError d -> return d
 
-    TerminationCheckFailed because ->
+    TerminationCheckFailed because -> do
+      dropTopLevelModule <- do
+        caseMaybeM (asks envCurrentPath) (return id) $ \ f -> do
+        m <- fromMaybe __IMPOSSIBLE__ <$> lookupModuleFromSource f
+        return $ dropTopLevelModule' $ size m
       fwords "Termination checking failed for the following functions:"
-      $$ (nest 2 $ fsep $ punctuate comma $
-           map (pretty . dropTopLevelModule) $
-             concatMap termErrFunctions because)
-      $$ fwords "Problematic calls:"
-      $$ (nest 2 $ fmap (P.vcat . nub) $
-            mapM prettyTCM $ sortBy (compare `on` callInfoRange) $
-            concatMap termErrCalls because)
+        $$ (nest 2 $ fsep $ punctuate comma $
+             map (pretty . dropTopLevelModule) $
+               concatMap termErrFunctions because)
+        $$ fwords "Problematic calls:"
+        $$ (nest 2 $ fmap (P.vcat . nub) $
+              mapM prettyTCM $ sortBy (compare `on` callInfoRange) $
+              concatMap termErrCalls because)
 
     PropMustBeSingleton -> fwords
       "Datatypes in Prop must have at most one constructor when proof irrelevance is enabled"
@@ -575,9 +665,16 @@
       pwords "Duplicate fields" ++ punctuate comma (map pretty xs) ++
       pwords "in record"
 
-    WithOnFreeVariable e -> fsep $
-      pwords "Cannot `with` on variable " ++ [prettyA e] ++
-      pwords " bound in a module telescope (or patterns of a parent clause)"
+    WithOnFreeVariable e v -> do
+      de <- prettyA e
+      dv <- prettyTCM v
+      if show de == show dv
+        then fsep $
+          pwords "Cannot `with` on variable" ++ [return dv] ++
+          pwords " bound in a module telescope (or patterns of a parent clause)"
+        else fsep $
+          pwords "Cannot `with` on expression" ++ [return de] ++ pwords "which reduces to variable" ++ [return dv] ++
+          pwords " bound in a module telescope (or patterns of a parent clause)"
 
     UnexpectedWithPatterns ps -> fsep $
       pwords "Unexpected with patterns" ++ (punctuate (text " |") $ map prettyA ps)
@@ -647,22 +744,6 @@
     SolvedButOpenHoles ->
       text "Module cannot be imported since it has open interaction points"
 
-    UnsolvedMetas rs ->
-      fsep ( pwords "Unsolved metas at the following locations:" )
-      $$ nest 2 (vcat $ map prettyTCM rs)
-
-    UnsolvedConstraints cs ->
-      fsep ( pwords "Failed to solve the following constraints:" )
-      $$ nest 2 (vcat $ map prettyConstraint cs)
-
-      where prettyConstraint :: ProblemConstraint -> TCM Doc
-            prettyConstraint c = f (prettyTCM c)
-              where
-              r   = getRange c
-              f d = if null $ P.pretty r
-                    then d
-                    else d $$ nest 4 (text "[ at" <+> prettyTCM r <+> text "]")
-
     CyclicModuleDependency ms ->
       fsep (pwords "cyclic module dependency:")
       $$ nest 2 (vcat $ map pretty ms)
@@ -696,6 +777,12 @@
       pwords "However, according to the include path this module should" ++
       pwords "be defined in" ++ [text (filePath file') <> text "."]
 
+    ModuleNameUnexpected given expected -> fsep $
+      pwords "The name of the top level module does not match the file name. The module" ++
+      [ pretty given ] ++
+      pwords "should probably be named" ++
+      [ pretty expected ]
+
     ModuleNameDoesntMatchFileName given files ->
       fsep (pwords "The name of the top level module does not match the file name. The module" ++
            [ pretty given ] ++ pwords "should be defined in one of the following files:")
@@ -803,6 +890,9 @@
     NotAValidLetBinding nd -> fwords $
       "Not a valid let-declaration"
 
+    NotValidBeforeField nd -> fwords $
+      "This declaration is illegal in a record before the last field"
+
     NothingAppliedToHiddenArg e -> fsep $
       [pretty e] ++ pwords "cannot appear by itself. It needs to be the argument to" ++
       pwords "a function expecting an implicit argument."
@@ -954,8 +1044,16 @@
         )
         where
         nota    = sectNotation sect
-        section = trim (notation nota)
+        section = qualifyFirstIdPart
+                    (foldr (\x s -> C.nameToRawName x ++ "." ++ s)
+                           ""
+                           (init (C.qnameParts (notaName nota))))
+                    (trim (notation nota))
 
+        qualifyFirstIdPart _ []              = []
+        qualifyFirstIdPart q (IdPart x : ps) = IdPart (q ++ x) : ps
+        qualifyFirstIdPart q (p : ps)        = p : qualifyFirstIdPart q ps
+
         trim = case sectKind sect of
           InfixNotation   -> trimLeft . trimRight
           PrefixNotation  -> trimRight
@@ -1012,7 +1110,7 @@
         where
           display ps = do
             ps <- nicify f ps
-            prettyTCM f <+> fsep (map prettyArg ps)
+            prettyTCM f <+> fsep (map (prettyArg . fmap namedThing) ps)
 
           nicify f ps = do
             showImp <- showImplicitArguments
@@ -1022,7 +1120,7 @@
 
     CoverageCantSplitOn c tel cIxs gIxs
       | length cIxs /= length gIxs -> __IMPOSSIBLE__
-      | otherwise                  -> addCtxTel tel $ vcat (
+      | otherwise                  -> addContext tel $ vcat (
           [ fsep $ pwords "I'm not sure if there should be a case for the constructor" ++
                    [prettyTCM c <> text ","] ++
                    pwords "because I get stuck when trying to solve the following" ++
@@ -1048,12 +1146,14 @@
       pwords "because K has been disabled."
 
     UnifyConflict c c' -> fsep $
-      pwords "There was a conflict between the constructors " ++
-      [prettyTCM c] ++ pwords " and " ++ [prettyTCM c']
+      pwords "This case is impossible because of a conflict between the constructors " ++
+      [prettyTCM c] ++ pwords " and " ++ [prettyTCM c' <> text "."] ++
+      pwords "Possible solution: remove the clause, or use an absurd pattern ()."
 
     UnifyCycle i u -> fsep $
-      pwords "The variable " ++ [prettyTCM (var i)] ++
-      pwords "occurs strongly rigid in" ++ [prettyTCM u]
+      pwords "This case is impossible because the variable " ++ [prettyTCM (var i)] ++
+      pwords "occurs strongly rigid in" ++ [prettyTCM u <> text "."] ++
+      pwords "Possible solution: remove the clause, or use an absurd pattern ()."
 
     UnifyIndicesNotVars a u v ixs -> fsep $
       pwords "Cannot apply injectivity to the equation" ++ [prettyTCM u] ++
@@ -1073,35 +1173,10 @@
       pwords "with" ++ [prettyList (map prettyTCM vs)] ++
       pwords "in the telescope" ++ [prettyTCM tel]
 
-    NotStrictlyPositive d ocs -> fsep $
-      pwords "The datatype" ++ [prettyTCM d] ++
-      pwords "is not strictly positive, because"
-      ++ prettyOcc "it" ocs
-      where
-        prettyOcc _ [] = []
-        prettyOcc it (OccCon d c r : ocs) = concat
-          [ pwords it, pwords "occurs", prettyR r
-          , pwords "in the constructor", [prettyTCM c], pwords "of"
-          , [prettyTCM d <> com ocs], prettyOcc "which" ocs
-          ]
-        prettyOcc it (OccClause f n r : ocs) = concat
-          [ pwords it, pwords "occurs", prettyR r
-          , pwords "in the", [th n], pwords "clause of"
-          , [prettyTCM f <> com ocs], prettyOcc "which" ocs
-          ]
-
-        prettyR NonPositively = pwords "negatively"
-        prettyR (ArgumentTo i q) =
-          pwords "as the" ++ [th i] ++
-          pwords "argument to" ++ [prettyTCM q]
-
-        th 0 = text "first"
-        th 1 = text "second"
-        th 2 = text "third"
-        th n = prettyTCM (n - 1) <> text "th"
-
-        com []    = empty
-        com (_:_) = comma
+    TooManyPolarities x n -> fsep $
+      pwords "Too many polarities given in the POLARITY pragma for" ++
+      [prettyTCM x] ++
+      pwords "(at most" ++ [text (show n)] ++ pwords "allowed)."
 
     IFSNoCandidateInScope t -> fsep $
       pwords "No instance of type" ++ [prettyTCM t] ++ pwords "was found in scope."
@@ -1127,6 +1202,16 @@
 
       UnquotePanic err -> __IMPOSSIBLE__
 
+    DeBruijnIndexOutOfScope i EmptyTel [] -> fsep $
+        pwords $ "de Bruijn index " ++ show i ++ " is not in scope in the empty context"
+    DeBruijnIndexOutOfScope i cxt names ->
+        sep [ text ("de Bruijn index " ++ show i ++ " is not in scope in the context")
+            , inTopContext $ addContext "_" $ prettyTCM cxt' ]
+      where
+        cxt' = cxt `abstract` raise (size cxt) (nameCxt names)
+        nameCxt [] = EmptyTel
+        nameCxt (x : xs) = ExtendTel (defaultDom (El I.Prop $ I.Var 0 [])) $ NoAbs (show x) $ nameCxt xs
+
     SafeFlagPostulate e -> fsep $
       pwords "Cannot postulate" ++ [pretty e] ++ pwords "with safe flag"
 
@@ -1147,11 +1232,21 @@
     SafeFlagNoPositivityCheck -> fsep $
       pwords "Cannot use NO_POSITIVITY_CHECK pragma with safe flag."
 
+    SafeFlagPolarity -> fsep $
+      pwords "The POLARITY pragma must not be used in safe mode."
+
     NeedOptionCopatterns -> fsep $
       pwords "Option --copatterns needed to enable destructor patterns"
+
     NeedOptionRewriting  -> fsep $
       pwords "Option --rewriting needed to add and use rewrite rules"
 
+    NonFatalErrors ws -> foldr1 ($$) $ fmap prettyTCM ws
+
+    InstanceSearchDepthExhausted c a d -> fsep $
+      pwords ("Instance search depth exhaused (max depth: " ++ show d ++ ") for candidate") ++
+      [hang (prettyTCM c <+> text ":") 2 (prettyTCM a)]
+
     where
     mpar n args
       | n > 0 && not (null args) = parens
@@ -1170,7 +1265,7 @@
       mpar n args $
         prettyTCM c <+> fsep (map (prettyArg . fmap namedThing) args)
     prettyPat _ (I.LitP l) = prettyTCM l
-    prettyPat _ (I.ProjP p) = prettyTCM p
+    prettyPat _ (I.ProjP _ p) = text "." <> prettyTCM p
 
 notCmp :: Comparison -> TCM Doc
 notCmp cmp = text "!" <> prettyTCM cmp
@@ -1205,7 +1300,7 @@
       "they contain different but identically rendered identifiers somewhere"
     varVar :: Int -> Int -> TCM Doc
     varVar i j = parens $ fwords $
-                   "because one has deBruijn index " ++ show i
+                   "because one has de Bruijn index " ++ show i
                    ++ " and the other " ++ show j
 
 class PrettyUnequal a where
@@ -1252,7 +1347,7 @@
         pwords "when checking that the clause"
         ++ [prettyA cl] ++ pwords "has type" ++ [prettyTCM t]
 
-    CheckPattern p tel t -> addCtxTel tel $ fsep $
+    CheckPattern p tel t -> addContext tel $ fsep $
       pwords "when checking that the pattern"
       ++ [prettyA p] ++ pwords "has type" ++ [prettyTCM t]
 
@@ -1291,7 +1386,7 @@
     CheckDataDef _ x ps cs ->
       fsep $ pwords "when checking the definition of" ++ [prettyTCM x]
 
-    CheckConstructor d _ _ (A.Axiom _ _ _ c _) -> fsep $
+    CheckConstructor d _ _ (A.Axiom _ _ _ _ c _) -> fsep $
       pwords "when checking the constructor" ++ [prettyTCM c] ++
       pwords "in the declaration of" ++ [prettyTCM d]
 
@@ -1322,7 +1417,7 @@
     InferVar x ->
       fsep $ pwords "when inferring the type of" ++ [prettyTCM x]
 
-    InferDef _ x ->
+    InferDef x ->
       fsep $ pwords "when inferring the type of" ++ [prettyTCM x]
 
     CheckIsEmpty r t ->
@@ -1332,8 +1427,13 @@
     ScopeCheckExpr e -> fsep $ pwords "when scope checking" ++ [pretty e]
 
     ScopeCheckDeclaration d ->
-      fwords "when scope checking the declaration" $$
-      nest 2 (pretty $ simpleDecl d)
+      fwords ("when scope checking the declaration" ++ suffix) $$
+      nest 2 (vcat $ map pretty ds)
+      where
+      ds     = D.notSoNiceDeclarations d
+      suffix = case ds of
+        [_] -> ""
+        _   -> "s"
 
     ScopeCheckLHS x p ->
       fsep $ pwords "when scope checking the left-hand side" ++ [pretty p] ++
@@ -1345,7 +1445,7 @@
 
     CheckSectionApplication _ m1 modapp -> fsep $
       pwords "when checking the module application" ++
-      [prettyA $ A.Apply info m1 modapp empty empty defaultImportDir]
+      [prettyA $ A.Apply info m1 modapp initCopyInfo defaultImportDir]
       where
       info = A.ModuleInfo noRange noRange Nothing Nothing Nothing
 
@@ -1354,8 +1454,6 @@
     where
     hPretty :: Arg (Named_ Expr) -> TCM Doc
     hPretty a = pretty =<< abstractToConcreteCtx (hiddenArgumentCtx (getHiding a)) a
-
-    simpleDecl = D.notSoNiceDeclaration
 
 ---------------------------------------------------------------------------
 -- * Natural language
diff --git a/src/full/Agda/TypeChecking/EtaContract.hs b/src/full/Agda/TypeChecking/EtaContract.hs
--- a/src/full/Agda/TypeChecking/EtaContract.hs
+++ b/src/full/Agda/TypeChecking/EtaContract.hs
@@ -1,6 +1,4 @@
 {-# LANGUAGE CPP #-}
-{-# LANGUAGE FlexibleContexts #-}
-{-# LANGUAGE PatternGuards #-}
 
 -- | Compute eta short normal forms.
 module Agda.TypeChecking.EtaContract where
@@ -34,8 +32,8 @@
   -- (Cf. also issue 889 (fixed differently).)
   -- At least record constructors should be fully applied where possible!
   -- TODO: also for ordinary constructors (\ x -> suc x  vs.  suc)?
-  Con c xs
-    | null (conFields c) -> app (Con c) xs
+  Con c ci xs
+    | null (conFields c) -> app (Con c ci) xs
     | otherwise          -> noApp
   Lit _      -> noApp
   Level _    -> noApp   -- could be an application, but let's not eta contract levels
@@ -69,12 +67,11 @@
   -- reportSDoc "tc.eta" 70 $ text "eta-contracting" <+> prettyTCM v
   Shared{} -> updateSharedTerm etaOnce v
   Lam i (Abs _ b) -> do  -- NoAbs can't be eta'd
-      imp <- shouldEtaContractImplicit
       tyty <- typeInType
       case binAppView b of
         App u (Arg info v)
           | (isIrrelevant info || isVar0 tyty v)
-                    && allowed imp info
+                    && getHiding i == getHiding info
                     && not (freeIn 0 u) ->
             return $ strengthen __IMPOSSIBLE__ u
         _ -> return v
@@ -89,16 +86,15 @@
         BlockedLevel{}   -> False
         MetaLevel{}      -> False
       isVar0 _ _ = False
-      allowed imp i' = getHiding i == getHiding i' && (imp || notHidden i)
 
   -- Andreas, 2012-12-18:  Abstract definitions could contain
   -- abstract records whose constructors are not in scope.
   -- To be able to eta-contract them, we ignore abstract.
-  Con c args -> ignoreAbstractMode $ do
+  Con c ci args -> ignoreAbstractMode $ do
       -- reportSDoc "tc.eta" 20 $ text "eta-contracting record" <+> prettyTCM t
       r <- getConstructorData $ conName c -- fails in ConcreteMode if c is abstract
       ifM (isEtaRecord r)
           (do -- reportSDoc "tc.eta" 20 $ text "eta-contracting record" <+> prettyTCM t
-              etaContractRecord r c args)
+              etaContractRecord r c ci args)
           (return v)
   v -> return v
diff --git a/src/full/Agda/TypeChecking/Forcing.hs b/src/full/Agda/TypeChecking/Forcing.hs
--- a/src/full/Agda/TypeChecking/Forcing.hs
+++ b/src/full/Agda/TypeChecking/Forcing.hs
@@ -1,5 +1,4 @@
 {-# LANGUAGE CPP               #-}
-{-# LANGUAGE FlexibleInstances #-}
 
 {-| A constructor argument is forced if it appears as pattern variable
 in an index of the target.
@@ -126,8 +125,8 @@
 instance ForcedVariables Term where
   forcedVariables t = case ignoreSharing t of
     Var i [] -> [i]
-    Con _ vs -> forcedVariables vs
-    _        -> []
+    Con _ _ vs -> forcedVariables vs
+    _ -> []
 
 -- | @force s xs t@ marks the domains @xs@ in function type @t@ as forced.
 --   Domains bigger than @s@ are marked as @'Forced' 'Big'@, others as
diff --git a/src/full/Agda/TypeChecking/Free.hs b/src/full/Agda/TypeChecking/Free.hs
--- a/src/full/Agda/TypeChecking/Free.hs
+++ b/src/full/Agda/TypeChecking/Free.hs
@@ -1,8 +1,3 @@
-{-# LANGUAGE ConstraintKinds #-}
-{-# LANGUAGE FlexibleContexts #-}
-{-# LANGUAGE FlexibleInstances #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE PatternGuards #-}
 
 -- | Computing the free variables of a term.
 --
@@ -26,13 +21,16 @@
     , Free, Free', FreeV, FreeVS
     , IgnoreSorts(..)
     , runFree , rigidVars, relevantVars, allVars
-    , allFreeVars, allRelevantVars, allRelevantVarsIgnoring
+    , allFreeVars
+    , allRelevantVars, allRelevantVarsIgnoring
+    , allRelevantOrUnusedVars, allRelevantOrUnusedVarsIgnoring
     , freeIn, freeInIgnoringSorts, isBinderUsed
     , relevantIn, relevantInIgnoringSortAnn
     , Occurrence(..)
     , occurrence
     , closed
     , freeVars -- only for testing
+    , freeVars'
     ) where
 
 import Prelude hiding (null)
@@ -40,11 +38,12 @@
 import Control.Monad.Reader
 
 import Data.Maybe
-import Data.Monoid
+import Data.Semigroup (Semigroup, Monoid, (<>), mempty, mappend, mconcat, Any(..), All(..))
 import Data.IntSet (IntSet)
 import qualified Data.IntSet as Set
 import Data.IntMap (IntMap)
 import qualified Data.IntMap as Map
+import Data.Set (Set)
 
 import qualified Agda.Benchmarking as Bench
 
@@ -54,6 +53,7 @@
 import Agda.TypeChecking.Free.Lazy
   ( Free'(..) , FreeEnv(..), initFreeEnv
   , VarOcc(..), IgnoreSorts(..), Variable, SingleVar
+  , MetaSet
   )
 import qualified Agda.TypeChecking.Free.Lazy as Free
 
@@ -75,9 +75,10 @@
     --   whereas weakly rigid ones stay weakly rigid.
   , weaklyRigidVars   :: VarSet
     -- ^ Ordinary rigid variables, e.g., in arguments of variables.
-  , flexibleVars      :: IntMap [MetaId]
+  , flexibleVars      :: IntMap MetaSet
     -- ^ Variables occuring in arguments of metas.
     --   These are only potentially free, depending how the meta variable is instantiated.
+    --   The set contains the id's of the meta variables that this variable is an argument to.
   , irrelevantVars    :: VarSet
     -- ^ Variables in irrelevant arguments and under a @DontCare@, i.e.,
     --   in irrelevant positions.
@@ -93,7 +94,7 @@
 mapIRV f fv = fv { irrelevantVars    = f $ irrelevantVars    fv }
 mapUUV f fv = fv { unusedVars        = f $ unusedVars        fv }
 
-mapFXV :: (IntMap [MetaId] -> IntMap [MetaId]) -> FreeVars -> FreeVars
+mapFXV :: (IntMap MetaSet -> IntMap MetaSet) -> FreeVars -> FreeVars
 mapFXV f fv = fv { flexibleVars      = f $ flexibleVars      fv }
 
 -- | Rigid variables: either strongly rigid, unguarded, or weakly rigid.
@@ -118,7 +119,7 @@
   | StronglyRigid     -- ^ Under at least one and only inductive constructors.
   | Unguarded         -- ^ In top position, or only under inductive record constructors.
   | WeaklyRigid       -- ^ In arguments to variables and definitions.
-  | Flexible [MetaId] -- ^ In arguments of metas.
+  | Flexible MetaSet  -- ^ In arguments of metas.
   | Unused
   deriving (Eq,Show)
 
@@ -138,14 +139,14 @@
   | otherwise                           = NoOccurrence
 
 -- | Mark variables as flexible.  Useful when traversing arguments of metas.
-flexible :: [MetaId] -> FreeVars -> FreeVars
+flexible :: MetaSet -> FreeVars -> FreeVars
 flexible ms fv =
     fv { stronglyRigidVars = Set.empty
        , unguardedVars     = Set.empty
        , weaklyRigidVars   = Set.empty
        , flexibleVars      = Map.unionsWith mappend
                                [ Map.fromSet (const ms) (rigidVars fv)
-                               , fmap (ms++) (flexibleVars fv) ]
+                               , fmap (mappend ms) (flexibleVars fv) ]
        }
 
 -- | Mark rigid variables as non-strongly.  Useful when traversing arguments of variables.
@@ -200,9 +201,12 @@
   null (FV a b c d e f) = null a && null b && null c && null d && null e && null f
 
 -- | Free variable sets form a monoid under 'union'.
+instance Semigroup FreeVars where
+  (<>) = union
+
 instance Monoid FreeVars where
   mempty  = empty
-  mappend = union
+  mappend = (<>)
   mconcat = unions
 
 -- | @delete x fv@ deletes variable @x@ from variable set @fv@.
@@ -291,196 +295,20 @@
 allFreeVars :: Free' a VarSet => a -> VarSet
 allFreeVars = runFree (Set.singleton . fst) IgnoreNot
 
--- | Collect all relevant free variables, possibly ignoring sorts.
+-- | Collect all relevant free variables, excluding the "unused" ones, possibly ignoring sorts.
 allRelevantVarsIgnoring :: Free' a VarSet => IgnoreSorts -> a -> VarSet
 allRelevantVarsIgnoring = runFree sg
   where sg (i, VarOcc _ r) = if irrelevantOrUnused r then Set.empty else Set.singleton i
 
--- | Collect all relevant free variables.
+-- | Collect all relevant free variables, excluding the "unused" ones.
 allRelevantVars :: Free' a VarSet => a -> VarSet
 allRelevantVars = allRelevantVarsIgnoring IgnoreNot
 
-
-{- OLD
-
--- | A single unguarded variable.
-singleton :: Nat -> FreeVars
-singleton x = empty { unguardedVars = Set.singleton x }
-
--- * Collecting free variables.
-
--- | Where should we skip sorts in free variable analysis?
-data IgnoreSorts
-  = IgnoreNot            -- ^ Do not skip.
-  | IgnoreInAnnotations  -- ^ Skip when annotation to a type.
-  | IgnoreAll            -- ^ Skip unconditionally.
-  deriving (Eq, Show)
-
-data FreeConf = FreeConf
-  { fcIgnoreSorts   :: !IgnoreSorts
-    -- ^ Ignore free variables in sorts.
-  , fcContext       :: !Int
-    -- ^ Under how many binders have we stepped?
-  }
-
-initFreeConf :: FreeConf
-initFreeConf = FreeConf
-  { fcIgnoreSorts = IgnoreNot
-  , fcContext     = 0
-  }
-
--- | Return type of fold over syntax.
-type FreeT = Reader FreeConf FreeVars
-
-instance Monoid FreeT where
-  mempty  = pure mempty
-  mappend = liftA2 mappend
-  mconcat = mconcat <.> sequence
-
--- | Base case: a variable.
-variable :: Int -> FreeT
-variable n = do
-  m <- (n -) <$> asks fcContext
-  if m >= 0 then pure $ singleton m else mempty
-
--- | Going under a binder.
-bind :: FreeT -> FreeT
-bind = local $ \ e -> e { fcContext = 1 + fcContext e }
-
-class Free a where
-  freeVars'   :: a -> FreeT
-
-instance Free Term where
-  freeVars' t = case t of
-    Var n ts   -> variable n `mappend` do weakly <$> freeVars' ts
-    -- λ is not considered guarding, as
-    -- we cannot prove that x ≡ λy.x is impossible.
-    Lam _ t    -> freeVars' t
-    Lit _      -> mempty
-    Def _ ts   -> weakly <$> freeVars' ts  -- because we are not in TCM
-      -- we cannot query whether we are dealing with a data/record (strongly r.)
-      -- or a definition by pattern matching (weakly rigid)
-      -- thus, we approximate, losing that x = List x is unsolvable
-    Con c ts   -> underConstructor c <$> freeVars' ts
-    -- Pi is not guarding, since we cannot prove that A ≡ B → A is impossible.
-    -- Even as we do not permit infinite type expressions,
-    -- we cannot prove their absence (as Set is not inductive).
-    -- Also, this is incompatible with univalence (HoTT).
-    Pi a b     -> freeVars' (a,b)
-    Sort s     -> freeVars' s
-    Level l    -> freeVars' l
-    MetaV _ ts -> flexible <$> freeVars' ts
-    DontCare mt -> irrelevantly <$> freeVars' mt
-    Shared p    -> freeVars' (derefPtr p)
-
-instance Free Type where
-  freeVars' (El s t) =
-    ifM ((IgnoreNot ==) <$> asks fcIgnoreSorts)
-      {- then -} (freeVars' (s, t))
-      {- else -} (freeVars' t)
-
-instance Free Sort where
-  freeVars' s =
-    ifM ((IgnoreAll ==) <$> asks fcIgnoreSorts) mempty $ {- else -}
-    case s of
-      Type a     -> freeVars' a
-      Prop       -> mempty
-      Inf        -> mempty
-      SizeUniv   -> mempty
-      DLub s1 s2 -> weakly <$> freeVars' (s1, s2)
-
-instance Free Level where
-  freeVars' (Max as) = freeVars' as
-
-instance Free PlusLevel where
-  freeVars' ClosedLevel{} = mempty
-  freeVars' (Plus _ l)    = freeVars' l
-
-instance Free LevelAtom where
-  freeVars' l = case l of
-    MetaLevel _ vs   -> flexible <$> freeVars' vs
-    NeutralLevel _ v -> freeVars' v
-    BlockedLevel _ v -> freeVars' v
-    UnreducedLevel v -> freeVars' v
-
-instance Free a => Free [a] where
-  freeVars' = foldMap freeVars'
-
-instance Free a => Free (Maybe a) where
-  freeVars' = foldMap freeVars'
-
-instance (Free a, Free b) => Free (a,b) where
-  freeVars' (x,y) = freeVars' x `mappend` freeVars' y
-
-instance Free a => Free (Elim' a) where
-  freeVars' (Apply a) = freeVars' a
-  freeVars' (Proj{} ) = mempty
-
-instance Free a => Free (Arg a) where
-  freeVars' a = f <$> freeVars' (unArg a)
-    where f = case getRelevance a of
-               Irrelevant -> irrelevantly
-               UnusedArg  -> unused
-               _          -> id
-
-
-instance Free a => Free (Dom a) where
-  freeVars' = freeVars' . unDom
-
-instance Free a => Free (Abs a) where
-  freeVars' (Abs   _ b) = bind $ freeVars' b
-  freeVars' (NoAbs _ b) = freeVars' b
-
-instance Free a => Free (Tele a) where
-  freeVars' EmptyTel          = mempty
-  freeVars' (ExtendTel a tel) = freeVars' (a, tel)
-
-instance Free ClauseBody where
-  freeVars' (Body t)   = freeVars' t
-  freeVars' (Bind b)   = freeVars' b
-  freeVars'  NoBody    = mempty
-
-instance Free Clause where
-  freeVars' = freeVars' . clauseBody
-
-bench :: a -> a
-bench = Bench.billToPure [ Bench.Typing , Bench.Free ]
-
--- | Doesn't go inside solved metas, but collects the variables from a
--- metavariable application @X ts@ as @flexibleVars@.
-freeVars :: Free a => a -> FreeVars
-freeVars t =
-  freeVars' t `runReader` initFreeConf
-
-freeVarsIgnore :: Free a => IgnoreSorts -> a -> FreeVars
-freeVarsIgnore i t =
-  freeVars' t `runReader` initFreeConf{ fcIgnoreSorts = i }
-
-freeIn :: Free a => Nat -> a -> Bool
-freeIn v t = bench $
-  v `Set.member` allVars (freeVars t)
-
-freeInIgnoringSorts :: Free a => Nat -> a -> Bool
-freeInIgnoringSorts v t = bench $
-  v `Set.member` allVars (freeVarsIgnore IgnoreAll t)
-
-freeInIgnoringSortAnn :: Free a => Nat -> a -> Bool
-freeInIgnoringSortAnn v t = bench $
-  v `Set.member` allVars (freeVarsIgnore IgnoreInAnnotations t)
-
-relevantInIgnoringSortAnn :: Free a => Nat -> a -> Bool
-relevantInIgnoringSortAnn v t = bench $
-  v `Set.member` relevantVars (freeVarsIgnore IgnoreInAnnotations t)
-
-relevantIn :: Free a => Nat -> a -> Bool
-relevantIn v t = bench $
-  v `Set.member` relevantVars (freeVarsIgnore IgnoreAll t)
-
--- | Is the variable bound by the abstraction actually used?
-isBinderUsed :: Free a => Abs a -> Bool
-isBinderUsed NoAbs{}   = False
-isBinderUsed (Abs _ x) = 0 `freeIn` x
+-- | Collect all relevant free variables, possibly ignoring sorts.
+allRelevantOrUnusedVarsIgnoring :: Free' a VarSet => IgnoreSorts -> a -> VarSet
+allRelevantOrUnusedVarsIgnoring = runFree sg
+  where sg (i, VarOcc _ r) = if isIrrelevant r then Set.empty else Set.singleton i
 
--- -}
--- -}
--- -}
+-- | Collect all relevant free variables.
+allRelevantOrUnusedVars :: Free' a VarSet => a -> VarSet
+allRelevantOrUnusedVars = allRelevantOrUnusedVarsIgnoring IgnoreNot
diff --git a/src/full/Agda/TypeChecking/Free/Lazy.hs b/src/full/Agda/TypeChecking/Free/Lazy.hs
--- a/src/full/Agda/TypeChecking/Free/Lazy.hs
+++ b/src/full/Agda/TypeChecking/Free/Lazy.hs
@@ -1,6 +1,3 @@
-{-# LANGUAGE FlexibleContexts #-}
-{-# LANGUAGE FlexibleInstances #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE UndecidableInstances #-}
 
 -- | Computing the free variables of a term lazily.
@@ -36,9 +33,8 @@
 
 import Data.Foldable (foldMap)
 import Data.IntMap (IntMap)
-import Data.Monoid
-
-import Test.QuickCheck
+import Data.Semigroup (Semigroup, Monoid, (<>), mempty, mappend, mconcat)
+import Data.Set (Set)
 
 import Agda.Syntax.Common
 import Agda.Syntax.Internal
@@ -48,14 +44,17 @@
 import Agda.Utils.Functor
 import Agda.Utils.Monad
 import Agda.Utils.Singleton
+import Agda.Utils.Size
 
+type MetaSet = Set MetaId
+
 -- | Depending on the surrounding context of a variable,
 --   it's occurrence can be classified as flexible or rigid,
 --   with finer distinctions.
 --
 --   The constructors are listed in increasing order (wrt. information content).
 data FlexRig
-  = Flexible [MetaId] -- ^ In arguments of metas.
+  = Flexible MetaSet  -- ^ In arguments of metas.
   | WeaklyRigid       -- ^ In arguments to variables and definitions.
   | Unguarded         -- ^ In top position, or only under inductive record constructors.
   | StronglyRigid     -- ^ Under at least one and only inductive constructors.
@@ -74,7 +73,7 @@
 composeFlexRig :: FlexRig -> FlexRig -> FlexRig
 composeFlexRig o o' =
   case (o, o') of
-    (Flexible ms1, Flexible ms2) -> Flexible $ ms1 ++ ms2
+    (Flexible ms1, Flexible ms2) -> Flexible $ ms1 `mappend` ms2
     (Flexible ms1, _) -> Flexible ms1
     (_, Flexible ms2) -> Flexible ms2
     (WeaklyRigid, _) -> WeaklyRigid
@@ -107,7 +106,7 @@
 topVarOcc = VarOcc StronglyRigid Relevant
 
 botVarOcc :: VarOcc
-botVarOcc = VarOcc (Flexible []) Irrelevant
+botVarOcc = VarOcc (Flexible mempty) Irrelevant
 
 type VarMap = IntMap VarOcc
 
@@ -152,9 +151,11 @@
 
 type FreeM c = Reader (FreeEnv c) c
 
+instance Monoid c => Semigroup (FreeM c) where
+  (<>) = liftA2 mappend
 instance Monoid c => Monoid (FreeM c) where
   mempty  = pure mempty
-  mappend = liftA2 mappend
+  mappend = (<>)
   mconcat = mconcat <.> sequence
 
 -- instance Singleton a c => Singleton a (FreeM c) where
@@ -172,8 +173,11 @@
 
 -- | Going under a binder.
 bind :: FreeM a -> FreeM a
-bind = local $ \ e -> e { feBinders = 1 + feBinders e }
+bind = bind' 1
 
+bind' :: Nat -> FreeM a -> FreeM a
+bind' n = local $ \ e -> e { feBinders = n + feBinders e }
+
 -- | Changing the 'FlexRig' context.
 go :: FlexRig -> FreeM a -> FreeM a
 go o = local $ \ e -> e { feFlexRig = composeFlexRig o $ feFlexRig e }
@@ -219,7 +223,7 @@
       -- we cannot query whether we are dealing with a data/record (strongly r.)
       -- or a definition by pattern matching (weakly rigid)
       -- thus, we approximate, losing that x = List x is unsolvable
-    Con c ts     -> underConstructor c $ freeVars' ts
+    Con c _ ts   -> underConstructor c $ freeVars' ts
     -- Pi is not guarding, since we cannot prove that A ≡ B → A is impossible.
     -- Even as we do not permit infinite type expressions,
     -- we cannot prove their absence (as Set is not inductive).
@@ -231,7 +235,7 @@
     DontCare mt  -> goRel Irrelevant $ freeVars' mt
     Shared p     -> freeVars' (derefPtr p)
 
-instance Free' Type c where
+instance Free' a c => Free' (Type' a) c where
   -- {-# SPECIALIZE instance Free' Type All #-}
   -- {-# SPECIALIZE freeVars' :: Type -> FreeM Any #-}
   -- {-# SPECIALIZE freeVars' :: Type -> FreeM All #-}
@@ -353,39 +357,14 @@
   freeVars' EmptyTel          = mempty
   freeVars' (ExtendTel a tel) = freeVars' (a, tel)
 
-instance Free' ClauseBody c where
-  -- {-# SPECIALIZE instance Free' ClauseBody All #-}
-  -- {-# SPECIALIZE freeVars' :: ClauseBody -> FreeM Any #-}
-  -- {-# SPECIALIZE freeVars' :: ClauseBody -> FreeM All #-}
-  -- {-# SPECIALIZE freeVars' :: ClauseBody -> FreeM VarSet #-}
-  -- {-# SPECIALIZE freeVars' :: ClauseBody -> FreeM VarMap #-}
-  freeVars' (Body t)   = freeVars' t
-  freeVars' (Bind b)   = freeVars' b
-  freeVars'  NoBody    = mempty
-
 instance Free' Clause c where
   -- {-# SPECIALIZE instance Free' Clause All #-}
   -- {-# SPECIALIZE freeVars' :: Clause -> FreeM Any #-}
   -- {-# SPECIALIZE freeVars' :: Clause -> FreeM All #-}
   -- {-# SPECIALIZE freeVars' :: Clause -> FreeM VarSet #-}
   -- {-# SPECIALIZE freeVars' :: Clause -> FreeM VarMap #-}
-  freeVars' = freeVars' . clauseBody
+  freeVars' cl = bind' (size $ clauseTel cl) $ freeVars' $ clauseBody cl
 
 instance Free' EqualityView c where
   freeVars' (OtherType t) = freeVars' t
   freeVars' (EqualityType s _eq l t a b) = freeVars' s `mappend` freeVars' [l, t, a, b]
-
--- Generators
-
-instance Arbitrary FlexRig where
-  arbitrary = oneof
-    [ pure $ Flexible [] -- TODO
-    , pure WeaklyRigid
-    , pure Unguarded
-    , pure StronglyRigid
-    ]
-
-instance Arbitrary VarOcc where
-  arbitrary = VarOcc <$> arbitrary <*> arbitrary
-
--- -}
diff --git a/src/full/Agda/TypeChecking/Free/Old.hs b/src/full/Agda/TypeChecking/Free/Old.hs
--- a/src/full/Agda/TypeChecking/Free/Old.hs
+++ b/src/full/Agda/TypeChecking/Free/Old.hs
@@ -1,4 +1,3 @@
-{-# LANGUAGE FlexibleInstances #-}
 
 -- | Computing the free variables of a term.
 --
@@ -41,13 +40,14 @@
 import Control.Monad.Reader
 
 import Data.Foldable (foldMap)
-import Data.Monoid
+import Data.Semigroup (Semigroup, Monoid, (<>), mempty, mappend, mconcat)
 
 import Agda.Syntax.Common
 import Agda.Syntax.Internal
 
 import Agda.Utils.Functor
 import Agda.Utils.Monad
+import Agda.Utils.Size
 import Agda.Utils.VarSet (VarSet)
 import qualified Agda.Utils.VarSet as Set
 
@@ -173,9 +173,12 @@
 empty = FV Set.empty Set.empty Set.empty Set.empty Set.empty Set.empty
 
 -- | Free variable sets form a monoid under 'union'.
+instance Semigroup FreeVars where
+  (<>) = union
+
 instance Monoid FreeVars where
   mempty  = empty
-  mappend = union
+  mappend = (<>)
   mconcat = unions
 
 -- | @delete x fv@ deletes variable @x@ from variable set @fv@.
@@ -223,9 +226,12 @@
 -- | Return type of fold over syntax.
 type FreeT = Reader FreeConf FreeVars
 
+instance Semigroup FreeT where
+  (<>) = liftA2 mappend
+
 instance Monoid FreeT where
   mempty  = pure mempty
-  mappend = liftA2 mappend
+  mappend = (<>)
   mconcat = mconcat <.> sequence
 
 -- | Base case: a variable.
@@ -236,8 +242,12 @@
 
 -- | Going under a binder.
 bind :: FreeT -> FreeT
-bind = local $ \ e -> e { fcContext = 1 + fcContext e }
+bind = bind' 1
 
+-- | Going under n binders.
+bind' :: Nat -> FreeT -> FreeT
+bind' n = local $ \ e -> e { fcContext = n + fcContext e }
+
 class Free a where
   freeVars'   :: a -> FreeT
 
@@ -252,7 +262,7 @@
       -- we cannot query whether we are dealing with a data/record (strongly r.)
       -- or a definition by pattern matching (weakly rigid)
       -- thus, we approximate, losing that x = List x is unsolvable
-    Con c ts   -> underConstructor c <$> freeVars' ts
+    Con c _ ts -> underConstructor c <$> freeVars' ts
     -- Pi is not guarding, since we cannot prove that A ≡ B → A is impossible.
     -- Even as we do not permit infinite type expressions,
     -- we cannot prove their absence (as Set is not inductive).
@@ -326,13 +336,8 @@
   freeVars' EmptyTel          = mempty
   freeVars' (ExtendTel a tel) = freeVars' (a, tel)
 
-instance Free ClauseBody where
-  freeVars' (Body t)   = freeVars' t
-  freeVars' (Bind b)   = freeVars' b
-  freeVars'  NoBody    = mempty
-
 instance Free Clause where
-  freeVars' = freeVars' . clauseBody
+  freeVars' cl = bind' (size $ clauseTel cl) $ freeVars' $ clauseBody cl
 
 freeIn :: Free a => Nat -> a -> Bool
 freeIn v t = v `Set.member` allVars (freeVars t)
diff --git a/src/full/Agda/TypeChecking/Free/Tests.hs b/src/full/Agda/TypeChecking/Free/Tests.hs
deleted file mode 100644
--- a/src/full/Agda/TypeChecking/Free/Tests.hs
+++ /dev/null
@@ -1,118 +0,0 @@
-{-# LANGUAGE CPP                       #-}
-{-# LANGUAGE DeriveDataTypeable        #-}
-{-# LANGUAGE DeriveFoldable            #-}
-{-# LANGUAGE DeriveFunctor             #-}
-{-# LANGUAGE DeriveTraversable         #-}
-{-# LANGUAGE NoMonomorphismRestriction #-}
-{-# LANGUAGE ScopedTypeVariables       #-}
-{-# LANGUAGE TemplateHaskell           #-}
-
-#if __GLASGOW_HASKELL__ >= 710
-{-# LANGUAGE FlexibleContexts #-}
-#endif
-
-{-# OPTIONS_GHC -fno-warn-missing-signatures #-}
-
--- | Tests for free variable computations.
-
-module Agda.TypeChecking.Free.Tests (tests) where
-
-import qualified Data.IntMap as Map
-
-import Test.QuickCheck
-
-import Agda.Syntax.Common
-import Agda.Syntax.Internal
-
-import Agda.TypeChecking.Free.Lazy hiding (FlexRig(..))
-import qualified Agda.TypeChecking.Free.Lazy as Free
-
-import qualified Agda.TypeChecking.Free.Old as Old
-
-import Agda.TypeChecking.Free (freeIn)
-import qualified Agda.TypeChecking.Free as New
-
-import Agda.TypeChecking.Test.Generators
-import Agda.Utils.TestHelpers
-
--- * Properties of 'FlexRig'
-
--- | Ensure the correct linear order is derived.
-
---prop_FlexRig_min = minBound == Free.Flexible
-
-prop_FlexRig_order = strictlyAscending
-  [ Free.Flexible [], Free.WeaklyRigid, Free.Unguarded, Free.StronglyRigid ]
-
-strictlyAscending l = and $ zipWith (<) l $ tail l
-
--- ** 'composeFlexRig' forms an idempotent commutative monoid with
--- unit 'Unguarded' and zero 'Flexible'
-
-prop_composeFlexRig_associative = associative composeFlexRig
-prop_composeFlexRig_commutative = commutative composeFlexRig
-prop_composeFlexRig_idempotent  = idempotent  composeFlexRig
-prop_composeFlexRig_zero = isZero   (Free.Flexible []) composeFlexRig
-prop_composeFlexRig_unit = identity Free.Unguarded     composeFlexRig
-
-prop_FlexRig_distributive = distributive composeFlexRig max
-
--- Not true (I did not expect it to be true, just for sanity I checked):
--- prop_FlexRig_distributive' = distributive max composeFlexRig
-
--- ** 'maxVarOcc'
-
-prop_maxVarOcc_top = isZero   topVarOcc maxVarOcc
-prop_maxVarOcc_bot = identity botVarOcc maxVarOcc
-
--- * Unit tests
-
-prop_freeIn = all (0 `freeIn`)
-  [ var 0
-  , Lam defaultArgInfo $ Abs "x" $ var 1
-  , Sort $ varSort 0
-  ]
-
--- * Conformance with old implementation
-
-prop_old_freeVars_Pi = same_freeVars ty
-
-same_freeVars t = new_to_old_FV (New.freeVars t) == Old.freeVars t
-
-old_to_new_FV (Old.FV a b c d e f) = New.FV a b c (Map.fromSet (const []) d) e f
-new_to_old_FV (New.FV a b c d e f) = Old.FV a b c (Map.keysSet d) e f
-
-ty = Pi (defaultDom ab) $ Abs "x" $ El (Type $ Max []) $ var 5
-  where
-    a  = El Prop $
-           var 4
-    b  = El (Type $ Max []) $
-           Sort $ Type $ Max []
-    ab = El (Type $ Max [ClosedLevel 1]) $
-           Pi (defaultDom a) (Abs "x" b)
-
-new_fv_ty :: New.FreeVars
-new_fv_ty = New.freeVars ty
-
-old_fv_ty :: Old.FreeVars
-old_fv_ty = Old.freeVars ty
-
-
-prop_old_freeVars_Term conf x = forAll (genC conf) $ \ (t :: Term) ->
-   same_freeVars t
-
-prop_old_freeIn_Term conf x = forAll (genC conf) $ \ (t :: Term) ->
-   New.freeIn x t == Old.freeIn x t
-prop_old_freeIn_Type conf x = forAll (genC conf) $ \ (t :: Type) ->
-   New.freeIn x t == Old.freeIn x t
-
-
--- Template Haskell hack to make the following $quickCheckAll work
--- under ghc-7.8.
-return [] -- KEEP!
-
--- | All tests as collected by 'quickCheckAll'.
-tests :: IO Bool
-tests = do
-  putStrLn "Agda.TypeChecking.Free.Tests"
-  $quickCheckAll
diff --git a/src/full/Agda/TypeChecking/Implicit.hs b/src/full/Agda/TypeChecking/Implicit.hs
--- a/src/full/Agda/TypeChecking/Implicit.hs
+++ b/src/full/Agda/TypeChecking/Implicit.hs
@@ -1,5 +1,4 @@
 {-# LANGUAGE CPP #-}
-{-# LANGUAGE PatternGuards #-}
 
 {-| Functions for inserting implicit arguments at the right places.
 -}
@@ -25,37 +24,68 @@
 
 -- | @implicitArgs n expand eti t@ generates up to @n@ implicit arguments
 --   metas (unbounded if @n<0@), as long as @t@ is a function type
---   and @expand@ holds on the hiding info of its domain. If @eti@ is
---   @ExplicitToInstance@, then explicit arguments are considered as instance
---   arguments.
+--   and @expand@ holds on the hiding info of its domain.
+--
+--   If explicit arguments are to be inserted as well, they are
+--   inserted as instance arguments (used for recursive instance search).
+
 implicitArgs :: Int -> (Hiding -> Bool) -> Type -> TCM (Args, Type)
 implicitArgs n expand t = mapFst (map (fmap namedThing)) <$> do
   implicitNamedArgs n (\ h x -> expand h) t
 
 -- | @implicitNamedArgs n expand eti t@ generates up to @n@ named implicit arguments
 --   metas (unbounded if @n<0@), as long as @t@ is a function type
---   and @expand@ holds on the hiding and name info of its domain. If @eti@ is
---   @ExplicitToInstance@, then explicit arguments are considered as instance
---   arguments.
+--   and @expand@ holds on the hiding and name info of its domain.
+--
+--   If explicit arguments are to be inserted as well, they are
+--   inserted as instance arguments (used for recursive instance search).
+
 implicitNamedArgs :: Int -> (Hiding -> ArgName -> Bool) -> Type -> TCM (NamedArgs, Type)
 implicitNamedArgs 0 expand t0 = return ([], t0)
 implicitNamedArgs n expand t0 = do
     t0' <- reduce t0
     case ignoreSharing $ unEl t0' of
       Pi (Dom info a) b | let x = absName b, expand (getHiding info) x -> do
-          when (getHiding info /= Hidden) $
+          info' <- if getHiding info == Hidden then return info else do
             reportSDoc "tc.term.args.ifs" 15 $
-            text "inserting instance meta for type" <+> prettyTCM a
-          v  <- applyRelevanceToContext (getRelevance info) $
-                newMeta (getHiding info) (argNameToString x) a
+              text "inserting instance meta for type" <+> prettyTCM a
+            return $ setHiding Instance info
+          (_, v) <- newMetaArg info' x a
           let narg = Arg info (Named (Just $ unranged x) v)
           mapFst (narg :) <$> implicitNamedArgs (n-1) expand (absApp b v)
       _ -> return ([], t0')
+
+-- | Create a metavariable according to the 'Hiding' info.
+
+newMetaArg
+  :: ArgInfo   -- ^ Kind/relevance of meta.
+  -> ArgName   -- ^ Name suggestion for meta.
+  -> Type      -- ^ Type of meta.
+  -> TCM (MetaId, Term)  -- ^ The created meta as id and as term.
+newMetaArg info x a = do
+  applyRelevanceToContext (getRelevance info) $
+    newMeta (getHiding info) (argNameToString x) a
   where
-    newMeta :: Hiding -> String -> Type -> TCM Term
-    newMeta Hidden   = newNamedValueMeta RunMetaOccursCheck
-    newMeta Instance = newIFSMeta
-    newMeta NotHidden = newIFSMeta
+    newMeta :: Hiding -> String -> Type -> TCM (MetaId, Term)
+    newMeta Instance  = newIFSMeta
+    newMeta Hidden    = newNamedValueMeta RunMetaOccursCheck
+    newMeta NotHidden = newNamedValueMeta RunMetaOccursCheck
+
+-- | Create a questionmark according to the 'Hiding' info.
+
+newInteractionMetaArg
+  :: ArgInfo   -- ^ Kind/relevance of meta.
+  -> ArgName   -- ^ Name suggestion for meta.
+  -> Type      -- ^ Type of meta.
+  -> TCM (MetaId, Term)  -- ^ The created meta as id and as term.
+newInteractionMetaArg info x a = do
+  applyRelevanceToContext (getRelevance info) $
+    newMeta (getHiding info) (argNameToString x) a
+  where
+    newMeta :: Hiding -> String -> Type -> TCM (MetaId, Term)
+    newMeta Instance  = newIFSMeta
+    newMeta Hidden    = newNamedValueMeta' DontRunMetaOccursCheck
+    newMeta NotHidden = newNamedValueMeta' DontRunMetaOccursCheck
 
 ---------------------------------------------------------------------------
 
diff --git a/src/full/Agda/TypeChecking/Injectivity.hs b/src/full/Agda/TypeChecking/Injectivity.hs
--- a/src/full/Agda/TypeChecking/Injectivity.hs
+++ b/src/full/Agda/TypeChecking/Injectivity.hs
@@ -1,5 +1,4 @@
 {-# LANGUAGE CPP           #-}
-{-# LANGUAGE TupleSections #-}
 
 module Agda.TypeChecking.Injectivity where
 
@@ -31,8 +30,9 @@
 import Agda.TypeChecking.Polarity
 
 import Agda.Utils.Except ( MonadError(catchError, throwError) )
-import Agda.Utils.List
 import Agda.Utils.Functor
+import Agda.Utils.List
+import Agda.Utils.Maybe
 import Agda.Utils.Permutation
 
 #include "undefined.h"
@@ -45,26 +45,28 @@
   v <- ignoreBlocking <$> reduceHead v
   case ignoreSharing v of
     Def f _ -> do
+      let yes = return $ Just $ ConsHead f
+          no  = return $ Nothing
       def <- theDef <$> do ignoreAbstractMode $ getConstInfo f
         -- Andreas, 2013-02-18
         -- if we do not ignoreAbstractMode here, abstract Functions get turned
         -- into Axioms, but we want to distinguish these.
       case def of
-        Datatype{}  -> return (Just $ ConsHead f)
-        Record{}    -> return (Just $ ConsHead f)
+        Datatype{}  -> yes
+        Record{}    -> yes
         Axiom{}     -> do
           reportSLn "tc.inj.axiom" 50 $ "headSymbol: " ++ show f ++ " is an Axiom."
           -- Don't treat axioms in the current mutual block
           -- as constructors (they might have definitions we
           -- don't know about yet).
-          fs <- lookupMutualBlock =<< currentOrFreshMutualBlock
-          if Set.member f fs
-            then return Nothing
-            else return (Just $ ConsHead f)
-        Function{}    -> return Nothing
-        Primitive{}   -> return Nothing
+          caseMaybeM (asks envMutualBlock) yes $ \ mb -> do
+            fs <- mutualNames <$> lookupMutualBlock mb
+            if Set.member f fs then no else yes
+        Function{}    -> no
+        Primitive{}   -> no
         Constructor{} -> __IMPOSSIBLE__
-    Con c _ -> return (Just $ ConsHead $ conName c)
+        AbstractDefn  -> __IMPOSSIBLE__
+    Con c _ _ -> return (Just $ ConsHead $ conName c)
     Sort _  -> return (Just SortHead)
     Pi _ _  -> return (Just PiHead)
     Lit _   -> return Nothing -- handle literal heads as well? can't think of
@@ -86,7 +88,7 @@
     -- Is it pointless to use injectivity for this function?
     pointLess []      = True
     pointLess (_:_:_) = False
-    pointLess [cl] = not $ any (properlyMatching . unArg) $ clausePats cl
+    pointLess [cl] = not $ any (properlyMatching . namedArg) $ namedClausePats cl
         -- Andreas, 2014-06-12
         -- If we only have record patterns, it is also pointless.
         -- We need at least one proper match.
@@ -95,7 +97,7 @@
   -- Extract the head symbol of the rhs of each clause (skip absurd clauses)
   es <- catMaybes <$> do
     forM cs $ \ c -> do             -- produces a list ...
-      mapM ((,c) <.> headSymbol) $ getBodyUnraised c -- ... of maybes
+      mapM ((,c) <.> headSymbol) $ clauseBody c -- ... of maybes
   let (hs, ps) = unzip es
   reportSLn "tc.inj.check" 40 $ "  right hand sides: " ++ show hs
   if all isJust hs && distinct hs
@@ -105,7 +107,7 @@
       reportSDoc "tc.inj.check" 30 $ nest 2 $ vcat $
         for (Map.toList inv) $ \ (h, c) ->
           text (show h) <+> text "-->" <+>
-          fsep (punctuate comma $ map (prettyTCM . unArg) $ clausePats c)
+          fsep (punctuate comma $ map (prettyTCM . namedArg) $ namedClausePats c)
       return $ Inverse inv
     else return NotInjective
 
@@ -183,7 +185,7 @@
       Nothing -> typeError $ UnequalTerms cmp u v a
       Just cl@Clause{ clauseTel  = tel } -> maybeAbort $ do
           let ps   = clausePats cl
-              perm = clausePerm cl
+              perm = fromMaybe __IMPOSSIBLE__ $ clausePerm cl
           -- These are what dot patterns should be instantiated at
           ms <- map unArg <$> newTelMeta tel
           reportSDoc "tc.inj.invert" 20 $ vcat
@@ -249,13 +251,13 @@
       sub <- ask
       return $ applySubst sub v
 
-    metaElim (Arg _ (ProjP p)) = return $ Proj p
+    metaElim (Arg _ (ProjP o p))  = lift $ lift $ Proj o <$> getOriginalProjection p
     metaElim (Arg info p)         = Apply . Arg info <$> metaPat p
 
     metaArgs args = mapM (traverse $ metaPat . namedThing) args
 
     metaPat (DotP v)         = dotP v
     metaPat (VarP _)         = nextMeta
-    metaPat (ConP c mt args) = Con c <$> metaArgs args
+    metaPat (ConP c mt args) = Con c (fromConPatternInfo mt) <$> metaArgs args
     metaPat (LitP l)         = return $ Lit l
     metaPat ProjP{}          = __IMPOSSIBLE__
diff --git a/src/full/Agda/TypeChecking/InstanceArguments.hs b/src/full/Agda/TypeChecking/InstanceArguments.hs
--- a/src/full/Agda/TypeChecking/InstanceArguments.hs
+++ b/src/full/Agda/TypeChecking/InstanceArguments.hs
@@ -1,13 +1,9 @@
 {-# LANGUAGE CPP #-}
-{-# LANGUAGE LambdaCase #-}
-
-#if __GLASGOW_HASKELL__ >= 710
-{-# LANGUAGE FlexibleContexts #-}
-#endif
+{-# LANGUAGE NondecreasingIndentation #-}
 
 module Agda.TypeChecking.InstanceArguments where
 
-import Control.Applicative
+import Control.Applicative hiding (empty)
 import Control.Monad.Reader
 import Control.Monad.State
 import qualified Data.Map as Map
@@ -24,6 +20,7 @@
 import Agda.TypeChecking.Monad.Builtin
 import Agda.TypeChecking.Pretty
 import Agda.TypeChecking.Reduce
+import Agda.TypeChecking.Records
 import Agda.TypeChecking.Substitute
 import Agda.TypeChecking.Telescope
 import Agda.TypeChecking.Free
@@ -38,6 +35,7 @@
 import Agda.Utils.Monad
 import Agda.Utils.Functor
 import Agda.Utils.Pretty (prettyShow)
+import Agda.Utils.Null (empty)
 
 #include "undefined.h"
 import Agda.Utils.Impossible
@@ -61,26 +59,58 @@
     getContextVars :: TCM [Candidate]
     getContextVars = do
       ctx <- getContext
-      let vars = [ Candidate (var i) (raise (i + 1) t) ExplicitStayExplicit
+      let vars = [ Candidate (var i) (raise (i + 1) t) ExplicitStayExplicit (argInfoOverlappable info)
                  | (Dom info (x, t), i) <- zip ctx [0..]
                  , getHiding info == Instance
                  , not (unusableRelevance $ argInfoRelevance info)
                  ]
+
+      -- {{}}-fields of variables are also candidates
+      let cxtAndTypes = [ (var i, snd $ unDom $ raise (i + 1) t) | (i, t) <- zip [0..] ctx ]
+      fields <- concat <$> mapM instanceFields (reverse cxtAndTypes)
+      reportSDoc "tc.instance.fields" 30 $ text "instance field candidates" $$ nest 2 (vcat
+        [ sep [ (if overlap then text "overlap" else empty) <+> prettyTCM v <+> text ":"
+              , nest 2 $ prettyTCM t ] | Candidate v t _ overlap <- fields ])
+
       -- get let bindings
       env <- asks envLetBindings
       env <- mapM (getOpen . snd) $ Map.toList env
-      let lets = [ Candidate v t ExplicitStayExplicit
+      let lets = [ Candidate v t ExplicitStayExplicit False
                  | (v, Dom info t) <- env
                  , getHiding info == Instance
                  , not (unusableRelevance $ argInfoRelevance info)
                  ]
-      return $ vars ++ lets
+      return $ vars ++ fields ++ lets
 
+    etaExpand etaOnce t =
+      isEtaRecordType t >>= \case
+        Nothing | etaOnce -> do
+          isRecordType t >>= \case
+            Nothing         -> return Nothing
+            Just (r, vs, _) -> do
+              m <- currentModule
+              -- Are we inside the record module? If so it's safe and desirable
+              -- to eta-expand once (issue #2320).
+              if qnameToList r `isPrefixOf` mnameToList m
+                then return (Just (r, vs))
+                else return Nothing
+        r -> return r
+
+    instanceFields = instanceFields' True
+    instanceFields' etaOnce (v, t) =
+      caseMaybeM (etaExpand etaOnce =<< reduce t) (return []) $ \ (r, pars) -> do
+        (tel, args) <- forceEtaExpandRecord r pars v
+        let types = map unDom $ applySubst (parallelS $ reverse $ map unArg args) (flattenTel tel)
+        fmap concat $ forM (zip args types) $ \ (arg, t) ->
+          ([ Candidate (unArg arg) t ExplicitStayExplicit (argInfoOverlappable $ argInfo arg)
+           | getHiding arg == Instance ] ++) <$>
+          instanceFields' False (unArg arg, t)
+
     getScopeDefs :: QName -> TCM [Candidate]
     getScopeDefs n = do
       instanceDefs <- getInstanceDefs
       rel          <- asks envRelevance
-      let qs = fromMaybe [] $ Map.lookup n instanceDefs
+      let qs = maybe [] Set.toList $ Map.lookup n instanceDefs
       catMaybes <$> mapM (candidate rel) qs
 
     candidate :: Relevance -> QName -> TCM (Maybe Candidate)
@@ -97,15 +127,15 @@
           args <- freeVarsToApply q
           let v = case theDef def of
                -- drop parameters if it's a projection function...
-               Function{ funProjection = Just p } -> projDropPars p `apply` args
+               Function{ funProjection = Just p } -> projDropParsApply p ProjSystem args
                -- Andreas, 2014-08-19: constructors cannot be declared as
                -- instances (at least as of now).
                -- I do not understand why the Constructor case is not impossible.
                -- Ulf, 2014-08-20: constructors are always instances.
-               Constructor{ conSrcCon = c }       -> Con c []
+               Constructor{ conSrcCon = c }       -> Con c ConOSystem []
                _                                  -> Def q $ map Apply args
           inScope <- isNameInScope q <$> getScope
-          return $ Candidate v t ExplicitToInstance <$ guard inScope
+          return $ Candidate v t ExplicitToInstance False <$ guard inScope
       where
         -- unbound constant throws an internal error
         handle (TypeError _ (Closure {clValue = InternalError _})) = return Nothing
@@ -151,15 +181,17 @@
 findInScope' m cands = ifM (isFrozen m) (return (Just (cands, Nothing))) $ do
   -- Andreas, 2013-12-28 issue 1003:
   -- If instance meta is already solved, simply discard the constraint.
-  ifM (isInstantiatedMeta m) (return Nothing) $ do
+  -- Ulf, 2016-12-06 issue 2325: But only if *fully* instantiated.
+  ifM (isFullyInstantiatedMeta m) (return Nothing) $ do
     -- Andreas, 2015-02-07: New metas should be created with range of the
     -- current instance meta, thus, we set the range.
     mv <- lookupMeta m
     setCurrentRange mv $ do
       reportSLn "tc.instance" 15 $
         "findInScope 2: constraint: " ++ prettyShow m ++ "; candidates left: " ++ show (length cands)
-      reportSDoc "tc.instance" 70 $ nest 2 $ vcat
-        [ sep [ prettyTCM v <+> text ":", nest 2 $ prettyTCM t ] | Candidate v t _ <- cands ]
+      reportSDoc "tc.instance" 60 $ nest 2 $ vcat
+        [ sep [ (if overlap then text "overlap" else empty) <+> prettyTCM v <+> text ":"
+              , nest 2 $ prettyTCM t ] | Candidate v t _ overlap <- cands ]
       t <- normalise =<< getMetaTypeInContext m
       insidePi t $ \ t -> do
       reportSDoc "tc.instance" 15 $ text "findInScope 3: t =" <+> prettyTCM t
@@ -167,7 +199,9 @@
 
       -- If one of the arguments of the typeclass is a meta which is not rigidly
       -- constrained, then don’t do anything because it may loop.
-      ifJustM (areThereNonRigidMetaArguments (unEl t)) (\ m -> return (Just (cands, Just m))) $ do
+      ifJustM (areThereNonRigidMetaArguments (unEl t)) (\ m -> do
+        reportSLn "tc.instance" 15 "aborting due to non-rigidly constrained metas"
+        return (Just (cands, Just m))) $ do
 
         mcands <- checkCandidates m t cands
         debugConstraints
@@ -178,7 +212,7 @@
               text "findInScope 5: not a single candidate found..."
             typeError $ IFSNoCandidateInScope t
 
-          Just [Candidate term t' _] -> do
+          Just [Candidate term t' _ _] -> do
             reportSDoc "tc.instance" 15 $ vcat
               [ text "findInScope 5: solved by instance search using the only candidate"
               , nest 2 $ prettyTCM term
@@ -203,7 +237,7 @@
 insidePi :: Type -> (Type -> TCM a) -> TCM a
 insidePi t ret =
   case ignoreSharing $ unEl t of
-    Pi a b     -> addContext (absName b, a) $ insidePi (unAbs b) ret
+    Pi a b     -> addContext' (absName b, a) $ insidePi (unAbs b) ret
     Def{}      -> ret t
     Var{}      -> ret t
     Sort{}     -> __IMPOSSIBLE__
@@ -270,7 +304,9 @@
     Def n args -> do
       TelV tel _ <- telView . defType =<< getConstInfo n
       let varOccs EmptyTel           = []
-          varOccs (ExtendTel _ btel) = occurrence 0 tel : varOccs tel
+          varOccs (ExtendTel a btel)
+            | getRelevance a == Irrelevant = WeaklyRigid : varOccs tel  -- #2171: ignore irrelevant arguments
+            | otherwise                    = occurrence 0 tel : varOccs tel
             where tel = unAbs btel
           rigid StronglyRigid = True
           rigid Unguarded     = True
@@ -293,7 +329,7 @@
   where
     areThereNonRigidMetaArgs :: Elims -> TCM (Maybe MetaId)
     areThereNonRigidMetaArgs []             = return Nothing
-    areThereNonRigidMetaArgs (Proj _ : xs)  = areThereNonRigidMetaArgs xs
+    areThereNonRigidMetaArgs (Proj{}  : xs) = areThereNonRigidMetaArgs xs
     areThereNonRigidMetaArgs (Apply x : xs) = do
       ifJustM (isNonRigidMeta $ unArg x) (return . Just) (areThereNonRigidMetaArgs xs)
 
@@ -302,7 +338,7 @@
       case ignoreSharing v of
         Def _ es  -> areThereNonRigidMetaArgs es
         Var _ es  -> areThereNonRigidMetaArgs es
-        Con _ vs  -> areThereNonRigidMetaArgs (map Apply vs)
+        Con _ _ vs-> areThereNonRigidMetaArgs (map Apply vs)
         MetaV i _ -> ifM (isRigid i) (return Nothing) $ do
                       -- Ignore unconstrained level and size metas (#1865)
                       Def lvl [] <- ignoreSharing <$> primLevel
@@ -333,7 +369,13 @@
         a  <- instantiateFull =<< (`piApplyM` ctxArgs) =<< getMetaType m
         return (ok, v, a)
   result <- mapM (\c -> do bs <- localTCStateSaving (tryC c); return (c, bs)) cands
-  let result' = [ (c, v, a, s) | (c, ((r, v, a), s)) <- result, r /= No ]
+
+  -- Check that there aren't any hard failures
+  case [ err | (_, ((HellNo err, _, _), _)) <- result ] of
+    err : _ -> throwError err
+    []      -> return ()
+
+  let result' = [ (c, v, a, s) | (c, ((r, v, a), s)) <- result, not (isNo r) ]
       noMaybes = null [ Maybe | (_, ((Maybe, _, _), _)) <- result ]
             -- It's not safe to compare maybes for equality because they might
             -- not have instantiated at all.
@@ -345,9 +387,16 @@
 -- Drop all candidates which are judgmentally equal to the first one.
 -- This is sufficient to reduce the list to a singleton should all be equal.
 dropSameCandidates :: MetaId -> [(Candidate, Term, Type, a)] -> TCM [(Candidate, Term, Type, a)]
-dropSameCandidates m cands = do
+dropSameCandidates m cands0 = do
   metas <- Set.fromList . Map.keys <$> getMetaStore
   let freshMetas x = not $ Set.null $ Set.difference (Set.fromList $ allMetas x) metas
+
+  -- Take overlappable candidates into account
+  let cands =
+        case partition (\ (c, _, _, _) -> candidateOverlappable c) cands0 of
+          (cand : _, []) -> [cand]  -- only overlappable candidates: pick the first one
+          _              -> cands0  -- otherwise require equality
+
   reportSDoc "tc.instance" 50 $ vcat
     [ text "valid candidates:"
     , nest 2 $ vcat [ if freshMetas (v, a) then text "(redacted)" else
@@ -372,9 +421,13 @@
                              {- else -} (\ _ -> return False)
                              `catchError` (\ _ -> return False)
 
-data YesNoMaybe = Yes | No | Maybe
-  deriving (Show, Eq)
+data YesNoMaybe = Yes | No | Maybe | HellNo TCErr
+  deriving (Show)
 
+isNo :: YesNoMaybe -> Bool
+isNo No = True
+isNo _  = False
+
 -- | Given a meta @m@ of type @t@ and a list of candidates @cands@,
 -- @checkCandidates m t cands@ returns a refined list of valid candidates.
 checkCandidates :: MetaId -> Type -> [Candidate] -> TCM (Maybe [Candidate])
@@ -385,23 +438,32 @@
     reportSDoc "tc.instance.candidates" 20 $ nest 2 $ text "target:" <+> prettyTCM t
     reportSDoc "tc.instance.candidates" 20 $ nest 2 $ vcat
       [ text "candidates"
-      , vcat [ text "-" <+> prettyTCM v <+> text ":" <+> prettyTCM t | Candidate v t _ <- cands ] ]
+      , vcat [ text "-" <+> (if overlap then text "overlap" else empty) <+> prettyTCM v <+> text ":" <+> prettyTCM t
+             | Candidate v t _ overlap <- cands ] ]
     cands' <- filterResetingState m cands (checkCandidateForMeta m t)
     reportSDoc "tc.instance.candidates" 20 $ nest 2 $ vcat
       [ text "valid candidates"
-      , vcat [ text "-" <+> prettyTCM v <+> text ":" <+> prettyTCM t | Candidate v t _ <- cands' ] ]
+      , vcat [ text "-" <+> (if overlap then text "overlap" else empty) <+> prettyTCM v <+> text ":" <+> prettyTCM t
+             | Candidate v t _ overlap <- cands' ] ]
     return cands'
   where
     anyMetaTypes :: [Candidate] -> TCM Bool
     anyMetaTypes [] = return False
-    anyMetaTypes (Candidate _ a _ : cands) = do
+    anyMetaTypes (Candidate _ a _ _ : cands) = do
       a <- instantiate a
       case ignoreSharing $ unEl a of
         MetaV{} -> return True
         _       -> anyMetaTypes cands
 
+    checkDepth :: Term -> Type -> TCM YesNoMaybe -> TCM YesNoMaybe
+    checkDepth c a k = locally eInstanceDepth succ $ do
+      d        <- view eInstanceDepth
+      maxDepth <- maxInstanceSearchDepth
+      when (d > maxDepth) $ typeError $ InstanceSearchDepthExhausted c a maxDepth
+      k
+
     checkCandidateForMeta :: MetaId -> Type -> Candidate -> TCM YesNoMaybe
-    checkCandidateForMeta m t (Candidate term t' eti) = do
+    checkCandidateForMeta m t (Candidate term t' eti _) = checkDepth term t' $ do
       -- Andreas, 2015-02-07: New metas should be created with range of the
       -- current instance meta, thus, we set the range.
       mv <- lookupMeta m
@@ -458,11 +520,20 @@
               (return Yes)
               (\ _ -> Maybe <$ reportSLn "tc.instance" 50 "assignment inconclusive")
 
+          hardFailure :: TCErr -> Bool
+          hardFailure (TypeError _ err) =
+            case clValue err of
+              InstanceSearchDepthExhausted{} -> True
+              _                              -> False
+          hardFailure _ = False
+
           handle :: TCErr -> TCM YesNoMaybe
-          handle err = do
-            reportSDoc "tc.instance" 50 $
-              text "assignment failed:" <+> prettyTCM err
-            return No
+          handle err
+            | hardFailure err = return $ HellNo err
+            | otherwise       = do
+              reportSDoc "tc.instance" 50 $
+                text "assignment failed:" <+> prettyTCM err
+              return No
 
 isIFSConstraint :: Constraint -> Bool
 isIFSConstraint FindInScope{} = True
@@ -479,10 +550,10 @@
 applyDroppingParameters t vs = do
   let fallback = return $ t `apply` vs
   case ignoreSharing t of
-    Con c [] -> do
+    Con c ci [] -> do
       def <- theDef <$> getConInfo c
       case def of
-        Constructor {conPars = n} -> return $ Con c (genericDrop n vs)
+        Constructor {conPars = n} -> return $ Con c ci (genericDrop n vs)
         _ -> __IMPOSSIBLE__
     Def f [] -> do
       mp <- isProjection f
@@ -490,6 +561,6 @@
         Just Projection{projIndex = n} -> do
           case drop n vs of
             []     -> return t
-            u : us -> (`apply` us) <$> applyDef f u
+            u : us -> (`apply` us) <$> applyDef ProjPrefix f u
         _ -> fallback
     _ -> fallback
diff --git a/src/full/Agda/TypeChecking/Irrelevance.hs b/src/full/Agda/TypeChecking/Irrelevance.hs
--- a/src/full/Agda/TypeChecking/Irrelevance.hs
+++ b/src/full/Agda/TypeChecking/Irrelevance.hs
@@ -9,16 +9,13 @@
 
 import qualified Data.Map as Map
 
-import Agda.Interaction.Options hiding (tests)
+import Agda.Interaction.Options
 
 import Agda.Syntax.Common
 import Agda.Syntax.Internal
 
 import Agda.TypeChecking.Monad
 
-import Agda.Utils.QuickCheck
-import Agda.Utils.TestHelpers
-
 -- | data 'Relevance'
 --   see "Agda.Syntax.Common".
 
@@ -48,17 +45,13 @@
   allowed <- optExperimentalIrrelevance <$> pragmaOptions
   verboseBracket "tc.irr" 20 "workOnTypes" $ workOnTypes' allowed cont
 
--- | Call me if --experimental-irrelevance is set.
-doWorkOnTypes :: TCM a -> TCM a
-doWorkOnTypes = verboseBracket "tc.irr" 20 "workOnTypes" . workOnTypes' True
-
 -- | Internal workhorse, expects value of --experimental-irrelevance flag
 --   as argument.
 workOnTypes' :: Bool -> TCM a -> TCM a
-workOnTypes' allowed cont =
-  if allowed then
-    liftTCM $ modifyContext (modifyContextEntries $ mapRelevance $ irrToNonStrict) cont
-   else cont
+workOnTypes' experimental cont = modifyContext (modifyContextEntries $ mapRelevance f) cont
+  where
+    f | experimental = irrToNonStrict
+      | otherwise    = nonStrictToRel
 
 -- | (Conditionally) wake up irrelevant variables and make them relevant.
 --   For instance,
@@ -84,18 +77,3 @@
 --   may be used, so they are awoken before type checking the argument.
 wakeIrrelevantVars :: TCM a -> TCM a
 wakeIrrelevantVars = applyRelevanceToContext Irrelevant
-
-
-------------------------------------------------------------------------
--- * Tests
-------------------------------------------------------------------------
-
-prop_galois :: Relevance -> Relevance -> Relevance -> Bool
-prop_galois r x y =
-  x `moreRelevant` (r `composeRelevance` y) ==
-  (r `inverseComposeRelevance` x) `moreRelevant` y
-
-tests :: IO Bool
-tests = runTests "Agda.TypeChecking.Irrelevance"
-  [ quickCheck' prop_galois
-  ]
diff --git a/src/full/Agda/TypeChecking/Level.hs b/src/full/Agda/TypeChecking/Level.hs
--- a/src/full/Agda/TypeChecking/Level.hs
+++ b/src/full/Agda/TypeChecking/Level.hs
@@ -3,7 +3,9 @@
 module Agda.TypeChecking.Level where
 
 import Control.Applicative
+import Data.Maybe
 import Data.List as List
+import Data.Traversable (Traversable,traverse)
 
 import Agda.Syntax.Common
 import Agda.Syntax.Internal
@@ -14,6 +16,7 @@
 import Agda.TypeChecking.Monad.Builtin
 
 import Agda.Utils.Except ( MonadError(catchError) )
+import Agda.Utils.Monad ( tryMaybe )
 
 #include "undefined.h"
 import Agda.Utils.Impossible
@@ -29,10 +32,6 @@
   , zeroName :: QName
   }
 
--- | Get the 'primLevel as a 'Term', if present.
-mlevel :: TCM (Maybe Term)
-mlevel = liftTCM $ (Just <$> primLevel) `catchError` \_ -> return Nothing
-
 -- | Get the 'primLevel' as a 'Type'.
 levelType :: TCM Type
 levelType = El (mkType 0) <$> primLevel
@@ -40,13 +39,15 @@
 levelSucFunction :: TCM (Term -> Term)
 levelSucFunction = apply1 <$> primLevelSuc
 
-builtinLevelKit :: TCM (Maybe LevelKit)
-builtinLevelKit = liftTCM $ do
-    level@(Def l []) <- ignoreSharing <$> primLevel
-    zero@(Def z [])  <- ignoreSharing <$> primLevelZero
-    suc@(Def s [])   <- ignoreSharing <$> primLevelSuc
-    max@(Def m [])   <- ignoreSharing <$> primLevelMax
-    return $ Just $ LevelKit
+{-# SPECIALIZE builtinLevelKit :: TCM LevelKit #-}
+{-# SPECIALIZE builtinLevelKit :: ReduceM LevelKit #-}
+builtinLevelKit :: (HasBuiltins m) => m LevelKit
+builtinLevelKit = do
+    level@(Def l []) <- ignoreSharing . fromMaybe __IMPOSSIBLE__ <$> getBuiltin' builtinLevel
+    zero@(Def z [])  <- ignoreSharing . fromMaybe __IMPOSSIBLE__ <$> getBuiltin' builtinLevelZero
+    suc@(Def s [])   <- ignoreSharing . fromMaybe __IMPOSSIBLE__ <$> getBuiltin' builtinLevelSuc
+    max@(Def m [])   <- ignoreSharing . fromMaybe __IMPOSSIBLE__ <$> getBuiltin' builtinLevelMax
+    return $ LevelKit
       { lvlType  = level
       , lvlSuc   = \ a -> suc `apply1` a
       , lvlMax   = \ a b -> max `applys` [a, b]
@@ -56,33 +57,30 @@
       , maxName  = m
       , zeroName = z
       }
-  `catchError` \_ -> return Nothing
 
 -- | Raises an error if no level kit is available.
-
 requireLevels :: TCM LevelKit
-requireLevels = do
-  mKit <- builtinLevelKit
-  case mKit of
-    Nothing -> sequence_ [primLevel, primLevelZero, primLevelSuc, primLevelMax] >> __IMPOSSIBLE__
-    Just k  -> return k
+requireLevels = builtinLevelKit
 
-unLevel :: Term -> TCM Term
+{-# SPECIALIZE unLevel :: Term -> TCM Term #-}
+{-# SPECIALIZE unLevel :: Term -> ReduceM Term #-}
+unLevel :: (HasBuiltins m) => Term -> m Term
 unLevel (Level l)  = reallyUnLevelView l
 unLevel (Shared p) = unLevel (derefPtr p)
 unLevel v = return v
 
 {-# SPECIALIZE reallyUnLevelView :: Level -> TCM Term #-}
-reallyUnLevelView :: MonadTCM tcm => Level -> tcm Term
-reallyUnLevelView nv = liftTCM $ do
+{-# SPECIALIZE reallyUnLevelView :: Level -> ReduceM Term #-}
+reallyUnLevelView :: (HasBuiltins m) => Level -> m Term
+reallyUnLevelView nv = do
+  suc <- fromMaybe __IMPOSSIBLE__ <$> getBuiltin' builtinLevelSuc
+  zer <- fromMaybe __IMPOSSIBLE__ <$> getBuiltin' builtinLevelZero
   case nv of
-    Max []              -> primLevelZero
+    Max []              -> return zer
     Max [Plus 0 a]      -> return $ unLevelAtom a
     Max [a]             -> do
-      zer <- primLevelZero
-      suc <- primLevelSuc
       return $ unPlusV zer (apply1 suc) a
-    _ -> (`unlevelWithKit` nv) <$> requireLevels
+    _ -> (`unlevelWithKit` nv) <$> builtinLevelKit
 
 unlevelWithKit :: LevelKit -> Level -> Term
 unlevelWithKit LevelKit{ lvlZero = zer, lvlSuc = suc, lvlMax = max } (Max as) =
@@ -96,16 +94,14 @@
 unPlusV _   suc (Plus n a)      = foldr (.) id (genericReplicate n suc) (unLevelAtom a)
 
 maybePrimCon :: TCM Term -> TCM (Maybe ConHead)
-maybePrimCon prim = liftTCM $ do
-    Con c [] <- prim
-    return (Just c)
-  `catchError` \_ -> return Nothing
+maybePrimCon prim = tryMaybe $ do
+    Con c ci [] <- prim
+    return c
 
 maybePrimDef :: TCM Term -> TCM (Maybe QName)
-maybePrimDef prim = liftTCM $ do
+maybePrimDef prim = tryMaybe $ do
     Def f [] <- prim
-    return (Just f)
-  `catchError` \_ -> return Nothing
+    return f
 
 levelView :: Term -> TCM Level
 levelView a = do
@@ -116,29 +112,23 @@
 
 levelView' :: Term -> ReduceM Level
 levelView' a = do
-  msuc <- (getCon =<<) <$> getBuiltin' builtinLevelSuc
-  mzer <- (getCon =<<) <$> getBuiltin' builtinLevelZero
-  mmax <- (getDef =<<) <$> getBuiltin' builtinLevelMax
+  Def lzero [] <- ignoreSharing . fromMaybe __IMPOSSIBLE__ <$> getBuiltin' builtinLevelZero
+  Def lsuc  [] <- ignoreSharing . fromMaybe __IMPOSSIBLE__ <$> getBuiltin' builtinLevelSuc
+  Def lmax  [] <- ignoreSharing . fromMaybe __IMPOSSIBLE__ <$> getBuiltin' builtinLevelMax
   let view a = do
         a <- reduce' a
         case ignoreSharing a of
           Level l -> return l
-          Con s [arg]
-            | Just s == msuc -> inc <$> view (unArg arg)
-          Con z []
-            | Just z == mzer -> return $ closed 0
+          Def s [Apply arg]
+            | s == lsuc  -> inc <$> view (unArg arg)
+          Def z []
+            | z == lzero -> return $ closed 0
           Def m [Apply arg1, Apply arg2]
-            | Just m == mmax -> levelLub <$> view (unArg arg1) <*> view (unArg arg2)
-          _                  -> mkAtom a
+            | m == lmax  -> levelLub <$> view (unArg arg1) <*> view (unArg arg2)
+          _              -> mkAtom a
   v <- view a
   return v
   where
-    getCon (Con c []) = Just c
-    getCon _          = Nothing
-
-    getDef (Def f []) = Just f
-    getDef _          = Nothing
-
     mkAtom a = do
       b <- reduceB' a
       return $ case ignoreSharing <$> b of
@@ -157,3 +147,12 @@
 
 levelLub :: Level -> Level -> Level
 levelLub (Max as) (Max bs) = levelMax $ as ++ bs
+
+subLevel :: Integer -> Level -> Maybe Level
+subLevel n (Max ls) = Max <$> traverse sub ls
+  where
+    sub :: PlusLevel -> Maybe PlusLevel
+    sub (ClosedLevel j) | j >= n    = Just $ ClosedLevel $ j - n
+                        | otherwise = Nothing
+    sub (Plus j l)      | j >= n    = Just $ Plus (j - n) l
+                        | otherwise = Nothing
diff --git a/src/full/Agda/TypeChecking/LevelConstraints.hs b/src/full/Agda/TypeChecking/LevelConstraints.hs
--- a/src/full/Agda/TypeChecking/LevelConstraints.hs
+++ b/src/full/Agda/TypeChecking/LevelConstraints.hs
@@ -2,39 +2,60 @@
 
 module Agda.TypeChecking.LevelConstraints ( simplifyLevelConstraint ) where
 
-import Agda.Syntax.Common (Nat)
+import Data.List as List
 import Agda.Syntax.Internal
 import Agda.TypeChecking.Monad.Base
 import Agda.TypeChecking.Substitute
-import Agda.Utils.Size
+import Agda.TypeChecking.Free
+import Agda.Utils.Impossible
 
--- | @simplifyLevelConstraint n c cs@ turns an @c@ into an equality
+#include "undefined.h"
+
+-- | @simplifyLevelConstraint c cs@ turns an @c@ into an equality
 --   constraint if it is an inequality constraint and the reverse
---   inequality is contained in @cs@. Number @n@ is the length
---   of the context @c@ is defined in.
-simplifyLevelConstraint :: Int -> Constraint -> Constraints -> Constraint
-simplifyLevelConstraint n new old =
+--   inequality is contained in @cs@.
+--
+--   The constraints doesn't necessarily have to live in the same context, but
+--   they do need to be universally quanitfied over the context. This function
+--   takes care of renaming variables when checking for matches.
+simplifyLevelConstraint :: Constraint -> [Constraint] -> Constraint
+simplifyLevelConstraint new old =
   case inequalities new of
-    [a :=< b] | elem (b' :=< a') leqs -> LevelCmp CmpEq (Max [a]) (Max [b])
-      where (a', b') = raise (waterLevel - n) (a, b)
+    [a :=< b] | any (matchLeq (b :=< a)) leqs -> LevelCmp CmpEq (Max [a]) (Max [b])
     _ -> new
   where
-    -- get the constraints plus their "waterLevels", i.e.,
-    -- length of contexts they are defined in
-    unClosure c = (size (envContext $ clEnv cl), clValue cl)
-      where cl = theConstraint c
-    (ns, ls) = unzip $ map unClosure old
-    -- compute the common water level
-    waterLevel :: Nat
-    waterLevel = maximum (n:ns)
-    -- raise deBruijn indices to largest context to
-    -- enable comparing constraints under different contexts
-    leqs = concatMap inequalities $ zipWith raise (map (waterLevel -) ns) ls
+    leqs = concatMap inequalities old
 
 data Leq = PlusLevel :=< PlusLevel
   deriving (Show, Eq)
 
+-- | Check if two inequality constraints are the same up to variable renaming.
+matchLeq :: Leq -> Leq -> Bool
+matchLeq (a :=< b) (c :=< d)
+  | length xs == length ys = (a, b) == applySubst rho (c, d)
+  | otherwise              = False
+  where
+    free :: Free' a [Int] => a -> [Int]
+    free = nub . runFree ((:[]) . fst) IgnoreNot
+    xs  = free (a, b)
+    ys  = free (c, d)
+    rho = mkSub $ List.sort $ zip ys xs
+    mkSub = go 0
+      where
+        go _ [] = IdS
+        go y ren0@((y', x) : ren)
+          | y == y'   = Var x [] :# go (y + 1) ren
+          | otherwise = Strengthen __IMPOSSIBLE__ $ go (y + 1) ren0
+
+-- | Turn a level constraint into a list of level inequalities, if possible.
+
 inequalities :: Constraint -> [Leq]
+
+inequalities (LevelCmp CmpLeq (Max as) (Max [b])) = map (:=< b) as  -- Andreas, 2016-09-28
+  -- Why was this most natural case missing?
+  -- See test/Succeed/LevelLeqGeq.agda for where it is useful!
+
+-- These are very special cases only, in no way complete:
 inequalities (LevelCmp CmpEq (Max [a, b]) (Max [c]))
   | a == c = [b :=< a]
   | b == c = [a :=< b]
diff --git a/src/full/Agda/TypeChecking/MetaVars.hs b/src/full/Agda/TypeChecking/MetaVars.hs
--- a/src/full/Agda/TypeChecking/MetaVars.hs
+++ b/src/full/Agda/TypeChecking/MetaVars.hs
@@ -1,23 +1,23 @@
-{-# LANGUAGE CPP               #-}
-{-# LANGUAGE FlexibleInstances #-}
-{-# LANGUAGE FlexibleContexts  #-}
-{-# LANGUAGE PatternGuards     #-}
-{-# LANGUAGE RelaxedPolyRec    #-}
-{-# LANGUAGE TupleSections     #-}
+{-# LANGUAGE CPP #-}
+{-# LANGUAGE NondecreasingIndentation #-}
 
 module Agda.TypeChecking.MetaVars where
 
+import Prelude hiding (null)
+
 import Control.Monad.Reader
 
 import Data.Function
-import Data.List hiding (sort)
+import Data.List hiding (sort, null)
 import qualified Data.List as List
 import qualified Data.Map as Map
 import qualified Data.Foldable as Fold
 
+import Agda.Syntax.Abstract.Name as A
 import Agda.Syntax.Common
 import Agda.Syntax.Internal
 import Agda.Syntax.Internal.Generic
+import Agda.Syntax.Position (killRange)
 
 import Agda.TypeChecking.Monad
 import Agda.TypeChecking.Monad.Builtin
@@ -47,13 +47,15 @@
   , runExceptT
   )
 
+import Agda.Utils.Lens
 import Agda.Utils.List
 import Agda.Utils.Maybe
 import Agda.Utils.Monad
+import Agda.Utils.Null
 import Agda.Utils.Size
 import Agda.Utils.Tuple
 import Agda.Utils.Permutation
-import Agda.Utils.Pretty (prettyShow)
+import Agda.Utils.Pretty ( prettyShow, render )
 import qualified Agda.Utils.VarSet as Set
 
 #include "undefined.h"
@@ -76,7 +78,6 @@
             BlockedConst{}                 -> True
             PostponedTypeCheckingProblem{} -> True
             InstV{}                        -> False
-            InstS{}                        -> False
             Open{}                         -> False
             OpenIFS{}                      -> False
     reportSLn "tc.meta.blocked" 12 $
@@ -90,7 +91,6 @@
       Open{}                         -> True
       OpenIFS{}                      -> notElem Records kinds
       InstV{}                        -> False
-      InstS{}                        -> False
       BlockedConst{}                 -> False
       PostponedTypeCheckingProblem{} -> False
 
@@ -98,7 +98,7 @@
 
 -- | Performing the meta variable assignment.
 --
---   The instantiation should not be an 'InstV' or 'InstS' and the 'MetaId'
+--   The instantiation should not be an 'InstV' and the 'MetaId'
 --   should point to something 'Open' or a 'BlockedConst'.
 --   Further, the meta variable may not be 'Frozen'.
 assignTerm :: MetaId -> [Arg ArgName] -> Term -> TCM ()
@@ -128,7 +128,7 @@
     -- dontAssignMetas $ do
     --   checkInternal t . jMetaType . mvJudgement =<< lookupMeta x
 
-    let i = metaInstance tel v
+    let i = metaInstance tel $ killRange v
     verboseS "profile.metas" 10 $ liftTCM $ tickMax "max-open-metas" . size =<< getOpenMetas
     modifyMetaStore $ ins x i
     etaExpandListeners x
@@ -144,30 +144,42 @@
 
 -- * Creating meta variables.
 
+-- | Create a sort meta that cannot be instantiated with 'Inf' (Setω).
+newSortMetaBelowInf :: TCM Sort
+newSortMetaBelowInf = newSortMeta' $ HasType ()
+
+-- | Create a sort meta that may be instantiated with 'Inf' (Setω).
 newSortMeta :: TCM Sort
-newSortMeta =
+newSortMeta = newSortMeta' $ IsSort ()
+
+newSortMeta' :: (Type -> Judgement ()) -> TCM Sort
+newSortMeta' judge =
   ifM typeInType (return $ mkType 0) $ {- else -}
-  ifM hasUniversePolymorphism (newSortMetaCtx =<< getContextArgs)
+  ifM hasUniversePolymorphism (newSortMetaCtx' judge =<< getContextArgs)
   -- else (no universe polymorphism)
   $ do i   <- createMetaInfo
        lvl <- levelType
-       x   <- newMeta i normalMetaPriority (idP 0) $ IsSort () lvl -- WAS: topSort
+       x   <- newMeta i normalMetaPriority (idP 0) $ judge lvl
        return $ Type $ Max [Plus 0 $ MetaLevel x []]
 
+-- | Create a sort meta that may be instantiated with 'Inf' (Setω).
 newSortMetaCtx :: Args -> TCM Sort
-newSortMetaCtx vs =
+newSortMetaCtx = newSortMetaCtx' $ IsSort ()
+
+newSortMetaCtx' :: (Type -> Judgement ()) -> Args -> TCM Sort
+newSortMetaCtx' judge vs = do
   ifM typeInType (return $ mkType 0) $ {- else -} do
     i   <- createMetaInfo
     tel <- getContextTelescope
     lvl <- levelType
-    let t = telePi_ tel lvl -- WAS: topSort
-    x   <- newMeta i normalMetaPriority (idP 0) (IsSort () t)
+    let t = telePi_ tel lvl
+    x   <- newMeta i normalMetaPriority (idP 0) $ judge t
     reportSDoc "tc.meta.new" 50 $
       text "new sort meta" <+> prettyTCM x <+> text ":" <+> prettyTCM t
     return $ Type $ Max [Plus 0 $ MetaLevel x $ map Apply vs]
 
 newTypeMeta :: Sort -> TCM Type
-newTypeMeta s = El s <$> newValueMeta RunMetaOccursCheck (sort s)
+newTypeMeta s = El s . snd <$> newValueMeta RunMetaOccursCheck (sort s)
 
 newTypeMeta_ ::  TCM Type
 newTypeMeta_  = newTypeMeta =<< (workOnTypes $ newSortMeta)
@@ -180,15 +192,15 @@
 --   of type the output type of @t@ with name suggestion @s@.
 --   If @t@ is a function type, then insert enough
 --   lambdas in front of it.
-newIFSMeta :: MetaNameSuggestion -> Type -> TCM Term
+newIFSMeta :: MetaNameSuggestion -> Type -> TCM (MetaId, Term)
 newIFSMeta s t = do
   TelV tel t' <- telView t
-  addCtxTel tel $ do
+  addContext tel $ do
     vs  <- getContextArgs
     ctx <- getContextTelescope
-    teleLam tel <$> newIFSMetaCtx s (telePi_ ctx t') vs
+    mapSnd (teleLam tel) <$> newIFSMetaCtx s (telePi_ ctx t') vs
 
-newIFSMetaCtx :: MetaNameSuggestion -> Type -> Args -> TCM Term
+newIFSMetaCtx :: MetaNameSuggestion -> Type -> Args -> TCM (MetaId, Term)
 newIFSMetaCtx s t vs = do
   reportSDoc "tc.meta.new" 50 $ fsep
     [ text "new ifs meta:"
@@ -204,35 +216,42 @@
     ]
   addConstraint $ FindInScope x Nothing Nothing
   etaExpandMetaSafe x
-  return $ MetaV x $ map Apply vs
+  return (x, MetaV x $ map Apply vs)
 
--- | Create a new value meta with specific dependencies.
-newNamedValueMeta :: RunMetaOccursCheck -> MetaNameSuggestion -> Type -> TCM Term
+-- | Create a new value meta with specific dependencies, possibly η-expanding in the process.
+newNamedValueMeta :: RunMetaOccursCheck -> MetaNameSuggestion -> Type -> TCM (MetaId, Term)
 newNamedValueMeta b s t = do
-  v <- newValueMeta b t
-  setValueMetaName v s
-  return v
+  (x, v) <- newValueMeta b t
+  setMetaNameSuggestion x s
+  return (x, v)
 
+-- | Create a new value meta with specific dependencies without η-expanding.
+newNamedValueMeta' :: RunMetaOccursCheck -> MetaNameSuggestion -> Type -> TCM (MetaId, Term)
+newNamedValueMeta' b s t = do
+  (x, v) <- newValueMeta' b t
+  setMetaNameSuggestion x s
+  return (x, v)
+
 -- | Create a new metavariable, possibly η-expanding in the process.
-newValueMeta :: RunMetaOccursCheck -> Type -> TCM Term
+newValueMeta :: RunMetaOccursCheck -> Type -> TCM (MetaId, Term)
 newValueMeta b t = do
   vs  <- getContextArgs
   tel <- getContextTelescope
   newValueMetaCtx b t tel (idP $ size tel) vs
 
-newValueMetaCtx :: RunMetaOccursCheck -> Type -> Telescope -> Permutation -> Args -> TCM Term
+newValueMetaCtx :: RunMetaOccursCheck -> Type -> Telescope -> Permutation -> Args -> TCM (MetaId, Term)
 newValueMetaCtx b t tel perm ctx =
-  instantiateFull =<< newValueMetaCtx' b t tel perm ctx
+  mapSndM instantiateFull =<< newValueMetaCtx' b t tel perm ctx
 
 -- | Create a new value meta without η-expanding.
-newValueMeta' :: RunMetaOccursCheck -> Type -> TCM Term
+newValueMeta' :: RunMetaOccursCheck -> Type -> TCM (MetaId, Term)
 newValueMeta' b t = do
   vs  <- getContextArgs
   tel <- getContextTelescope
   newValueMetaCtx' b t tel (idP $ size tel) vs
 
 -- | Create a new value meta with specific dependencies.
-newValueMetaCtx' :: RunMetaOccursCheck -> Type -> Telescope -> Permutation -> Args -> TCM Term
+newValueMetaCtx' :: RunMetaOccursCheck -> Type -> Telescope -> Permutation -> Args -> TCM (MetaId, Term)
 newValueMetaCtx' b a tel perm vs = do
   i <- createMetaInfo' b
   let t     = telePi_ tel a
@@ -246,7 +265,7 @@
   -- Andreas, 2012-09-24: for Metas X : Size< u add constraint X+1 <= u
   u <- shared $ MetaV x $ map Apply vs
   boundedSizeMetaHook u tel a
-  return u
+  return (x, u)
 
 newTelMeta :: Telescope -> TCM Args
 newTelMeta tel = newArgsMeta (abstract tel $ typeDontCare)
@@ -273,7 +292,7 @@
   tm <- reduce tm
   case ignoreSharing tm of
     Pi dom@(Dom info a) codom | condition dom codom -> do
-      u <- applyRelevanceToContext (getRelevance info) $
+      (_, u) <- applyRelevanceToContext (getRelevance info) $
                {-
                  -- Andreas, 2010-09-24 skip irrelevant record fields when eta-expanding a meta var
                  -- Andreas, 2010-10-11 this is WRONG, see Issue 347
@@ -297,16 +316,26 @@
   ftel   <- flip apply pars <$> getRecordFieldTypes r
   fields <- newArgsMetaCtx (telePi_ ftel $ sort Prop) tel perm ctx
   con    <- getRecordConstructor r
-  return $ Con con fields
+  return $ Con con ConOSystem fields
 
-newQuestionMark :: InteractionId -> Type -> TCM Term
-newQuestionMark ii t = do
+newQuestionMark :: InteractionId -> Type -> TCM (MetaId, Term)
+newQuestionMark = newQuestionMark' $ newValueMeta' DontRunMetaOccursCheck
+
+newQuestionMark' :: (Type -> TCM (MetaId, Term)) -> InteractionId -> Type -> TCM (MetaId, Term)
+newQuestionMark' new ii t = do
+  -- Andreas, 2016-07-29, issue 1720-2
+  -- This is slightly risky, as the same interaction id
+  -- maybe be shared between different contexts.
+  -- Blame goes to the record processing hack, see issue #424
+  -- and @ConcreteToAbstract.recordConstructorType@.
+  let existing x = (x,) . MetaV x . map Apply <$> getContextArgs
+  flip (caseMaybeM $ lookupInteractionMeta ii) existing $ {-else-} do
+
   -- Do not run check for recursive occurrence of meta in definitions,
   -- because we want to give the recursive solution interactively (Issue 589)
-  m  <- newValueMeta' DontRunMetaOccursCheck t
-  MetaV x _ <- return $ ignoreSharing m   -- needs to be strict!
+  (x, m) <- new t
   connectInteractionPoint ii x
-  return m
+  return (x, m)
 
 -- | Construct a blocked constant if there are constraints.
 blockTerm :: Type -> TCM Term -> TCM Term
@@ -338,10 +367,10 @@
         -- blocked terms can be instantiated before they are unblocked, thus making
         -- constraint solving a bit more robust against instantiation order.
         -- Andreas, 2015-05-22: DontRunMetaOccursCheck to avoid Issue585-17.
-        v   <- newValueMeta DontRunMetaOccursCheck t
+        (_, v) <- newValueMeta DontRunMetaOccursCheck t
         i   <- liftTCM fresh
         -- This constraint is woken up when unblocking, so it doesn't need a problem id.
-        cmp <- buildProblemConstraint 0 (ValueCmp CmpEq t v (MetaV x es))
+        cmp <- buildProblemConstraint_ (ValueCmp CmpEq t v (MetaV x es))
         listenToMeta (CheckConstraint i cmp) x
         return v
 
@@ -387,8 +416,8 @@
   -- to run the extended occurs check (metaOccurs) to exclude
   -- non-terminating solutions.
   es  <- map Apply <$> getContextArgs
-  v   <- newValueMeta DontRunMetaOccursCheck t
-  cmp <- buildProblemConstraint 0 (ValueCmp CmpEq t v (MetaV m es))
+  (_, v) <- newValueMeta DontRunMetaOccursCheck t
+  cmp <- buildProblemConstraint_ (ValueCmp CmpEq t v (MetaV m es))
   i   <- liftTCM fresh
   listenToMeta (CheckConstraint i cmp) m
   addConstraint (UnBlock m)
@@ -609,23 +638,33 @@
       -- Andreas, 2011-04-21 do the occurs check first
       -- e.g. _1 x (suc x) = suc (_2 x y)
       -- even though the lhs is not a pattern, we can prune the y from _2
-      let relVL = Set.toList $ allRelevantVars args
-{- Andreas, 2012-04-02: DontCare no longer present
-      -- take away top-level DontCare constructors
-      args <- return $ map (fmap stripDontCare) args
--}
-      -- Andreas, 2011-10-06 only irrelevant vars that are direct
-      -- arguments to the meta, hence, can be abstracted over, may
-      -- appear on the rhs.  (test/fail/Issue483b)
-      -- Update 2011-03-27: Also irr. vars under record constructors.
-      let fromIrrVar (Var i [])   = return [i]
-          fromIrrVar (Con c vs)   =
-            ifM (isNothing <$> isRecordConstructor (conName c)) (return []) $
-              concat <$> mapM (fromIrrVar . {- stripDontCare .-} unArg) vs
-          fromIrrVar (Shared p)   = fromIrrVar (derefPtr p)
-          fromIrrVar _ = return []
-      irrVL <- concat <$> mapM fromIrrVar
-                 [ v | Arg info v <- args, irrelevantOrUnused (getRelevance info) ]
+
+      (relVL, irrVL) <- do
+        -- Andreas, 2016-11-03 #2211 attempt to do s.th. for unused
+        if False -- irrelevantOrUnused $ getMetaRelevance mvar
+          then do
+            reportSDoc "tc.meta.assign" 25 $ text "meta is irrelevant or unused"
+            return (Set.toList $ allFreeVars args, empty)
+          else do
+            -- Andreas, 2016-11-03, issue #2211
+            -- treating UnusedArg as Irrelevant bears trouble
+            -- since the UnusedArg info is not consistently present
+            -- Thus, make sure we include the "unused" variables.
+            let relVL = Set.toList $ allRelevantOrUnusedVars args
+            -- Andreas, 2011-10-06 only irrelevant vars that are direct
+            -- arguments to the meta, hence, can be abstracted over, may
+            -- appear on the rhs.  (test/fail/Issue483b)
+            -- Update 2011-03-27: Also irr. vars under record constructors.
+            let fromIrrVar (Var i [])   = return [i]
+                fromIrrVar (Con c _ vs)   =
+                  ifM (isNothing <$> isRecordConstructor (conName c)) (return []) $
+                    concat <$> mapM (fromIrrVar . {- stripDontCare .-} unArg) vs
+                fromIrrVar (Shared p)   = fromIrrVar (derefPtr p)
+                fromIrrVar _ = return []
+            irrVL <- concat <$> mapM fromIrrVar
+                       [ v | Arg info v <- args, isIrrelevant info ]
+                          -- irrelevantOrUnused (getRelevance info) ]
+            return (relVL, irrVL)
       reportSDoc "tc.meta.assign" 20 $
           let pr (Var n []) = text (show n)
               pr (Def c []) = prettyTCM c
@@ -677,7 +716,7 @@
           Left NeutralArg  -> Just <$> attemptPruning x args fvs
           -- we have a projected variable which could not be eta-expanded away:
           -- same as neutral
-          Left (ProjectedVar i qs) -> Just <$> attemptPruning x args fvs
+          Left ProjectedVar{} -> Just <$> attemptPruning x args fvs
 
       case mids of
         Nothing  -> patternViolation -- Ulf 2014-07-13: actually not needed after all: attemptInertRHSImprovement x args v
@@ -732,7 +771,7 @@
     patternViolation
   -- Solve the meta with _M := \ xs -> D (_Y1 xs) .. (_Yn xs), for fresh metas
   -- _Yi.
-  metaArgs <- inTopContext $ addCtxTel tel $ newArgsMeta a
+  metaArgs <- inTopContext $ addContext tel $ newArgsMeta a
   let varArgs = map Apply $ reverse $ zipWith (\i a -> var i <$ a) [0..] (reverse args)
       sol     = mkRHS metaArgs
       argTel  = map ("x" <$) args
@@ -759,7 +798,7 @@
               Just args -> return args
       case ignoreSharing v of
         Var x elims -> (, Var x . map Apply) <$> typeOfBV x
-        Con c args  -> notInert -- (, Con c) <$> defType <$> getConstInfo (conName c)
+        Con c ci args  -> notInert -- (, Con c ci) <$> defType <$> getConstInfo (conName c)
         Def f elims -> do
           def <- getConstInfo f
           let good = return (defType def, Def f . map Apply)
@@ -950,7 +989,7 @@
 class NoProjectedVar a where
   noProjectedVar :: a -> Either ProjVarExc ()
 
-data ProjVarExc = ProjVarExc Int [QName]
+data ProjVarExc = ProjVarExc Int [(ProjOrigin, QName)]
 
 -- ASR (17 June 2015). Unused Error instance.
 -- instance Error ProjVarExc where
@@ -963,7 +1002,7 @@
         | qs@(_:_) <- takeWhileJust id $ map isProjElim es -> Left $ ProjVarExc i qs
       -- Andreas, 2015-09-12 Issue 1316:
       -- Also look in inductive record constructors
-      Con (ConHead _ Inductive (_:_)) vs -> noProjectedVar vs
+      Con (ConHead _ Inductive (_:_)) _ vs -> noProjectedVar vs
       _ -> return ()
 
 instance NoProjectedVar a => NoProjectedVar (Arg a) where
@@ -1026,7 +1065,7 @@
 -}
 
 type FVs = Set.VarSet
-type SubstCand = [(Nat,Term)] -- ^ a possibly non-deterministic substitution
+type SubstCand = [(Int,Term)] -- ^ a possibly non-deterministic substitution
 
 -- | Turn non-det substitution into proper substitution, if possible.
 --   Otherwise, raise the error.
@@ -1053,7 +1092,7 @@
 data InvertExcept
   = CantInvert                -- ^ Cannot recover.
   | NeutralArg                -- ^ A potentially neutral arg: can't invert, but can try pruning.
-  | ProjectedVar Int [QName]  -- ^ Try to eta-expand var to remove projs.
+  | ProjectedVar Int [(ProjOrigin, QName)]  -- ^ Try to eta-expand var to remove projs.
 
 #if !MIN_VERSION_transformers(0,4,1)
 instance Error InvertExcept where
@@ -1095,18 +1134,24 @@
 
         -- (i, j) := x  becomes  [i := fst x, j := snd x]
         -- Andreas, 2013-09-17 but only if constructor is fully applied
-        Arg info (Con c vs) -> do
+        Arg info (Con c ci vs) -> do
           let fallback
-               | irrelevantOrUnused (getRelevance info) = return vars
+               | isIrrelevant info = return vars
+                 -- Andreas, 2016-11-03, issue #2211
+                 -- treating UnusedArg as Irrelevant bears trouble
+                 -- since the UnusedArg info is not consistently present
+                 -- irrelevantOrUnused (getRelevance info) = return vars
                | otherwise                              = failure
           isRC <- lift $ isRecordConstructor $ conName c
           case isRC of
             Just (_, Record{ recFields = fs })
               | length fs == length vs -> do
-                let aux (Arg _ v) (Arg info' f) = (Arg ai v,) $ t `applyE` [Proj f] where
+                let aux (Arg _ v) (Arg info' f) = (Arg ai v,) $ t `applyE` [Proj ProjSystem f] where
                      ai = ArgInfo
-                       { argInfoHiding    = min (getHiding info) (getHiding info')
-                       , argInfoRelevance = max (getRelevance info) (getRelevance info')
+                       { argInfoHiding       = min (getHiding info) (getHiding info')
+                       , argInfoRelevance    = max (getRelevance info) (getRelevance info')
+                       , argInfoOrigin       = min (getOrigin info) (getOrigin info')
+                       , argInfoOverlappable = False
                        }
                 res <- loop $ zipWith aux vs fs
                 return $ res `append` vars
@@ -1115,7 +1160,11 @@
             Nothing -> fallback
 
         -- An irrelevant argument which is not an irrefutable pattern is dropped
-        Arg info _ | irrelevantOrUnused (getRelevance info) -> return vars
+        Arg info _ | isIrrelevant info -> return vars
+          -- Andreas, 2016-11-03, issue #2211
+          -- treating UnusedArg as Irrelevant bears trouble
+          -- since the UnusedArg info is not consistently present
+          -- irrelevantOrUnused (getRelevance info) -> return vars
         -- Andreas, 2013-10-29
         -- An irrelevant part can also be marked by a DontCare
         -- (coming from an irrelevant projection), see Issue 927:
@@ -1140,7 +1189,7 @@
 
     -- adding an irrelevant entry only if not present
     cons :: (Arg Nat, Term) -> Res -> Res
-    cons a@(Arg (ArgInfo _ Irrelevant) i, t) vars    -- TODO? UnusedArg?!
+    cons a@(Arg (ArgInfo _ Irrelevant _ _) i, t) vars    -- TODO? UnusedArg?!
       | any ((i==) . unArg . fst) vars  = vars
       | otherwise                       = a : vars
     -- adding a relevant entry:
@@ -1148,19 +1197,54 @@
       -- filter out duplicate irrelevants
       filter (not . (\ a@(Arg info j, t) -> isIrrelevant info && i == j)) vars
 
--- | Used in 'Agda.Interaction.BasicOps.giveExpr'.
-updateMeta :: MetaId -> Term -> TCM ()
-updateMeta mI v = do
-    mv <- lookupMeta mI
-    withMetaInfo' mv $ do
-      args <- getContextArgs
-      noConstraints $ assignV DirEq mI args v
+-- UNUSED
+-- -- | Used in 'Agda.Interaction.BasicOps.giveExpr'.
+-- updateMeta :: MetaId -> Term -> TCM ()
+-- updateMeta mI v = do
+--     mv <- lookupMeta mI
+--     withMetaInfo' mv $ do
+--       args <- getContextArgs
+--       noConstraints $ assignV DirEq mI args v
 
--- | Returns every meta-variable occurrence in the given type, except
--- for those in 'Sort's.
+-- | Turn open metas into postulates.
+--
+--   Preconditions:
+--
+--   1. We are 'inTopContext'.
+--
+--   2. 'envCurrentModule' is set to the top-level module.
+--
+openMetasToPostulates :: TCM ()
+openMetasToPostulates = do
+  m <- asks envCurrentModule
 
-allMetas :: TermLike a => a -> [MetaId]
-allMetas = foldTerm metas
-  where
-  metas (MetaV m _) = [m]
-  metas _           = []
+  -- Go through all open metas.
+  ms <- Map.assocs <$> use stMetaStore
+  forM_ ms $ \ (x, mv) -> do
+    when (isOpenMeta $ mvInstantiation mv) $ do
+      let t = jMetaType $ mvJudgement mv
+
+      -- Create a name for the new postulate.
+      let r = clValue $ miClosRange $ mvInfo mv
+      -- s <- render <$> prettyTCM x -- Using _ is a bad idea, as it prints as prefix op
+      let s = "unsolved#meta." ++ show (metaId x)
+      n <- freshName r s
+      let q = A.QName m n
+
+      -- Debug.
+      reportSDoc "meta.postulate" 20 $ vcat
+        [ text ("Turning " ++ if isSortMeta_ mv then "sort" else "value" ++ " meta ")
+            <+> prettyTCM x <+> text " into postulate."
+        , nest 2 $ vcat
+          [ text "Name: " <+> prettyTCM q
+          , text "Type: " <+> prettyTCM t
+          ]
+        ]
+
+      -- Add the new postulate to the signature.
+      addConstant q $ defaultDefn defaultArgInfo q t Axiom
+
+      -- Solve the meta.
+      let inst = InstV [] $ Def q []
+      stMetaStore %= Map.adjust (\ mv0 -> mv0 { mvInstantiation = inst }) x
+      return ()
diff --git a/src/full/Agda/TypeChecking/MetaVars.hs-boot b/src/full/Agda/TypeChecking/MetaVars.hs-boot
--- a/src/full/Agda/TypeChecking/MetaVars.hs-boot
+++ b/src/full/Agda/TypeChecking/MetaVars.hs-boot
@@ -12,8 +12,8 @@
 etaExpandMetaSafe :: MetaId -> TCM ()
 assignV           :: CompareDirection -> MetaId -> Args -> Term -> TCM ()
 assign            :: CompareDirection -> MetaId -> Args -> Term -> TCM ()
-newIFSMeta        :: String -> Type -> TCM Term
-newValueMeta      :: RunMetaOccursCheck -> Type -> TCM Term
-newNamedValueMeta :: RunMetaOccursCheck -> String -> Type -> TCM Term
+newIFSMeta        :: String -> Type -> TCM (MetaId, Term)
+newValueMeta      :: RunMetaOccursCheck -> Type -> TCM (MetaId, Term)
+newNamedValueMeta :: RunMetaOccursCheck -> String -> Type -> TCM (MetaId, Term)
+newNamedValueMeta':: RunMetaOccursCheck -> String -> Type -> TCM (MetaId, Term)
 newTelMeta        :: Telescope -> TCM Args
-allMetas          :: TermLike a => a -> [MetaId]
diff --git a/src/full/Agda/TypeChecking/MetaVars/Mention.hs b/src/full/Agda/TypeChecking/MetaVars/Mention.hs
--- a/src/full/Agda/TypeChecking/MetaVars/Mention.hs
+++ b/src/full/Agda/TypeChecking/MetaVars/Mention.hs
@@ -1,4 +1,3 @@
-{-# LANGUAGE FlexibleInstances #-}
 
 module Agda.TypeChecking.MetaVars.Mention where
 
@@ -15,7 +14,7 @@
     Lam _ b      -> mm b
     Lit{}        -> False
     Def _ args   -> mm args
-    Con _ args   -> mm args
+    Con _ _ args -> mm args
     Pi a b       -> mm (a, b)
     Sort s       -> mm s
     Level l      -> mm l
diff --git a/src/full/Agda/TypeChecking/MetaVars/Occurs.hs b/src/full/Agda/TypeChecking/MetaVars/Occurs.hs
--- a/src/full/Agda/TypeChecking/MetaVars/Occurs.hs
+++ b/src/full/Agda/TypeChecking/MetaVars/Occurs.hs
@@ -1,7 +1,6 @@
 {-# LANGUAGE CPP #-}
-{-# LANGUAGE FlexibleContexts #-}
-{-# LANGUAGE FlexibleInstances #-}
 {-# LANGUAGE NoMonomorphismRestriction #-}
+{-# LANGUAGE NondecreasingIndentation #-}
 {-# LANGUAGE UndecidableInstances #-}
 
 {- | The occurs check for unification.  Does pruning on the fly.
@@ -25,6 +24,7 @@
 import Data.Monoid
 import Data.Set (Set)
 import qualified Data.Set as Set
+import Data.Traversable (traverse)
 
 import qualified Agda.Benchmarking as Bench
 
@@ -37,6 +37,7 @@
 import Agda.TypeChecking.Pretty
 import Agda.TypeChecking.Free hiding (Occurrence(..))
 import Agda.TypeChecking.Substitute
+import Agda.TypeChecking.Datatypes
 import Agda.TypeChecking.Records
 import {-# SOURCE #-} Agda.TypeChecking.MetaVars
 -- import Agda.TypeChecking.MetaVars
@@ -116,7 +117,7 @@
          reportSLn "tc.meta.occurs" 20 $ "(none)"
          return Set.empty
        Just b  -> do
-         ds <- lookupMutualBlock b
+         ds <- mutualNames <$> lookupMutualBlock b
          reportSDoc "tc.meta.occurs" 20 $ sep $ map prettyTCM $ Set.toList ds
          return ds
 
@@ -130,11 +131,11 @@
 tallyDef d = modifyOccursCheckDefs $ \ s -> Set.delete d s
 
 data OccursCtx
-  = Flex          -- ^ we are in arguments of a meta
-  | Rigid         -- ^ we are not in arguments of a meta but a bound var
-  | StronglyRigid -- ^ we are at the start or in the arguments of a constructor
-  | Top           -- ^ we are at the term root (this turns into @StronglyRigid@)
-  | Irrel         -- ^ we are in an irrelevant argument
+  = Flex          -- ^ We are in arguments of a meta.
+  | Rigid         -- ^ We are not in arguments of a meta but a bound var.
+  | StronglyRigid -- ^ We are at the start or in the arguments of a constructor.
+  | Top           -- ^ We are at the term root (this turns into @StronglyRigid@).
+  | Irrel         -- ^ We are in an irrelevant argument.
   deriving (Eq, Show)
 
 data UnfoldStrategy = YesUnfold | NoUnfold
@@ -269,7 +270,7 @@
           Lit l       -> return v
           DontCare v  -> dontCare <$> occurs red Irrel m (goIrrelevant xs) v
           Def d es    -> Def d <$> occDef d (leaveTop ctx) es
-          Con c vs    -> Con c <$> occ (leaveTop ctx) vs  -- if strongly rigid, remain so
+          Con c ci vs -> Con c ci <$> occ (leaveTop ctx) vs  -- if strongly rigid, remain so
           Pi a b      -> uncurry Pi <$> occ (leaveTop ctx) (a,b)
           Sort s      -> Sort <$> occ (leaveTop ctx) s
           v@Shared{}  -> updateSharedTerm (occ ctx) v
@@ -316,12 +317,10 @@
             -- a data or record type constructor propagates strong occurrences
             -- since e.g. x = List x is unsolvable
             occDef d ctx vs = do
-              def <- theDef <$> getConstInfo d
-              whenM (defNeedsChecking d) $ do
-                tallyDef d
-                reportSLn "tc.meta.occurs" 30 $ "Checking for occurrences in " ++ show d
-                metaOccurs m def
-              if (defIsDataOrRecord def) then (occ ctx vs) else (occ (defArgs red ctx) vs)
+              metaOccurs m d
+              ifM (isJust <$> isDataOrRecordType d)
+                {-then-} (occ ctx vs)
+                {-else-} (occ (defArgs red ctx) vs)
 
   metaOccurs m v = do
     v <- instantiate v
@@ -332,7 +331,7 @@
       Lit l      -> return ()
       DontCare v -> metaOccurs m v
       Def d vs   -> metaOccurs m d >> metaOccurs m vs
-      Con c vs   -> metaOccurs m vs
+      Con c _ vs -> metaOccurs m vs
       Pi a b     -> metaOccurs m (a,b)
       Sort s     -> metaOccurs m s
       Shared p   -> metaOccurs m $ derefPtr p
@@ -345,7 +344,7 @@
   metaOccurs m d = whenM (defNeedsChecking d) $ do
     tallyDef d
     reportSLn "tc.meta.occurs" 30 $ "Checking for occurrences in " ++ show d
-    metaOccurs m . theDef =<< getConstInfo d
+    metaOccurs m . theDef =<< ignoreAbstractMode (getConstInfo d)
 
 instance Occurs Defn where
   occurs red ctx m xs def = __IMPOSSIBLE__
@@ -356,17 +355,15 @@
   -- we check the constructor types
   metaOccurs m Datatype{ dataCons = cs }    = mapM_ mocc cs
     where mocc c = metaOccurs m . defType =<< getConstInfo c
-  metaOccurs m Record{ recConType = v }     = metaOccurs m v
+  metaOccurs m Record{ recConHead = c }     = metaOccurs m . defType =<< getConstInfo (conName c)
   metaOccurs m Constructor{}                = return ()
   metaOccurs m Primitive{}                  = return ()
+  metaOccurs m AbstractDefn{}               = __IMPOSSIBLE__
 
 instance Occurs Clause where
   occurs red ctx m xs cl = __IMPOSSIBLE__
 
-  metaOccurs m (Clause { clauseBody = body }) = walk body
-    where walk NoBody   = return ()
-          walk (Body v) = metaOccurs m v
-          walk (Bind b) = underAbstraction_ b walk
+  metaOccurs m = metaOccurs m . clauseBody
 
 instance Occurs Level where
   occurs red ctx m xs (Max as) = Max <$> occurs red ctx m xs as
@@ -465,6 +462,11 @@
 
   metaOccurs m ys = mapM_ (metaOccurs m) ys
 
+instance Occurs a => Occurs (Maybe a) where
+  occurs red ctx m mx my = traverse (occurs red ctx m mx) my
+
+  metaOccurs m = maybe (return ()) (metaOccurs m)
+
 -- * Getting rid of flexible occurrences
 
 -- | @prune m' vs xs@ attempts to remove all arguments from @vs@ whose
@@ -525,7 +527,7 @@
     -- offending variables under a constructor could be removed by
     -- the right instantiation of the meta variable.
     -- Thus, they are not rigid.
-    Con c args   -> do
+    Con c _ args -> do
       ifM (liftTCM $ isEtaCon (conName c))
         -- in case of a record con, we can in principle prune
         -- (but not this argument; the meta could become a projection!)
@@ -542,7 +544,9 @@
   let yes = return True
       no  = return False
   def <- getConstInfo f
+  if defMatchable def then no else do
   case theDef def of
+    AbstractDefn -> yes
     Axiom{}    -> yes
     Datatype{} -> yes
     Record{}   -> yes
@@ -593,7 +597,7 @@
         Blocked{}                   -> mempty
         NotBlocked MissingClauses _ -> mempty
         _        -> fold es
-      Con _ ts   -> fold ts
+      Con _ _ ts -> fold ts
       Pi a b     -> fold (a,b)
       Sort s     -> fold s
       Level l    -> fold l
diff --git a/src/full/Agda/TypeChecking/Monad.hs b/src/full/Agda/TypeChecking/Monad.hs
--- a/src/full/Agda/TypeChecking/Monad.hs
+++ b/src/full/Agda/TypeChecking/Monad.hs
@@ -5,6 +5,7 @@
     , module Agda.TypeChecking.Monad.Context
     , module Agda.TypeChecking.Monad.Env
     , module Agda.TypeChecking.Monad.Imports
+    , module Agda.TypeChecking.Monad.Local
     , module Agda.TypeChecking.Monad.MetaVars
     , module Agda.TypeChecking.Monad.Mutual
     , module Agda.TypeChecking.Monad.Open
@@ -24,6 +25,7 @@
 import Agda.TypeChecking.Monad.Context
 import Agda.TypeChecking.Monad.Env
 import Agda.TypeChecking.Monad.Imports
+import Agda.TypeChecking.Monad.Local
 import Agda.TypeChecking.Monad.MetaVars
 import Agda.TypeChecking.Monad.Mutual
 import Agda.TypeChecking.Monad.Options
diff --git a/src/full/Agda/TypeChecking/Monad/Base.hs b/src/full/Agda/TypeChecking/Monad/Base.hs
--- a/src/full/Agda/TypeChecking/Monad/Base.hs
+++ b/src/full/Agda/TypeChecking/Monad/Base.hs
@@ -1,16 +1,7 @@
 {-# LANGUAGE BangPatterns               #-}
 {-# LANGUAGE CPP                        #-}
 {-# LANGUAGE DeriveDataTypeable         #-}
-{-# LANGUAGE DeriveFoldable             #-}
-{-# LANGUAGE DeriveFunctor              #-}
-{-# LANGUAGE DeriveTraversable          #-}
-{-# LANGUAGE ExistentialQuantification  #-}
-{-# LANGUAGE FlexibleContexts           #-}
-{-# LANGUAGE FlexibleInstances          #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
-{-# LANGUAGE MultiParamTypeClasses      #-}
-{-# LANGUAGE NamedFieldPuns             #-}
-{-# LANGUAGE Rank2Types                 #-}
 {-# LANGUAGE ScopedTypeVariables        #-}
 {-# LANGUAGE UndecidableInstances       #-}
 
@@ -22,7 +13,7 @@
 import qualified Control.Exception as E
 import Control.Monad.State
 import Control.Monad.Reader
-import Control.Monad.Writer
+import Control.Monad.Writer hiding ((<>))
 import Control.Monad.Trans.Maybe
 import Control.Applicative hiding (empty)
 
@@ -36,8 +27,9 @@
 import qualified Data.Map as Map -- hiding (singleton, null, empty)
 import Data.Set (Set)
 import qualified Data.Set as Set -- hiding (singleton, null, empty)
+import Data.Semigroup (Semigroup, Monoid, (<>), mempty, mappend, Any(..))
 import Data.Typeable (Typeable)
-import Data.Foldable
+import Data.Foldable (Foldable)
 import Data.Traversable
 import Data.IORef
 
@@ -53,6 +45,8 @@
 import Agda.Syntax.Abstract (AllNames)
 import Agda.Syntax.Internal as I
 import Agda.Syntax.Internal.Pattern ()
+import Agda.Syntax.Internal.Generic (TermLike(..))
+import Agda.Syntax.Parser (PM(..), ParseWarning, runPMIO)
 import Agda.Syntax.Treeless (Compiled)
 import Agda.Syntax.Fixity
 import Agda.Syntax.Position
@@ -61,8 +55,8 @@
 
 import Agda.TypeChecking.CompiledClause
 import Agda.TypeChecking.Positivity.Occurrence
+import Agda.TypeChecking.Free.Lazy (Free'(freeVars'), bind', bind)
 
-import Agda.Interaction.Exceptions
 -- import {-# SOURCE #-} Agda.Interaction.FindFile
 import Agda.Interaction.Options
 import Agda.Interaction.Response
@@ -70,13 +64,13 @@
 import Agda.Interaction.Highlighting.Precise
   (CompressedFile, HighlightingInfo)
 
-import qualified Agda.Compiler.JS.Syntax as JS
 import qualified Agda.Compiler.UHC.Pragmas.Base as CR
 
 import Agda.Utils.Except
   ( Error(strMsg)
   , ExceptT
   , MonadError(catchError, throwError)
+  , runExceptT
   )
 
 import Agda.Utils.Benchmark (MonadBench(..))
@@ -85,12 +79,14 @@
 import qualified Agda.Utils.HashMap as HMap
 import Agda.Utils.Hash
 import Agda.Utils.Lens
+import Agda.Utils.List
 import Agda.Utils.ListT
 import Agda.Utils.Monad
 import Agda.Utils.Null
 import Agda.Utils.Permutation
-import Agda.Utils.Pretty
+import Agda.Utils.Pretty hiding ((<>))
 import Agda.Utils.Singleton
+import Agda.Utils.Functor
 
 #include "undefined.h"
 import Agda.Utils.Impossible
@@ -115,32 +111,35 @@
   show _ = "TCSt{}"
 
 data PreScopeState = PreScopeState
-  { stPreTokens             :: CompressedFile -- from lexer
+  { stPreTokens             :: !CompressedFile -- from lexer
     -- ^ Highlighting info for tokens (but not those tokens for
     -- which highlighting exists in 'stSyntaxInfo').
-  , stPreImports            :: Signature  -- XX populated by scopec hecker
+  , stPreImports            :: !Signature  -- XX populated by scopec hecker
     -- ^ Imported declared identifiers.
     --   Those most not be serialized!
-  , stPreImportedModules    :: Set ModuleName  -- imports logic
-  , stPreModuleToSource     :: ModuleToSource   -- imports
-  , stPreVisitedModules     :: VisitedModules   -- imports
-  , stPreScope              :: ScopeInfo
+  , stPreImportedModules    :: !(Set ModuleName)  -- imports logic
+  , stPreModuleToSource     :: !ModuleToSource   -- imports
+  , stPreVisitedModules     :: !VisitedModules   -- imports
+  , stPreScope              :: !ScopeInfo
     -- generated by scope checker, current file: which modules you have, public definitions, current file, maps concrete names to abstract names.
-  , stPrePatternSyns        :: A.PatternSynDefns
+  , stPrePatternSyns        :: !A.PatternSynDefns
     -- ^ Pattern synonyms of the current file.  Serialized.
-  , stPrePatternSynImports  :: A.PatternSynDefns
+  , stPrePatternSynImports  :: !A.PatternSynDefns
     -- ^ Imported pattern synonyms.  Must not be serialized!
-  , stPrePragmaOptions      :: PragmaOptions
+  , stPrePragmaOptions      :: !PragmaOptions
     -- ^ Options applying to the current file. @OPTIONS@
     -- pragmas only affect this field.
-  , stPreImportedBuiltins   :: BuiltinThings PrimFun
-  , stPreHaskellImports     :: Set String
+  , stPreImportedBuiltins   :: !(BuiltinThings PrimFun)
+  , stPreImportedDisplayForms :: !DisplayForms
+    -- ^ Display forms added by someone else to imported identifiers
+  , stPreImportedInstanceDefs :: !InstanceTable
+  , stPreHaskellImports     :: !(Set String)
     -- ^ Imports that should be generated by the compiler / MAlonzo
     -- (this includes imports from imported modules).
-  , stPreHaskellImportsUHC  :: Set String
+  , stPreHaskellImportsUHC  :: !(Set String)
     -- ^ Imports that should be generated by the compiler / UHC backend
     -- (this includes imports from imported modules).
-  , stPreHaskellCode        :: [String]
+  , stPreHaskellCode        :: ![String]
     -- ^ Inline Haskell code that should be inserted by the GHC backend
   , stPreFreshInteractionId :: !InteractionId
   }
@@ -148,48 +147,61 @@
 type DisambiguatedNames = IntMap A.QName
 
 data PostScopeState = PostScopeState
-  { stPostSyntaxInfo          :: CompressedFile
+  { stPostSyntaxInfo          :: !CompressedFile
     -- ^ Highlighting info.
   , stPostDisambiguatedNames  :: !DisambiguatedNames
     -- ^ Disambiguation carried out by the type checker.
     --   Maps position of first name character to disambiguated @'A.QName'@
     --   for each @'A.AmbiguousQName'@ already passed by the type checker.
-  , stPostMetaStore           :: MetaStore
-  , stPostInteractionPoints   :: InteractionPoints -- scope checker first
-  , stPostAwakeConstraints    :: Constraints
-  , stPostSleepingConstraints :: Constraints
-  , stPostDirty               :: Bool -- local
+  , stPostMetaStore           :: !MetaStore
+  , stPostInteractionPoints   :: !InteractionPoints -- scope checker first
+  , stPostSolvedInteractionPoints :: !InteractionPoints
+    -- ^ Interaction points that have been filled by a give or solve action.
+  , stPostAwakeConstraints    :: !Constraints
+  , stPostSleepingConstraints :: !Constraints
+  , stPostDirty               :: !Bool -- local
     -- ^ Dirty when a constraint is added, used to prevent pointer update.
     -- Currently unused.
-  , stPostOccursCheckDefs     :: Set QName -- local
+  , stPostOccursCheckDefs     :: !(Set QName) -- local
     -- ^ Definitions to be considered during occurs check.
     --   Initialized to the current mutual block before the check.
     --   During occurs check, we remove definitions from this set
     --   as soon we have checked them.
-  , stPostSignature           :: Signature
+  , stPostSignature           :: !Signature
     -- ^ Declared identifiers of the current file.
     --   These will be serialized after successful type checking.
+  , stPostModuleParameters    :: !ModuleParamDict
+    -- ^ TODO: can these be moved into the @TCEnv@?
   , stPostImportsDisplayForms :: !DisplayForms
     -- ^ Display forms we add for imported identifiers
-  , stPostImportedDisplayForms :: !DisplayForms
-    -- ^ Display forms added by someone else to imported identifiers
-  , stPostCurrentModule       :: Maybe ModuleName
+  , stPostCurrentModule       :: !(Maybe ModuleName)
     -- ^ The current module is available after it has been type
     -- checked.
-  , stPostInstanceDefs        :: TempInstanceTable
-  , stPostStatistics          :: Statistics
+  , stPostInstanceDefs        :: !TempInstanceTable
+  , stPostStatistics          :: !Statistics
     -- ^ Counters to collect various statistics about meta variables etc.
     --   Only for current file.
-  , stPostMutualBlocks        :: Map MutualId (Set QName)
-  , stPostLocalBuiltins       :: BuiltinThings PrimFun
-  , stPostFreshMetaId         :: MetaId
-  , stPostFreshMutualId       :: MutualId
-  , stPostFreshCtxId          :: CtxId
-  , stPostFreshProblemId      :: ProblemId
-  , stPostFreshInt            :: Int
-  , stPostFreshNameId         :: NameId
+  , stPostTCWarnings          :: ![TCWarning]
+  , stPostMutualBlocks        :: !(Map MutualId MutualBlock)
+  , stPostLocalBuiltins       :: !(BuiltinThings PrimFun)
+  , stPostFreshMetaId         :: !MetaId
+  , stPostFreshMutualId       :: !MutualId
+  , stPostFreshCtxId          :: !CtxId
+  , stPostFreshProblemId      :: !ProblemId
+  , stPostFreshInt            :: !Int
+  , stPostFreshNameId         :: !NameId
   }
 
+-- | A mutual block of names in the signature.
+data MutualBlock = MutualBlock
+  { mutualInfo  :: Info.MutualInfo
+    -- ^ The original info of the mutual block.
+  , mutualNames :: Set QName
+  } deriving (Show, Eq)
+
+instance Null MutualBlock where
+  empty = MutualBlock empty empty
+
 -- | A part of the state which is not reverted when an error is thrown
 -- or the state is reset.
 data PersistentTCState = PersistentTCSt
@@ -266,6 +278,8 @@
   , stPrePatternSynImports    = Map.empty
   , stPrePragmaOptions        = defaultInteractionOptions
   , stPreImportedBuiltins     = Map.empty
+  , stPreImportedDisplayForms = HMap.empty
+  , stPreImportedInstanceDefs = Map.empty
   , stPreHaskellImports       = Set.empty
   , stPreHaskellImportsUHC    = Set.empty
   , stPreHaskellCode          = []
@@ -278,16 +292,18 @@
   , stPostDisambiguatedNames   = IntMap.empty
   , stPostMetaStore            = Map.empty
   , stPostInteractionPoints    = Map.empty
+  , stPostSolvedInteractionPoints = Map.empty
   , stPostAwakeConstraints     = []
   , stPostSleepingConstraints  = []
   , stPostDirty                = False
   , stPostOccursCheckDefs      = Set.empty
   , stPostSignature            = emptySignature
+  , stPostModuleParameters     = Map.empty
   , stPostImportsDisplayForms  = HMap.empty
-  , stPostImportedDisplayForms = HMap.empty
   , stPostCurrentModule        = Nothing
-  , stPostInstanceDefs         = (Map.empty , [])
+  , stPostInstanceDefs         = (Map.empty , Set.empty)
   , stPostStatistics           = Map.empty
+  , stPostTCWarnings           = []
   , stPostMutualBlocks         = Map.empty
   , stPostLocalBuiltins        = Map.empty
   , stPostFreshMetaId          = 0
@@ -403,6 +419,12 @@
   f (stPostInteractionPoints (stPostScopeState s)) <&>
   \x -> s {stPostScopeState = (stPostScopeState s) {stPostInteractionPoints = x}}
 
+stSolvedInteractionPoints :: Lens' InteractionPoints TCState
+stSolvedInteractionPoints f s =
+  f (stPostSolvedInteractionPoints (stPostScopeState s)) <&>
+  \ x -> s {stPostScopeState = (stPostScopeState s)
+             {stPostSolvedInteractionPoints = x}}
+
 stAwakeConstraints :: Lens' Constraints TCState
 stAwakeConstraints f s =
   f (stPostAwakeConstraints (stPostScopeState s)) <&>
@@ -428,6 +450,11 @@
   f (stPostSignature (stPostScopeState s)) <&>
   \x -> s {stPostScopeState = (stPostScopeState s) {stPostSignature = x}}
 
+stModuleParameters :: Lens' (ModuleParamDict) TCState
+stModuleParameters f s =
+  f (stPostModuleParameters (stPostScopeState s)) <&>
+  \x -> s {stPostScopeState = (stPostScopeState s) {stPostModuleParameters = x}}
+
 stImportsDisplayForms :: Lens' DisplayForms TCState
 stImportsDisplayForms f s =
   f (stPostImportsDisplayForms (stPostScopeState s)) <&>
@@ -435,14 +462,19 @@
 
 stImportedDisplayForms :: Lens' DisplayForms TCState
 stImportedDisplayForms f s =
-  f (stPostImportedDisplayForms (stPostScopeState s)) <&>
-  \x -> s {stPostScopeState = (stPostScopeState s) {stPostImportedDisplayForms = x}}
+  f (stPreImportedDisplayForms (stPreScopeState s)) <&>
+  \x -> s {stPreScopeState = (stPreScopeState s) {stPreImportedDisplayForms = x}}
 
 stCurrentModule :: Lens' (Maybe ModuleName) TCState
 stCurrentModule f s =
   f (stPostCurrentModule (stPostScopeState s)) <&>
   \x -> s {stPostScopeState = (stPostScopeState s) {stPostCurrentModule = x}}
 
+stImportedInstanceDefs :: Lens' InstanceTable TCState
+stImportedInstanceDefs f s =
+  f (stPreImportedInstanceDefs (stPreScopeState s)) <&>
+  \x -> s {stPreScopeState = (stPreScopeState s) {stPreImportedInstanceDefs = x}}
+
 stInstanceDefs :: Lens' TempInstanceTable TCState
 stInstanceDefs f s =
   f (stPostInstanceDefs (stPostScopeState s)) <&>
@@ -453,7 +485,12 @@
   f (stPostStatistics (stPostScopeState s)) <&>
   \x -> s {stPostScopeState = (stPostScopeState s) {stPostStatistics = x}}
 
-stMutualBlocks :: Lens' (Map MutualId (Set QName)) TCState
+stTCWarnings :: Lens' [TCWarning] TCState
+stTCWarnings f s =
+  f (stPostTCWarnings (stPostScopeState s)) <&>
+  \x -> s {stPostScopeState = (stPostScopeState s) {stPostTCWarnings = x}}
+
+stMutualBlocks :: Lens' (Map MutualId MutualBlock) TCState
 stMutualBlocks f s =
   f (stPostMutualBlocks (stPostScopeState s)) <&>
   \x -> s {stPostScopeState = (stPostScopeState s) {stPostMutualBlocks = x}}
@@ -595,6 +632,11 @@
 type SourceToModule = Map AbsolutePath TopLevelModuleName
 
 -- | Creates a 'SourceToModule' map based on 'stModuleToSource'.
+--
+--   O(n log n).
+--
+--   For a single reverse lookup in 'stModuleToSource',
+--   rather use 'lookupModuleFromSourse'.
 
 sourceToModule :: TCM SourceToModule
 sourceToModule =
@@ -603,6 +645,14 @@
      .  Map.toList
     <$> use stModuleToSource
 
+-- | Lookup an 'AbsolutePath' in 'sourceToModule'.
+--
+--   O(n).
+
+lookupModuleFromSource :: AbsolutePath -> TCM (Maybe TopLevelModuleName)
+lookupModuleFromSource f =
+  fmap fst . List.find ((f ==) . snd) . Map.toList <$> use stModuleToSource
+
 ---------------------------------------------------------------------------
 -- ** Interface
 ---------------------------------------------------------------------------
@@ -686,12 +736,18 @@
 -- ** Closure
 ---------------------------------------------------------------------------
 
-data Closure a = Closure { clSignature  :: Signature
-                         , clEnv        :: TCEnv
-                         , clScope      :: ScopeInfo
-                         , clValue      :: a
-                         }
-    deriving (Typeable)
+data Closure a = Closure
+  { clSignature        :: Signature
+  , clEnv              :: TCEnv
+  , clScope            :: ScopeInfo
+  , clModuleParameters :: ModuleParamDict
+      -- ^ Since module parameters are currently stored in 'TCState'
+      --   not in 'TCEnv', we save them here.
+      --   The map contains for each 'ModuleName' @M@ with module telescope @Γ_M@
+      --   a substitution @Γ ⊢ ρ_M : Γ_M@ from the current context @Γ = envContext (clEnv)@.
+  , clValue            :: a
+  }
+    deriving (Typeable, Functor, Foldable)
 
 instance Show a => Show (Closure a) where
   show cl = "Closure " ++ show (clValue cl)
@@ -704,7 +760,8 @@
     env   <- ask
     sig   <- use stSignature
     scope <- use stScope
-    return $ Closure sig env scope x
+    pars  <- use stModuleParameters
+    return $ Closure sig env scope pars x
 
 ---------------------------------------------------------------------------
 -- ** Constraints
@@ -758,6 +815,38 @@
   getRange (FindInScope x cands) = getRange x
 -}
 
+instance Free' Constraint c where
+  freeVars' c =
+    case c of
+      ValueCmp _ t u v      -> freeVars' (t, (u, v))
+      ElimCmp _ t u es es'  -> freeVars' ((t, u), (es, es'))
+      TypeCmp _ t t'        -> freeVars' (t, t')
+      TelCmp _ _ _ tel tel' -> freeVars' (tel, tel')
+      SortCmp _ s s'        -> freeVars' (s, s')
+      LevelCmp _ l l'       -> freeVars' (l, l')
+      UnBlock _             -> mempty
+      Guarded c _           -> freeVars' c
+      IsEmpty _ t           -> freeVars' t
+      CheckSizeLtSat u      -> freeVars' u
+      FindInScope _ _ cs    -> freeVars' cs
+
+instance TermLike Constraint where
+  foldTerm f = \case
+      ValueCmp _ t u v       -> foldTerm f (t, u, v)
+      ElimCmp _ t u es es'   -> foldTerm f (t, u, es, es')
+      TypeCmp _ t t'         -> foldTerm f (t, t')
+      LevelCmp _ l l'        -> foldTerm f (l, l')
+      IsEmpty _ t            -> foldTerm f t
+      CheckSizeLtSat u       -> foldTerm f u
+      TelCmp _ _ _ tel1 tel2 -> __IMPOSSIBLE__  -- foldTerm f (tel1, tel2) -- Not yet implemented
+      SortCmp _ s1 s2        -> __IMPOSSIBLE__  -- foldTerm f (s1, s2) -- Not yet implemented
+      UnBlock _              -> __IMPOSSIBLE__  -- mempty     -- Not yet implemented
+      Guarded c _            -> __IMPOSSIBLE__  -- foldTerm c -- Not yet implemented
+      FindInScope _ _ cs     -> __IMPOSSIBLE__  -- Not yet implemented
+  traverseTerm f c  = __IMPOSSIBLE__ -- Not yet implemented
+  traverseTermM f c = __IMPOSSIBLE__ -- Not yet implemented
+
+
 data Comparison = CmpEq | CmpLeq
   deriving (Eq, Typeable)
 
@@ -811,6 +900,22 @@
 data Open a = OpenThing { openThingCtxIds :: [CtxId], openThing :: a }
     deriving (Typeable, Show, Functor)
 
+instance Decoration Open where
+  traverseF f (OpenThing cxt x) = OpenThing cxt <$> f x
+
+data Local a = Local ModuleName a   -- ^ Local to a given module, the value
+                                    -- should have module parameters as free variables.
+             | Global a             -- ^ Global value, should be closed.
+    deriving (Typeable, Show, Functor, Foldable, Traversable)
+
+isGlobal :: Local a -> Bool
+isGlobal Global{} = True
+isGlobal Local{}  = False
+
+instance Decoration Local where
+  traverseF f (Local m x) = Local m <$> f x
+  traverseF f (Global x)  = Global <$> f x
+
 ---------------------------------------------------------------------------
 -- * Judgements
 --
@@ -871,7 +976,6 @@
 
 data MetaInstantiation
         = InstV [Arg String] Term -- ^ solved by term (abstracted over some free variables)
-        | InstS Term         -- ^ solved by @Lam .. Sort s@
         | Open               -- ^ unsolved
         | OpenIFS            -- ^ open, to be instantiated as "implicit from scope"
         | BlockedConst Term  -- ^ solution blocked by unsolved constraints
@@ -894,7 +998,6 @@
 
 instance Show MetaInstantiation where
   show (InstV tel t) = "InstV " ++ show tel ++ " (" ++ show t ++ ")"
-  show (InstS s) = "InstS (" ++ show s ++ ")"
   show Open      = "Open"
   show OpenIFS   = "OpenIFS"
   show (BlockedConst t) = "BlockedConst (" ++ show t ++ ")"
@@ -984,6 +1087,9 @@
 data InteractionPoint = InteractionPoint
   { ipRange :: Range        -- ^ The position of the interaction point.
   , ipMeta  :: Maybe MetaId -- ^ The meta variable, if any, holding the type etc.
+  , ipClause:: IPClause
+      -- ^ The clause of the interaction point (if any).
+      --   Used for case splitting.
   }
 
 instance Eq InteractionPoint where (==) = (==) `on` ipMeta
@@ -991,6 +1097,19 @@
 -- | Data structure managing the interaction points.
 type InteractionPoints = Map InteractionId InteractionPoint
 
+-- | Which clause is an interaction point located in?
+data IPClause = IPClause
+  { ipcQName    :: QName  -- ^ The name of the function.
+  , ipcClauseNo :: Int    -- ^ The number of the clause of this function.
+  , ipcClause   :: A.RHS  -- ^ The original AST clause rhs.
+  }
+  | IPNoClause -- ^ The interaction point is not in the rhs of a clause.
+
+instance Eq IPClause where
+  IPNoClause     == IPNoClause       = True
+  IPClause x i _ == IPClause x' i' _ = x == x' && i == i'
+  _              == _                = False
+
 ---------------------------------------------------------------------------
 -- ** Signature
 ---------------------------------------------------------------------------
@@ -1020,7 +1139,7 @@
 type Sections    = Map ModuleName Section
 type Definitions = HashMap QName Definition
 type RewriteRuleMap = HashMap QName RewriteRules
-type DisplayForms = HashMap QName [Open DisplayForm]
+type DisplayForms = HashMap QName [LocalDisplayForm]
 
 data Section = Section { _secTelescope :: Telescope }
   deriving (Typeable, Show)
@@ -1049,25 +1168,29 @@
 data DisplayForm = Display
   { dfFreeVars :: Nat
     -- ^ Number @n@ of free variables in 'dfRHS'.
-  , dfPats     :: [Term]
+  , dfPats     :: Elims
     -- ^ Left hand side patterns, where @var 0@ stands for a pattern
     --   variable.  There should be @n@ occurrences of @var0@ in
     --   'dfPats'.
+    --   The 'ArgInfo' is ignored in these patterns.
   , dfRHS      :: DisplayTerm
     -- ^ Right hand side, with @n@ free variables.
   }
   deriving (Typeable, Show)
 
+type LocalDisplayForm = Local DisplayForm
+
 -- | A structured presentation of a 'Term' for reification into
 --   'Abstract.Syntax'.
 data DisplayTerm
-  = DWithApp DisplayTerm [DisplayTerm] Args
-    -- ^ @(f vs | ws) us@.
+  = DWithApp DisplayTerm [DisplayTerm] Elims
+    -- ^ @(f vs | ws) es@.
     --   The first 'DisplayTerm' is the parent function @f@ with its args @vs@.
     --   The list of 'DisplayTerm's are the with expressions @ws@.
-    --   The 'Args' are additional arguments @us@
-    --   (possible in case the with-application is of function type).
-  | DCon ConHead [Arg DisplayTerm]
+    --   The 'Elims' are additional arguments @es@
+    --   (possible in case the with-application is of function type)
+    --   or projections (if it is of record type).
+  | DCon ConHead ConInfo [Arg DisplayTerm]
     -- ^ @c vs@.
   | DDef QName [Elim' DisplayTerm]
     -- ^ @d vs@.
@@ -1077,8 +1200,18 @@
     -- ^ @v@.
   deriving (Typeable, Show)
 
+instance Free' DisplayForm c where
+  freeVars' (Display n ps t) = bind (freeVars' ps) `mappend` bind' n (freeVars' t)
+
+instance Free' DisplayTerm c where
+  freeVars' (DWithApp t ws es) = freeVars' (t, (ws, es))
+  freeVars' (DCon _ _ vs)      = freeVars' vs
+  freeVars' (DDef _ es)        = freeVars' es
+  freeVars' (DDot v)           = freeVars' v
+  freeVars' (DTerm v)          = freeVars' v
+
 -- | By default, we have no display form.
-defaultDisplayForm :: QName -> [Open DisplayForm]
+defaultDisplayForm :: QName -> [LocalDisplayForm]
 defaultDisplayForm c = []
 
 defRelevance :: Definition -> Relevance
@@ -1086,15 +1219,16 @@
 
 -- | Non-linear (non-constructor) first-order pattern.
 data NLPat
-  = PVar (Maybe CtxId) !Int
-    -- ^ Matches anything (modulo non-linearity).
+  = PVar (Maybe CtxId) !Int [Arg Int]
+    -- ^ Matches anything (modulo non-linearity) that only contains bound
+    --   variables that occur in the given arguments.
   | PWild
     -- ^ Matches anything (e.g. irrelevant terms).
   | PDef QName PElims
     -- ^ Matches @f es@
   | PLam ArgInfo (Abs NLPat)
     -- ^ Matches @λ x → t@
-  | PPi (Dom (Type' NLPat)) (Abs (Type' NLPat))
+  | PPi (Dom NLPType) (Abs NLPType)
     -- ^ Matches @(x : A) → B@
   | PBoundVar {-# UNPACK #-} !Int PElims
     -- ^ Matches @x es@ where x is a lambda-bound variable
@@ -1103,14 +1237,20 @@
   deriving (Typeable, Show)
 type PElims = [Elim' NLPat]
 
+data NLPType = NLPType
+  { nlpTypeLevel :: NLPat  -- always PWild or PVar (with all bound variables in scope)
+  , nlpTypeUnEl  :: NLPat
+  } deriving (Typeable, Show)
+
 type RewriteRules = [RewriteRule]
 
 -- | Rewrite rules can be added independently from function clauses.
 data RewriteRule = RewriteRule
-  { rewName    :: QName      -- ^ Name of rewrite rule @q : Γ → lhs ≡ rhs@
+  { rewName    :: QName      -- ^ Name of rewrite rule @q : Γ → f ps ≡ rhs@
                              --   where @≡@ is the rewrite relation.
   , rewContext :: Telescope  -- ^ @Γ@.
-  , rewLHS     :: NLPat      -- ^ @Γ ⊢ lhs : t@.
+  , rewHead    :: QName      -- ^ @f@.
+  , rewPats    :: PElims     -- ^ @Γ ⊢ ps  : t@.
   , rewRHS     :: Term       -- ^ @Γ ⊢ rhs : t@.
   , rewType    :: Type       -- ^ @Γ ⊢ t@.
   }
@@ -1166,7 +1306,7 @@
     --   23,    3
     --   27,    1
 
-  , defDisplay        :: [Open DisplayForm]
+  , defDisplay        :: [LocalDisplayForm]
   , defMutual         :: MutualId
   , defCompiledRep    :: CompiledRepresentation
   , defInstance       :: Maybe QName
@@ -1174,10 +1314,15 @@
   , defCopy           :: Bool
     -- ^ Has this function been created by a module
                          -- instantiation?
+  , defMatchable      :: Bool
+    -- ^ Is the def matched against in a rewrite rule?
   , theDef            :: Defn
   }
     deriving (Typeable, Show)
 
+theDefLens :: Lens' Defn Definition
+theDefLens f d = f (theDef d) <&> \ df -> d { theDef = df }
+
 -- | Create a definition with sensible defaults.
 defaultDefn :: ArgInfo -> QName -> Type -> Defn -> Definition
 defaultDefn info x t def = Defn
@@ -1191,13 +1336,14 @@
   , defCompiledRep    = noCompiledRep
   , defInstance       = Nothing
   , defCopy           = False
+  , defMatchable      = False
   , theDef            = def
   }
 
 type HaskellCode = String
 type HaskellType = String
 type EpicCode    = String
-type JSCode      = JS.Exp
+type JSCode      = String
 
 data HaskellRepresentation
       = HsDefn HaskellType HaskellCode
@@ -1240,19 +1386,21 @@
 
 -- | Additional information for projection 'Function's.
 data Projection = Projection
-  { projProper    :: Maybe QName
-    -- ^ @Nothing@ if only projection-like, @Just q@ if record projection,
-    --   where @q@ is the original projection name
-    --   (current name could be from module app).
-  , projFromType  :: QName
-    -- ^ Type projected from.  Record type if @projProper = Just{}@.
+  { projProper    :: Bool
+    -- ^ @False@ if only projection-like, @True@ if record projection.
+  , projOrig      :: QName
+    -- ^ The original projection name
+    --   (current name could be from module application).
+  , projFromType  :: Arg QName
+    -- ^ Type projected from. Record type if @projProper = Just{}@. Also
+    -- stores @ArgInfo@ of the principal argument.
   , projIndex     :: Int
     -- ^ Index of the record argument.
     --   Start counting with 1, because 0 means that
     --   it is already applied to the record value.
     --   This can happen in module instantiation, but
     --   then either the record value is @var 0@, or @funProjection == Nothing@.
-  , projDropPars  :: Term
+  , projLams :: ProjLams
     -- ^ Term @t@ to be be applied to record parameters and record value.
     --   The parameters will be dropped.
     --   In case of a proper projection, a postfix projection application
@@ -1260,22 +1408,56 @@
     --   (Invariant: the number of abstractions equals 'projIndex'.)
     --   In case of a projection-like function, just the function symbol
     --   is returned as 'Def':  @t = \ pars -> f@.
-  , projArgInfo   :: ArgInfo
-    -- ^ The info of the principal (record) argument.
   } deriving (Typeable, Show)
 
-data EtaEquality = Specified !Bool | Inferred !Bool deriving (Typeable,Show)
+-- | Abstractions to build projection function (dropping parameters).
+newtype ProjLams = ProjLams { getProjLams :: [Arg ArgName] }
+  deriving (Typeable, Show, Null)
 
+-- | Building the projection function (which drops the parameters).
+projDropPars :: Projection -> ProjOrigin -> Term
+-- Proper projections:
+projDropPars (Projection True d _ _ lams) o =
+  case initLast $ getProjLams lams of
+    Nothing -> Def d []
+    Just (pars, Arg i y) ->
+      let core = Lam i $ Abs y $ Var 0 [Proj o d] in
+      List.foldr (\ (Arg ai x) -> Lam ai . NoAbs x) core pars
+-- Projection-like functions:
+projDropPars (Projection False _ _ _ lams) o | null lams = __IMPOSSIBLE__
+projDropPars (Projection False d _ _ lams) o =
+  List.foldr (\ (Arg ai x) -> Lam ai . NoAbs x) (Def d []) $ init $ getProjLams lams
+
+-- | The info of the principal (record) argument.
+projArgInfo :: Projection -> ArgInfo
+projArgInfo (Projection _ _ _ _ lams) =
+  maybe __IMPOSSIBLE__ getArgInfo $ lastMaybe $ getProjLams lams
+
+-- | Should a record type admit eta-equality?
+data EtaEquality
+  = Specified !Bool  -- ^ User specifed 'eta-equality' or 'no-eta-equality'
+  | Inferred !Bool   -- ^ Positivity checker inferred whether eta is safe/
+  deriving (Typeable, Show, Eq)
+
 etaEqualityToBool :: EtaEquality -> Bool
 etaEqualityToBool (Specified b) = b
 etaEqualityToBool (Inferred b) = b
 
+-- | Make sure we do not overwrite a user specification.
 setEtaEquality :: EtaEquality -> Bool -> EtaEquality
 setEtaEquality e@Specified{} _ = e
 setEtaEquality _ b = Inferred b
 
+data FunctionFlag
+  = FunStatic  -- ^ Should calls to this function be normalised at compile-time?
+  | FunInline  -- ^ Should calls to this function be inlined by the compiler?
+  | FunMacro   -- ^ Is this function a macro?
+  deriving (Typeable, Eq, Ord, Enum, Show)
+
 data Defn = Axiom
             -- ^ Postulate.
+          | AbstractDefn
+            -- ^ Returned by 'getConstInfo' if definition is abstract.
           | Function
             { funClauses        :: [Clause]
             , funCompiled       :: Maybe CompiledClauses
@@ -1298,12 +1480,7 @@
               --   it is already applied to the record. (Can happen in module
               --   instantiation.) This information is used in the termination
               --   checker.
-            , funStatic         :: Bool
-              -- ^ Should calls to this function be normalised at compile-time?
-            , funInline         :: Bool
-              -- ^ Should calls to this function be inlined by the compiler?
-            , funSmashable      :: Bool
-              -- ^ Are we allowed to smash this function?
+            , funFlags          :: Set FunctionFlag
             , funTerminates     :: Maybe Bool
               -- ^ Has this function been termination checked?  Did it pass?
             , funExtLam         :: Maybe ExtLamInfo
@@ -1332,7 +1509,6 @@
             , recClause         :: Maybe Clause
             , recConHead        :: ConHead              -- ^ Constructor name and fields.
             , recNamedCon       :: Bool
-            , recConType        :: Type                 -- ^ The record constructor's type. (Includes record parameters.)
             , recFields         :: [Arg QName]
             , recTel            :: Telescope            -- ^ The record field telescope. (Includes record parameters.)
                                                         --   Note: @TelV recTel _ == telView' recConType@.
@@ -1352,6 +1528,7 @@
             , conData   :: QName       -- ^ Name of datatype or record type.
             , conAbstr  :: IsAbstract
             , conInd    :: Induction   -- ^ Inductive or coinductive?
+            , conErased :: [Bool]      -- ^ Which arguments are erased at runtime (computed during compilation to treeless)
             }
           | Primitive
             { primAbstr :: IsAbstract
@@ -1379,15 +1556,27 @@
   , funAbstr       = ConcreteDef
   , funDelayed     = NotDelayed
   , funProjection  = Nothing
-  , funStatic      = False
-  , funInline      = False
-  , funSmashable   = True
+  , funFlags       = Set.empty
   , funTerminates  = Nothing
   , funExtLam      = Nothing
   , funWith        = Nothing
   , funCopatternLHS = False
   }
 
+funFlag :: FunctionFlag -> Lens' Bool Defn
+funFlag flag f def@Function{ funFlags = flags } =
+  f (Set.member flag flags) <&>
+  \ b -> def{ funFlags = (if b then Set.insert else Set.delete) flag flags }
+funFlag _ f def = f False <&> const def
+
+funStatic, funInline, funMacro :: Lens' Bool Defn
+funStatic       = funFlag FunStatic
+funInline       = funFlag FunInline
+funMacro        = funFlag FunMacro
+
+isMacro :: Defn -> Bool
+isMacro = (^. funMacro)
+
 -- | Checking whether we are dealing with a function yet to be defined.
 isEmptyFunction :: Defn -> Bool
 isEmptyFunction def =
@@ -1396,7 +1585,7 @@
     _ -> False
 
 isCopatternLHS :: [Clause] -> Bool
-isCopatternLHS = List.any (List.any (isJust . A.isProjP) . clausePats)
+isCopatternLHS = List.any (List.any (isJust . A.isProjP) . namedClausePats)
 
 recCon :: Defn -> QName
 recCon Record{ recConHead } = conName recConHead
@@ -1428,10 +1617,13 @@
   empty = NoSimplification
   null  = (== NoSimplification)
 
+instance Semigroup Simplification where
+  YesSimplification <> _ = YesSimplification
+  NoSimplification  <> s = s
+
 instance Monoid Simplification where
   mempty = NoSimplification
-  mappend YesSimplification _ = YesSimplification
-  mappend NoSimplification  s = s
+  mappend = (<>)
 
 data Reduced no yes = NoReduction no | YesReduction Simplification yes
     deriving (Typeable, Functor)
@@ -1522,16 +1714,10 @@
 defNonterminating Defn{theDef = Function{funTerminates = Just False}} = True
 defNonterminating _                                                   = False
 
--- | Beware when using this function on a @def@ obtained with @getConstInfo q@!
---   If the identifier @q@ is abstract, 'getConstInfo' will turn its @def@ into
---   an 'Axiom' and you always get 'ConcreteDef', paradoxically.
---   Use it in 'IgnoreAbstractMode', like this:
---   @
---     a <- ignoreAbstractMode $ defAbstract <$> getConstInfo q
---   @
 defAbstract :: Definition -> IsAbstract
 defAbstract d = case theDef d of
     Axiom{}                   -> ConcreteDef
+    AbstractDefn{}            -> AbstractDef
     Function{funAbstr = a}    -> a
     Datatype{dataAbstr = a}   -> a
     Record{recAbstr = a}      -> a
@@ -1582,7 +1768,7 @@
           | IsTypeCall A.Expr Sort
           | IsType_ A.Expr
           | InferVar Name
-          | InferDef Range QName
+          | InferDef QName
           | CheckArguments Range [NamedArg A.Expr] Type Type
           | CheckDataDef Range Name [A.LamBinding] [A.Constructor]
           | CheckRecDef Range Name [A.LamBinding] [A.Constructor]
@@ -1641,7 +1827,7 @@
     getRange (IsTypeCall e s)                = getRange e
     getRange (IsType_ e)                     = getRange e
     getRange (InferVar x)                    = getRange x
-    getRange (InferDef _ f)                  = getRange f
+    getRange (InferDef f)                    = getRange f
     getRange (CheckArguments r _ _ _)        = r
     getRange (CheckDataDef i _ _ _)          = getRange i
     getRange (CheckRecDef i _ _ _)           = getRange i
@@ -1667,7 +1853,7 @@
 
 -- | The instance table is a @Map@ associating to every name of
 --   record/data type/postulate its list of instances
-type InstanceTable = Map QName [QName]
+type InstanceTable = Map QName (Set QName)
 
 -- | When typechecking something of the following form:
 --
@@ -1677,7 +1863,7 @@
 --
 --   it's not yet known where to add @x@, so we add it to a list of
 --   unresolved instances and we'll deal with it later.
-type TempInstanceTable = (InstanceTable , [QName])
+type TempInstanceTable = (InstanceTable , Set QName)
 
 ---------------------------------------------------------------------------
 -- ** Builtin things
@@ -1744,6 +1930,18 @@
 -- * Type checking environment
 ---------------------------------------------------------------------------
 
+data ModuleParameters = ModuleParams
+  { mpSubstitution :: Substitution
+      -- ^ @Δ ⊢ σ : Γ@ for a @module M Γ@ where @Δ@ is the current context @envContext@.
+  } deriving (Typeable, Show)
+
+defaultModuleParameters :: ModuleParameters
+defaultModuleParameters = ModuleParams IdS
+
+type ModuleParamDict = Map ModuleName ModuleParameters
+  -- ^ The map contains for each 'ModuleName' @M@ with module telescope @Γ_M@
+  --   a substitution @Γ ⊢ ρ_M : Γ_M@ from the current context @Γ = envContext (clEnv)@.
+
 data TCEnv =
     TCEnv { envContext             :: Context
           , envLetBindings         :: LetBindings
@@ -1775,24 +1973,20 @@
                 -- Other value: @Relevant@, then only relevant decls. are avail.
           , envDisplayFormsEnabled :: Bool
                 -- ^ Sometimes we want to disable display forms.
-          , envReifyInteractionPoints :: Bool
-                -- ^ should we try to recover interaction points when reifying?
-                --   disabled when generating types for with functions
-          , envEtaContractImplicit :: Bool
-                -- ^ it's safe to eta contract implicit lambdas as long as we're
-                --   not going to reify and retypecheck (like when doing with
-                --   abstraction)
           , envRange :: Range
           , envHighlightingRange :: Range
                 -- ^ Interactive highlighting uses this range rather
                 --   than 'envRange'.
+          , envClause :: IPClause
+                -- ^ What is the current clause we are type-checking?
+                --   Will be recorded in interaction points in this clause.
           , envCall  :: Maybe (Closure Call)
                 -- ^ what we're doing at the moment
           , envHighlightingLevel  :: HighlightingLevel
                 -- ^ Set to 'None' when imported modules are
                 --   type-checked.
           , envHighlightingMethod :: HighlightingMethod
-          , envModuleNestingLevel :: Integer
+          , envModuleNestingLevel :: !Int
                 -- ^ This number indicates how far away from the
                 --   top-level module Agda has come when chasing
                 --   modules. The level of a given module is not
@@ -1822,12 +2016,20 @@
                 --   No by default.
                 --   Yes for rewriting feature.
           , envPrintDomainFreePi :: Bool
-                -- ^ When True types will be omitted from printed pi types if they
-                --   can be inferred
+                -- ^ When @True@, types will be omitted from printed pi types if they
+                --   can be inferred.
+          , envPrintMetasBare :: Bool
+                -- ^ When @True@, throw away meta numbers and meta elims.
+                --   This is used for reifying terms for feeding into the
+                --   user's source code, e.g., for the interaction tactics @solveAll@.
           , envInsideDotPattern :: Bool
                 -- ^ Used by the scope checker to make sure that certain forms
                 --   of expressions are not used inside dot patterns: extended
                 --   lambdas and let-expressions.
+          , envUnquoteFlags :: UnquoteFlags
+          , envInstanceDepth :: !Int
+                -- ^ Until we get a termination checker for instance search (#1743) we
+                --   limit the search depth to ensure termination.
           }
     deriving (Typeable)
 
@@ -1855,10 +2057,9 @@
   -- definition (which sets 'AbstractMode').
                 , envRelevance           = Relevant
                 , envDisplayFormsEnabled = True
-                , envReifyInteractionPoints = True
-                , envEtaContractImplicit    = True
                 , envRange                  = noRange
                 , envHighlightingRange      = noRange
+                , envClause                 = IPNoClause
                 , envCall                   = Nothing
                 , envHighlightingLevel      = None
                 , envHighlightingMethod     = Indirect
@@ -1870,12 +2071,125 @@
                 , envAllowedReductions      = allReductions
                 , envCompareBlocked         = False
                 , envPrintDomainFreePi      = False
+                , envPrintMetasBare         = False
                 , envInsideDotPattern       = False
+                , envUnquoteFlags           = defaultUnquoteFlags
+                , envInstanceDepth          = 0
                 }
 
 disableDestructiveUpdate :: TCM a -> TCM a
 disableDestructiveUpdate = local $ \e -> e { envAllowDestructiveUpdate = False }
 
+data UnquoteFlags = UnquoteFlags
+  { _unquoteNormalise :: Bool }
+  deriving (Typeable)
+
+defaultUnquoteFlags :: UnquoteFlags
+defaultUnquoteFlags = UnquoteFlags
+  { _unquoteNormalise = False }
+
+unquoteNormalise :: Lens' Bool UnquoteFlags
+unquoteNormalise f e = f (_unquoteNormalise e) <&> \ x -> e { _unquoteNormalise = x }
+
+eUnquoteNormalise :: Lens' Bool TCEnv
+eUnquoteNormalise = eUnquoteFlags . unquoteNormalise
+
+-- * e-prefixed lenses
+------------------------------------------------------------------------
+
+eContext :: Lens' Context TCEnv
+eContext f e = f (envContext e) <&> \ x -> e { envContext = x }
+
+eLetBindings :: Lens' LetBindings TCEnv
+eLetBindings f e = f (envLetBindings e) <&> \ x -> e { envLetBindings = x }
+
+eCurrentModule :: Lens' ModuleName TCEnv
+eCurrentModule f e = f (envCurrentModule e) <&> \ x -> e { envCurrentModule = x }
+
+eCurrentPath :: Lens' (Maybe AbsolutePath) TCEnv
+eCurrentPath f e = f (envCurrentPath e) <&> \ x -> e { envCurrentPath = x }
+
+eAnonymousModules :: Lens' [(ModuleName, Nat)] TCEnv
+eAnonymousModules f e = f (envAnonymousModules e) <&> \ x -> e { envAnonymousModules = x }
+
+eImportPath :: Lens' [C.TopLevelModuleName] TCEnv
+eImportPath f e = f (envImportPath e) <&> \ x -> e { envImportPath = x }
+
+eMutualBlock :: Lens' (Maybe MutualId) TCEnv
+eMutualBlock f e = f (envMutualBlock e) <&> \ x -> e { envMutualBlock = x }
+
+eTerminationCheck :: Lens' (TerminationCheck ()) TCEnv
+eTerminationCheck f e = f (envTerminationCheck e) <&> \ x -> e { envTerminationCheck = x }
+
+eSolvingConstraints :: Lens' Bool TCEnv
+eSolvingConstraints f e = f (envSolvingConstraints e) <&> \ x -> e { envSolvingConstraints = x }
+
+eCheckingWhere :: Lens' Bool TCEnv
+eCheckingWhere f e = f (envCheckingWhere e) <&> \ x -> e { envCheckingWhere = x }
+
+eAssignMetas :: Lens' Bool TCEnv
+eAssignMetas f e = f (envAssignMetas e) <&> \ x -> e { envAssignMetas = x }
+
+eActiveProblems :: Lens' [ProblemId] TCEnv
+eActiveProblems f e = f (envActiveProblems e) <&> \ x -> e { envActiveProblems = x }
+
+eAbstractMode :: Lens' AbstractMode TCEnv
+eAbstractMode f e = f (envAbstractMode e) <&> \ x -> e { envAbstractMode = x }
+
+eRelevance :: Lens' Relevance TCEnv
+eRelevance f e = f (envRelevance e) <&> \ x -> e { envRelevance = x }
+
+eDisplayFormsEnabled :: Lens' Bool TCEnv
+eDisplayFormsEnabled f e = f (envDisplayFormsEnabled e) <&> \ x -> e { envDisplayFormsEnabled = x }
+
+eRange :: Lens' Range TCEnv
+eRange f e = f (envRange e) <&> \ x -> e { envRange = x }
+
+eHighlightingRange :: Lens' Range TCEnv
+eHighlightingRange f e = f (envHighlightingRange e) <&> \ x -> e { envHighlightingRange = x }
+
+eCall :: Lens' (Maybe (Closure Call)) TCEnv
+eCall f e = f (envCall e) <&> \ x -> e { envCall = x }
+
+eHighlightingLevel :: Lens' HighlightingLevel TCEnv
+eHighlightingLevel f e = f (envHighlightingLevel e) <&> \ x -> e { envHighlightingLevel = x }
+
+eHighlightingMethod :: Lens' HighlightingMethod TCEnv
+eHighlightingMethod f e = f (envHighlightingMethod e) <&> \ x -> e { envHighlightingMethod = x }
+
+eModuleNestingLevel :: Lens' Int TCEnv
+eModuleNestingLevel f e = f (envModuleNestingLevel e) <&> \ x -> e { envModuleNestingLevel = x }
+
+eAllowDestructiveUpdate :: Lens' Bool TCEnv
+eAllowDestructiveUpdate f e = f (envAllowDestructiveUpdate e) <&> \ x -> e { envAllowDestructiveUpdate = x }
+
+eExpandLast :: Lens' ExpandHidden TCEnv
+eExpandLast f e = f (envExpandLast e) <&> \ x -> e { envExpandLast = x }
+
+eAppDef :: Lens' (Maybe QName) TCEnv
+eAppDef f e = f (envAppDef e) <&> \ x -> e { envAppDef = x }
+
+eSimplification :: Lens' Simplification TCEnv
+eSimplification f e = f (envSimplification e) <&> \ x -> e { envSimplification = x }
+
+eAllowedReductions :: Lens' AllowedReductions TCEnv
+eAllowedReductions f e = f (envAllowedReductions e) <&> \ x -> e { envAllowedReductions = x }
+
+eCompareBlocked :: Lens' Bool TCEnv
+eCompareBlocked f e = f (envCompareBlocked e) <&> \ x -> e { envCompareBlocked = x }
+
+ePrintDomainFreePi :: Lens' Bool TCEnv
+ePrintDomainFreePi f e = f (envPrintDomainFreePi e) <&> \ x -> e { envPrintDomainFreePi = x }
+
+eInsideDotPattern :: Lens' Bool TCEnv
+eInsideDotPattern f e = f (envInsideDotPattern e) <&> \ x -> e { envInsideDotPattern = x }
+
+eUnquoteFlags :: Lens' UnquoteFlags TCEnv
+eUnquoteFlags f e = f (envUnquoteFlags e) <&> \ x -> e { envUnquoteFlags = x }
+
+eInstanceDepth :: Lens' Int TCEnv
+eInstanceDepth f e = f (envInstanceDepth e) <&> \ x -> e { envInstanceDepth = x }
+
 ---------------------------------------------------------------------------
 -- ** Context
 ---------------------------------------------------------------------------
@@ -1904,8 +2218,17 @@
   = AbstractMode        -- ^ Abstract things in the current module can be accessed.
   | ConcreteMode        -- ^ No abstract things can be accessed.
   | IgnoreAbstractMode  -- ^ All abstract things can be accessed.
-  deriving (Typeable, Show)
+  deriving (Typeable, Show, Eq)
 
+aDefToMode :: IsAbstract -> AbstractMode
+aDefToMode AbstractDef = AbstractMode
+aDefToMode ConcreteDef = ConcreteMode
+
+aModeToDef :: AbstractMode -> IsAbstract
+aModeToDef AbstractMode = AbstractDef
+aModeToDef ConcreteMode = ConcreteDef
+aModeToDef _ = __IMPOSSIBLE__
+
 ---------------------------------------------------------------------------
 -- ** Insertion of implicit arguments
 ---------------------------------------------------------------------------
@@ -1926,28 +2249,53 @@
 data Candidate  = Candidate { candidateTerm :: Term
                             , candidateType :: Type
                             , candidateEti  :: ExplicitToInstance
+                            , candidateOverlappable :: Bool
                             }
   deriving (Show)
 
+instance Free' Candidate c where
+  freeVars' (Candidate t u _ _) = freeVars' (t, u)
 
 ---------------------------------------------------------------------------
--- * Type checking errors
+-- * Type checking warnings (aka non-fatal errors)
 ---------------------------------------------------------------------------
 
--- Occurence of a name in a datatype definition
-data Occ = OccCon { occDatatype :: QName
-                  , occConstructor :: QName
-                  , occPosition :: OccPos
-                  }
-         | OccClause { occFunction :: QName
-                     , occClause   :: Int
-                     , occPosition :: OccPos
-                     }
-  deriving (Show)
+-- | A non-fatal error is an error which does not prevent us from
+-- checking the document further and interacting with the user.
 
-data OccPos = NonPositively | ArgumentTo Nat QName
-  deriving (Show)
+-- We keep the state for termination issues, positivity issues and
+-- unsolved constraints from when we encountered the warning so that
+-- we can print it later
+data Warning =
+    TerminationIssue         [TerminationError]
+  | NotStrictlyPositive      QName OccursWhere
+  | UnsolvedMetaVariables    [Range]  -- ^ Do not use directly with 'warning'
+  | UnsolvedInteractionMetas [Range]  -- ^ Do not use directly with 'warning'
+  | UnsolvedConstraints      Constraints
+    -- ^ Do not use directly with 'warning'
+  | OldBuiltin               String String
+    -- ^ In `OldBuiltin old new`, the BUILTIN old has been replaced by new
+  | EmptyRewritePragma
+    -- ^ If the user wrote just @{-# REWRITE #-}@.
+  | ParseWarning             ParseWarning
+  deriving Show
 
+data TCWarning
+  = TCWarning
+    { tcWarningState   :: TCState
+        -- ^ The state in which the warning was raised.
+    , tcWarningClosure :: Closure Warning
+        -- ^ The warning and the environment in which it was raised.
+    }
+  deriving Show
+
+tcWarning :: TCWarning -> Warning
+tcWarning = clValue . tcWarningClosure
+
+---------------------------------------------------------------------------
+-- * Type checking errors
+---------------------------------------------------------------------------
+
 -- | Information about a call.
 
 data CallInfo = CallInfo
@@ -2083,13 +2431,13 @@
         | CannotEliminateWithPattern (NamedArg A.Pattern) Type
         | TooManyArgumentsInLHS Type
         | WrongNumberOfConstructorArguments QName Nat Nat
-        | ShouldBeEmpty Type [Pattern]
+        | ShouldBeEmpty Type [DeBruijnPattern]
         | ShouldBeASort Type
             -- ^ The given type should have been a sort.
         | ShouldBePi Type
             -- ^ The given type should have been a pi.
         | ShouldBeRecordType Type
-        | ShouldBeRecordPattern Pattern
+        | ShouldBeRecordPattern DeBruijnPattern
         | NotAProjectionPattern (NamedArg A.Pattern)
         | NotAProperTerm
         | SetOmegaNotValidType
@@ -2137,7 +2485,7 @@
         | TooManyFields QName [C.Name]
         | DuplicateFields [C.Name]
         | DuplicateConstructors [C.Name]
-        | WithOnFreeVariable A.Expr
+        | WithOnFreeVariable A.Expr Term
         | UnexpectedWithPatterns [A.Pattern]
         | WithClausePatternMismatch A.Pattern Pattern
         | FieldOutsideRecord
@@ -2146,8 +2494,8 @@
     -- TODO: Remove some of the constructors in this section, now that
     -- the SplitError constructor has been added?
         | IncompletePatternMatching Term [Elim] -- can only happen if coverage checking is switched off
-        | CoverageFailure QName [[Arg DeBruijnPattern]]
-        | UnreachableClauses QName [[Arg DeBruijnPattern]]
+        | CoverageFailure QName [[NamedArg DeBruijnPattern]]
+        | UnreachableClauses QName [[NamedArg DeBruijnPattern]]
         | CoverageCantSplitOn QName Telescope Args Args
         | CoverageCantSplitIrrelevantType Type
         | CoverageCantSplitType Type
@@ -2160,13 +2508,11 @@
         | UnificationStuck Telescope [Term] [Term]
         | SplitError SplitError
     -- Positivity errors
-        | NotStrictlyPositive QName [Occ]
+        | TooManyPolarities QName Integer
     -- Import errors
         | LocalVsImportedModuleClash ModuleName
-        | UnsolvedMetas [Range]
-        | UnsolvedConstraints Constraints
         | SolvedButOpenHoles
-          -- ^ Some interaction points (holes) have not be filled by user.
+          -- ^ Some interaction points (holes) have not been filled by user.
           --   There are not 'UnsolvedMetas' since unification solved them.
           --   This is an error, since interaction points are never filled
           --   without user interaction.
@@ -2174,6 +2520,8 @@
         | FileNotFound C.TopLevelModuleName [AbsolutePath]
         | OverlappingProjects AbsolutePath C.TopLevelModuleName C.TopLevelModuleName
         | AmbiguousTopLevelModuleName C.TopLevelModuleName [AbsolutePath]
+        | ModuleNameUnexpected C.TopLevelModuleName C.TopLevelModuleName
+          -- ^ Found module name, expected module name.
         | ModuleNameDoesntMatchFileName C.TopLevelModuleName [AbsolutePath]
         | ClashingFileNamesFor ModuleName [AbsolutePath]
         | ModuleDefinedInOtherFile C.TopLevelModuleName AbsolutePath AbsolutePath
@@ -2201,6 +2549,7 @@
             --   definition, but it wasn't of the form @m Delta@.
         | NotAnExpression C.Expr
         | NotAValidLetBinding D.NiceDeclaration
+        | NotValidBeforeField D.NiceDeclaration
         | NothingAppliedToHiddenArg C.Expr
         | NothingAppliedToInstanceArg C.Expr
     -- Pattern synonym errors
@@ -2223,6 +2572,7 @@
         | IFSNoCandidateInScope Type
     -- Reflection errors
         | UnquoteFailed UnquoteError
+        | DeBruijnIndexOutOfScope Nat Telescope [Name]
     -- Safe flag errors
         | SafeFlagPostulate C.Name
         | SafeFlagPragma [String]
@@ -2230,9 +2580,14 @@
         | SafeFlagTerminating
         | SafeFlagPrimTrustMe
         | SafeFlagNoPositivityCheck
+        | SafeFlagPolarity
     -- Language option errors
         | NeedOptionCopatterns
         | NeedOptionRewriting
+    -- Failure associated to warnings
+        | NonFatalErrors [TCWarning]
+    -- Instance search errors
+        | InstanceSearchDepthExhausted Term Type Int
           deriving (Typeable, Show)
 
 -- | Distinguish error message when parsing lhs or pattern synonym, resp.
@@ -2248,11 +2603,19 @@
 
 -- | Type-checking errors.
 
-data TCErr = TypeError TCState (Closure TypeError)
-           | Exception Range Doc
-           | IOException Range E.IOException
-           | PatternErr  -- TCState -- ^ for pattern violations
-           {- AbortAssign TCState -- ^ used to abort assignment to meta when there are instantiations -- UNUSED -}
+data TCErr
+  = TypeError
+    { tcErrState   :: TCState
+        -- ^ The state in which the error was raised.
+    , tcErrClosErr :: Closure TypeError
+        -- ^ The environment in which the error as raised plus the error.
+    }
+  | Exception Range Doc
+  | IOException Range E.IOException
+  | PatternErr
+      -- ^ The exception which is usually caught.
+      --   Raised for pattern violations during unification ('assignV')
+      --   but also in other situations where we want to backtrack.
   deriving (Typeable)
 
 instance Error TCErr where
@@ -2263,14 +2626,12 @@
     show (Exception r d) = show r ++ ": " ++ render d
     show (IOException r e) = show r ++ ": " ++ show e
     show PatternErr{}  = "Pattern violation (you shouldn't see this)"
-    {- show (AbortAssign _) = "Abort assignment (you shouldn't see this)" -- UNUSED -}
 
 instance HasRange TCErr where
     getRange (TypeError _ cl)  = envRange $ clEnv cl
     getRange (Exception r _)   = r
     getRange (IOException r _) = r
     getRange PatternErr{}      = noRange
-    {- getRange (AbortAssign s)   = noRange -- UNUSED -}
 
 instance E.Exception TCErr
 
@@ -2297,16 +2658,29 @@
 newtype ReduceM a = ReduceM { unReduceM :: ReduceEnv -> a }
 --  deriving (Functor, Applicative, Monad)
 
+fmapReduce :: (a -> b) -> ReduceM a -> ReduceM b
+fmapReduce f (ReduceM m) = ReduceM $ \ e -> f $! m e
+{-# INLINE fmapReduce #-}
+
+apReduce :: ReduceM (a -> b) -> ReduceM a -> ReduceM b
+apReduce (ReduceM f) (ReduceM x) = ReduceM $ \ e -> f e $! x e
+{-# INLINE apReduce #-}
+
+bindReduce :: ReduceM a -> (a -> ReduceM b) -> ReduceM b
+bindReduce (ReduceM m) f = ReduceM $ \ e -> unReduceM (f $! m e) e
+{-# INLINE bindReduce #-}
+
 instance Functor ReduceM where
-  fmap f (ReduceM m) = ReduceM $ \ e -> f $! m e
+  fmap = fmapReduce
 
 instance Applicative ReduceM where
   pure x = ReduceM (const x)
-  ReduceM f <*> ReduceM x = ReduceM $ \ e -> f e $! x e
+  (<*>) = apReduce
 
 instance Monad ReduceM where
   return = pure
-  ReduceM m >>= f = ReduceM $ \ e -> unReduceM (f $! m e) e
+  (>>=) = bindReduce
+  (>>) = (*>)
 
 instance ReadTCState ReduceM where
   getTCState = ReduceM redSt
@@ -2369,6 +2743,16 @@
             writeIORef r $ oldState { stPersistentState = stPersistentState newState }
       unTCM (h err) r e
 
+-- | Parse monad
+
+runPM :: PM a -> TCM a
+runPM m = do
+  (res, ws) <- runPMIO m
+  mapM_ (warning . ParseWarning) ws
+  case res of
+    Left  e -> throwError (Exception (getRange e) (pretty e))
+    Right a -> return a
+
 -- | Interaction monad.
 
 type IM = TCMT (Haskeline.InputT IO)
@@ -2491,11 +2875,9 @@
                  x <- m
                  x `seq` return x
     where
-      wrap r m = failOnException handleException
-               $ E.catch m (handleIOException r)
+      wrap r m = E.catch m (handleIOException r)
 
       handleIOException r e = E.throwIO $ IOException r e
-      handleException   r s = E.throwIO $ Exception r s
 
 -- | We store benchmark statistics in an IORef.
 --   This enables benchmarking pure computation, see
@@ -2510,9 +2892,12 @@
   null = __IMPOSSIBLE__
 
 -- | Short-cutting disjunction forms a monoid.
+instance Semigroup (TCM Any) where
+  ma <> mb = Any <$> do (getAny <$> ma) `or2M` (getAny <$> mb)
+
 instance Monoid (TCM Any) where
   mempty = return mempty
-  ma `mappend` mb = Any <$> do (getAny <$> ma) `or2M` (getAny <$> mb)
+  mappend = (<>)
 
 patternViolation :: TCM a
 patternViolation = throwError PatternErr
@@ -2523,6 +2908,10 @@
 genericError :: MonadTCM tcm => String -> tcm a
 genericError = typeError . GenericError
 
+{-# SPECIALIZE genericDocError :: Doc -> TCM a #-}
+genericDocError :: MonadTCM tcm => Doc -> tcm a
+genericDocError = typeError . GenericDocError
+
 {-# SPECIALIZE typeError :: TypeError -> TCM a #-}
 typeError :: MonadTCM tcm => TypeError -> tcm a
 typeError err = liftTCM $ throwError =<< typeError_ err
@@ -2531,6 +2920,16 @@
 typeError_ :: MonadTCM tcm => TypeError -> tcm TCErr
 typeError_ err = liftTCM $ TypeError <$> get <*> buildClosure err
 
+{-# SPECIALIZE warning_ :: Warning -> TCM TCWarning #-}
+warning_ :: MonadTCM tcm => Warning -> tcm TCWarning
+warning_ w = liftTCM $ TCWarning <$> get <*> buildClosure w
+
+{-# SPECIALIZE warning :: Warning -> TCM () #-}
+warning :: MonadTCM tcm => Warning -> tcm ()
+warning w = do
+  tcwarn <- warning_ w
+  stTCWarnings %= (tcwarn :)
+
 -- | Running the type checking monad (most general form).
 {-# SPECIALIZE runTCM :: TCEnv -> TCState -> TCM a -> IO (a, TCState) #-}
 runTCM :: MonadIO m => TCEnv -> TCState -> TCMT m a -> m (a, TCState)
@@ -2614,15 +3013,15 @@
   killRange (Section tel) = killRange1 Section tel
 
 instance KillRange Definition where
-  killRange (Defn ai name t pols occs displ mut compiled inst copy def) =
-    killRange11 Defn ai name t pols occs displ mut compiled inst copy def
+  killRange (Defn ai name t pols occs displ mut compiled inst copy ma def) =
+    killRange11 Defn ai name t pols occs displ mut compiled inst copy ma def
     -- TODO clarify: Keep the range in the defName field?
 
 instance KillRange CtxId where
   killRange (CtxId x) = killRange1 CtxId x
 
 instance KillRange NLPat where
-  killRange (PVar x y) = killRange1 PVar x y
+  killRange (PVar x y z) = killRange3 PVar x y z
   killRange (PWild)    = PWild
   killRange (PDef x y) = killRange2 PDef x y
   killRange (PLam x y) = killRange2 PLam x y
@@ -2630,9 +3029,12 @@
   killRange (PBoundVar x y) = killRange2 PBoundVar x y
   killRange (PTerm x)  = killRange1 PTerm x
 
+instance KillRange NLPType where
+  killRange (NLPType s a) = killRange2 NLPType s a
+
 instance KillRange RewriteRule where
-  killRange (RewriteRule q gamma lhs rhs t) =
-    killRange5 RewriteRule q gamma lhs rhs t
+  killRange (RewriteRule q gamma f es rhs t) =
+    killRange6 RewriteRule q gamma f es rhs t
 
 instance KillRange CompiledRepresentation where
   killRange = id
@@ -2644,15 +3046,19 @@
 instance KillRange ExtLamInfo where
   killRange = id
 
+instance KillRange FunctionFlag where
+  killRange = id
+
 instance KillRange Defn where
   killRange def =
     case def of
       Axiom -> Axiom
-      Function cls comp tt inv mut isAbs delayed proj static inline smash term extlam with cop ->
-        killRange15 Function cls comp tt inv mut isAbs delayed proj static inline smash term extlam with cop
+      AbstractDefn -> __IMPOSSIBLE__ -- only returned by 'getConstInfo'!
+      Function cls comp tt inv mut isAbs delayed proj flags term extlam with copat ->
+        killRange13 Function cls comp tt inv mut isAbs delayed proj flags term extlam with copat
       Datatype a b c d e f g h i j   -> killRange10 Datatype a b c d e f g h i j
-      Record a b c d e f g h i j k l -> killRange12 Record a b c d e f g h i j k l
-      Constructor a b c d e          -> killRange5 Constructor a b c d e
+      Record a b c d e f g h i j k   -> killRange11 Record a b c d e f g h i j k
+      Constructor a b c d e f        -> killRange6 Constructor a b c d e f
       Primitive a b c d              -> killRange4 Primitive a b c d
 
 instance KillRange MutualId where
@@ -2668,13 +3074,20 @@
   killRange (ConsHead q) = ConsHead $ killRange q
 
 instance KillRange Projection where
-  killRange (Projection a b c d e) = killRange4 Projection a b c d e
+  killRange (Projection a b c d e) = killRange5 Projection a b c d e
 
+instance KillRange ProjLams where
+  killRange = id
+
 instance KillRange a => KillRange (Open a) where
   killRange = fmap killRange
 
+instance KillRange a => KillRange (Local a) where
+  killRange (Local a b) = killRange2 Local a b
+  killRange (Global a)  = killRange1 Global a
+
 instance KillRange DisplayForm where
-  killRange (Display n vs dt) = killRange3 Display n vs dt
+  killRange (Display n es dt) = killRange3 Display n es dt
 
 instance KillRange Polarity where
   killRange = id
@@ -2682,8 +3095,8 @@
 instance KillRange DisplayTerm where
   killRange dt =
     case dt of
-      DWithApp dt dts args -> killRange3 DWithApp dt dts args
-      DCon q dts        -> killRange2 DCon q dts
+      DWithApp dt dts es -> killRange3 DWithApp dt dts es
+      DCon q ci dts     -> killRange3 DCon q ci dts
       DDef q dts        -> killRange2 DDef q dts
       DDot v            -> killRange1 DDot v
       DTerm v           -> killRange1 DTerm v
diff --git a/src/full/Agda/TypeChecking/Monad/Benchmark.hs b/src/full/Agda/TypeChecking/Monad/Benchmark.hs
--- a/src/full/Agda/TypeChecking/Monad/Benchmark.hs
+++ b/src/full/Agda/TypeChecking/Monad/Benchmark.hs
@@ -5,7 +5,7 @@
   , B.MonadBench
   , B.getBenchmark
   , updateBenchmarkingStatus
-  , B.billTo, B.billPureTo
+  , B.billTo, B.billPureTo, B.billToCPS
   , B.reset
   , print
   ) where
diff --git a/src/full/Agda/TypeChecking/Monad/Builtin.hs b/src/full/Agda/TypeChecking/Monad/Builtin.hs
--- a/src/full/Agda/TypeChecking/Monad/Builtin.hs
+++ b/src/full/Agda/TypeChecking/Monad/Builtin.hs
@@ -4,6 +4,7 @@
 
 import Control.Applicative
 import Control.Monad.State
+import Control.Monad.Trans.Maybe
 
 import qualified Data.Map as Map
 
@@ -16,7 +17,7 @@
 
 import Agda.Utils.Except ( MonadError(catchError) )
 import Agda.Utils.Lens
-import Agda.Utils.Monad (when_)
+import Agda.Utils.Monad
 import Agda.Utils.Maybe
 import Agda.Utils.Tuple
 
@@ -26,6 +27,9 @@
 class (Functor m, Applicative m, Monad m) => HasBuiltins m where
   getBuiltinThing :: String -> m (Maybe (Builtin PrimFun))
 
+instance HasBuiltins m => HasBuiltins (MaybeT m) where
+  getBuiltinThing b = lift $ getBuiltinThing b
+
 litType :: Literal -> TCM Type
 litType l = case l of
   LitNat _ n    -> do
@@ -116,6 +120,9 @@
     primAgdaErrorPart, primAgdaErrorPartString, primAgdaErrorPartTerm, primAgdaErrorPartName,
     primHiding, primHidden, primInstance, primVisible,
     primRelevance, primRelevant, primIrrelevant,
+    primAssoc, primAssocLeft, primAssocRight, primAssocNon,
+    primPrecedence, primPrecRelated, primPrecUnrelated,
+    primFixity, primFixityFixity,
     primAgdaLiteral, primAgdaLitNat, primAgdaLitFloat, primAgdaLitString, primAgdaLitChar, primAgdaLitQName, primAgdaLitMeta,
     primAgdaSort, primAgdaSortSet, primAgdaSortLit, primAgdaSortUnsupported,
     primAgdaDefinition, primAgdaDefinitionFunDef, primAgdaDefinitionDataDef, primAgdaDefinitionRecordDef,
@@ -127,11 +134,13 @@
     primAgdaMeta,
     primAgdaTCM, primAgdaTCMReturn, primAgdaTCMBind, primAgdaTCMUnify,
     primAgdaTCMTypeError, primAgdaTCMInferType, primAgdaTCMCheckType,
-    primAgdaTCMNormalise, primAgdaTCMCatchError, primAgdaTCMGetContext, primAgdaTCMExtendContext, primAgdaTCMInContext,
+    primAgdaTCMNormalise, primAgdaTCMReduce,
+    primAgdaTCMCatchError, primAgdaTCMGetContext, primAgdaTCMExtendContext, primAgdaTCMInContext,
     primAgdaTCMFreshName, primAgdaTCMDeclareDef, primAgdaTCMDefineFun,
     primAgdaTCMGetType, primAgdaTCMGetDefinition,
     primAgdaTCMQuoteTerm, primAgdaTCMUnquoteTerm,
-    primAgdaTCMBlockOnMeta, primAgdaTCMCommit
+    primAgdaTCMBlockOnMeta, primAgdaTCMCommit, primAgdaTCMIsMacro,
+    primAgdaTCMWithNormalisation
     :: TCM Term
 
 primInteger      = getBuiltin builtinInteger
@@ -191,6 +200,15 @@
 primRelevance    = getBuiltin builtinRelevance
 primRelevant     = getBuiltin builtinRelevant
 primIrrelevant   = getBuiltin builtinIrrelevant
+primAssoc        = getBuiltin builtinAssoc
+primAssocLeft    = getBuiltin builtinAssocLeft
+primAssocRight   = getBuiltin builtinAssocRight
+primAssocNon     = getBuiltin builtinAssocNon
+primPrecedence    = getBuiltin builtinPrecedence
+primPrecRelated   = getBuiltin builtinPrecRelated
+primPrecUnrelated = getBuiltin builtinPrecUnrelated
+primFixity        = getBuiltin builtinFixity
+primFixityFixity  = getBuiltin builtinFixityFixity
 primArgInfo      = getBuiltin builtinArgInfo
 primArgArgInfo   = getBuiltin builtinArgArgInfo
 primAgdaSortSet  = getBuiltin builtinAgdaSortSet
@@ -244,6 +262,7 @@
 primAgdaTCMInferType  = getBuiltin builtinAgdaTCMInferType
 primAgdaTCMCheckType  = getBuiltin builtinAgdaTCMCheckType
 primAgdaTCMNormalise  = getBuiltin builtinAgdaTCMNormalise
+primAgdaTCMReduce     = getBuiltin builtinAgdaTCMReduce
 primAgdaTCMCatchError = getBuiltin builtinAgdaTCMCatchError
 primAgdaTCMGetContext = getBuiltin builtinAgdaTCMGetContext
 primAgdaTCMExtendContext = getBuiltin builtinAgdaTCMExtendContext
@@ -257,6 +276,8 @@
 primAgdaTCMUnquoteTerm        = getBuiltin builtinAgdaTCMUnquoteTerm
 primAgdaTCMBlockOnMeta        = getBuiltin builtinAgdaTCMBlockOnMeta
 primAgdaTCMCommit             = getBuiltin builtinAgdaTCMCommit
+primAgdaTCMIsMacro            = getBuiltin builtinAgdaTCMIsMacro
+primAgdaTCMWithNormalisation  = getBuiltin builtinAgdaTCMWithNormalisation
 
 builtinNat, builtinSuc, builtinZero, builtinNatPlus, builtinNatMinus,
   builtinNatTimes, builtinNatDivSucAux, builtinNatModSucAux, builtinNatEquals,
@@ -274,6 +295,9 @@
   builtinAgdaSortUnsupported,
   builtinHiding, builtinHidden, builtinInstance, builtinVisible,
   builtinRelevance, builtinRelevant, builtinIrrelevant, builtinArg,
+  builtinAssoc, builtinAssocLeft, builtinAssocRight, builtinAssocNon,
+  builtinPrecedence, builtinPrecRelated, builtinPrecUnrelated,
+  builtinFixity, builtinFixityFixity,
   builtinArgInfo, builtinArgArgInfo, builtinArgArg,
   builtinAbs, builtinAbsAbs, builtinAgdaTerm,
   builtinAgdaTermVar, builtinAgdaTermLam, builtinAgdaTermExtLam,
@@ -292,12 +316,14 @@
   builtinAgdaMeta,
   builtinAgdaTCM, builtinAgdaTCMReturn, builtinAgdaTCMBind, builtinAgdaTCMUnify,
   builtinAgdaTCMTypeError, builtinAgdaTCMInferType,
-  builtinAgdaTCMCheckType, builtinAgdaTCMNormalise, builtinAgdaTCMCatchError,
+  builtinAgdaTCMCheckType, builtinAgdaTCMNormalise, builtinAgdaTCMReduce,
+  builtinAgdaTCMCatchError,
   builtinAgdaTCMGetContext, builtinAgdaTCMExtendContext, builtinAgdaTCMInContext,
   builtinAgdaTCMFreshName, builtinAgdaTCMDeclareDef, builtinAgdaTCMDefineFun,
   builtinAgdaTCMGetType, builtinAgdaTCMGetDefinition,
   builtinAgdaTCMQuoteTerm, builtinAgdaTCMUnquoteTerm,
-  builtinAgdaTCMBlockOnMeta, builtinAgdaTCMCommit
+  builtinAgdaTCMBlockOnMeta, builtinAgdaTCMCommit, builtinAgdaTCMIsMacro,
+  builtinAgdaTCMWithNormalisation
   :: String
 
 builtinNat                           = "NATURAL"
@@ -356,6 +382,15 @@
 builtinRelevance                     = "RELEVANCE"
 builtinRelevant                      = "RELEVANT"
 builtinIrrelevant                    = "IRRELEVANT"
+builtinAssoc                         = "ASSOC"
+builtinAssocLeft                     = "ASSOCLEFT"
+builtinAssocRight                    = "ASSOCRIGHT"
+builtinAssocNon                      = "ASSOCNON"
+builtinPrecedence                    = "PRECEDENCE"
+builtinPrecRelated                   = "PRECRELATED"
+builtinPrecUnrelated                 = "PRECUNRELATED"
+builtinFixity                        = "FIXITY"
+builtinFixityFixity                  = "FIXITYFIXITY"
 builtinArg                           = "ARG"
 builtinArgInfo                       = "ARGINFO"
 builtinArgArgInfo                    = "ARGARGINFO"
@@ -410,6 +445,7 @@
 builtinAgdaTCMInferType  = "AGDATCMINFERTYPE"
 builtinAgdaTCMCheckType  = "AGDATCMCHECKTYPE"
 builtinAgdaTCMNormalise  = "AGDATCMNORMALISE"
+builtinAgdaTCMReduce     = "AGDATCMREDUCE"
 builtinAgdaTCMCatchError = "AGDATCMCATCHERROR"
 builtinAgdaTCMGetContext = "AGDATCMGETCONTEXT"
 builtinAgdaTCMExtendContext = "AGDATCMEXTENDCONTEXT"
@@ -423,6 +459,8 @@
 builtinAgdaTCMCommit        = "AGDATCMCOMMIT"
 builtinAgdaTCMQuoteTerm     = "AGDATCMQUOTETERM"
 builtinAgdaTCMUnquoteTerm   = "AGDATCMUNQUOTETERM"
+builtinAgdaTCMIsMacro       = "AGDATCMISMACRO"
+builtinAgdaTCMWithNormalisation = "AGDATCMWITHNORMALISATION"
 
 -- | Builtins that come without a definition in Agda syntax.
 --   These are giving names to Agda internal concepts which
@@ -467,9 +505,7 @@
     }
 
 coinductionKit :: TCM (Maybe CoinductionKit)
-coinductionKit =
-  (Just <$> coinductionKit')
-  `catchError` \_ -> return Nothing
+coinductionKit = tryMaybe coinductionKit'
 
 ------------------------------------------------------------------------
 -- * Builtin equality
diff --git a/src/full/Agda/TypeChecking/Monad/Caching.hs b/src/full/Agda/TypeChecking/Monad/Caching.hs
--- a/src/full/Agda/TypeChecking/Monad/Caching.hs
+++ b/src/full/Agda/TypeChecking/Monad/Caching.hs
@@ -1,6 +1,5 @@
 {-# LANGUAGE BangPatterns #-}
 {-# LANGUAGE CPP #-}
-{-# LANGUAGE PatternGuards #-}
 
 module Agda.TypeChecking.Monad.Caching
   ( -- * Log reading/writing operations
diff --git a/src/full/Agda/TypeChecking/Monad/Closure.hs b/src/full/Agda/TypeChecking/Monad/Closure.hs
--- a/src/full/Agda/TypeChecking/Monad/Closure.hs
+++ b/src/full/Agda/TypeChecking/Monad/Closure.hs
@@ -1,11 +1,21 @@
 module Agda.TypeChecking.Monad.Closure where
 
+import Control.Monad
+
 import Agda.TypeChecking.Monad.Base
 import Agda.TypeChecking.Monad.Env
 import Agda.TypeChecking.Monad.State
+import Agda.TypeChecking.Monad.Context
 
 enterClosure :: Closure a -> (a -> TCM b) -> TCM b
-enterClosure (Closure sig env scope x) k =
+enterClosure (Closure sig env scope pars x) k =
     withScope_ scope
     $ withEnv env
+    $ withModuleParameters pars
     $ k x
+
+withClosure :: Closure a -> (a -> TCM b) -> TCM (Closure b)
+withClosure cl k = enterClosure cl $ k >=> buildClosure
+
+mapClosure :: (a -> TCM b) -> Closure a -> TCM (Closure b)
+mapClosure k cl = enterClosure cl $ k >=> buildClosure
diff --git a/src/full/Agda/TypeChecking/Monad/Constraints.hs b/src/full/Agda/TypeChecking/Monad/Constraints.hs
--- a/src/full/Agda/TypeChecking/Monad/Constraints.hs
+++ b/src/full/Agda/TypeChecking/Monad/Constraints.hs
@@ -23,7 +23,7 @@
 
 -- | Get the current problem
 currentProblem :: TCM ProblemId
-currentProblem = headWithDefault __IMPOSSIBLE__ <$> asks envActiveProblems
+currentProblem = headWithDefault 0 <$> asks envActiveProblems
 
 -- | Steal all constraints belonging to the given problem and add them to the current problem.
 stealConstraints :: ProblemId -> TCM ()
@@ -78,13 +78,6 @@
   modifySleepingConstraints $ const sleepin
   modifyAwakeConstraints (++ wakeup)
 
-partitionM :: (a -> TCM Bool) -> [a] -> TCM ([a], [a])
-partitionM f [] = return ([], [])
-partitionM f (x:xs) = do
-  b <- f x
-  (l, r) <- partitionM f xs
-  if b then return (x:l, r) else return (l, x:r)
-
 -- danger...
 dropConstraints :: (ProblemConstraint -> Bool) -> TCM ()
 dropConstraints crit = do
@@ -92,12 +85,16 @@
   modifySleepingConstraints filt
   modifyAwakeConstraints    filt
 
-putAllConstraintsToSleep :: TCM ()
-putAllConstraintsToSleep = do
+putConstraintsToSleep :: (ProblemConstraint -> Bool) -> TCM ()
+putConstraintsToSleep sleepy = do
   awakeOnes <- use stAwakeConstraints
-  modifySleepingConstraints $ (++ awakeOnes)
-  modifyAwakeConstraints    $ const []
+  let (gotoSleep, stayAwake) = partition sleepy awakeOnes
+  modifySleepingConstraints $ (++ gotoSleep)
+  modifyAwakeConstraints    $ const stayAwake
 
+putAllConstraintsToSleep :: TCM ()
+putAllConstraintsToSleep = putConstraintsToSleep (const True)
+
 data ConstraintStatus = AwakeConstraint | SleepingConstraint
   deriving (Eq, Show)
 
@@ -135,11 +132,14 @@
     local (\e -> e { envActiveProblems = pids', envSolvingConstraints = isSolving }) $
     solvingProblems pids (f c)
 
-buildProblemConstraint :: ProblemId -> Constraint -> TCM ProblemConstraint
-buildProblemConstraint pid c = PConstr [pid] <$> buildClosure c
+buildProblemConstraint :: [ProblemId] -> Constraint -> TCM ProblemConstraint
+buildProblemConstraint pids c = PConstr pids <$> buildClosure c
 
+buildProblemConstraint_ :: Constraint -> TCM ProblemConstraint
+buildProblemConstraint_ = buildProblemConstraint []
+
 buildConstraint :: Constraint -> TCM ProblemConstraint
-buildConstraint c = flip buildProblemConstraint c =<< currentProblem
+buildConstraint c = flip buildProblemConstraint c . nub . filter (> 0) =<< asks envActiveProblems
 
 -- | Add new a constraint
 addConstraint' :: Constraint -> TCM ()
@@ -149,7 +149,7 @@
     stSleepingConstraints %= (pc :)
   where
     build | isBlocking c = buildConstraint c
-          | otherwise    = buildProblemConstraint 0 c
+          | otherwise    = buildProblemConstraint_ c
     isBlocking SortCmp{}     = False
     isBlocking LevelCmp{}    = False
     isBlocking ValueCmp{}    = True
diff --git a/src/full/Agda/TypeChecking/Monad/Context.hs b/src/full/Agda/TypeChecking/Monad/Context.hs
--- a/src/full/Agda/TypeChecking/Monad/Context.hs
+++ b/src/full/Agda/TypeChecking/Monad/Context.hs
@@ -1,7 +1,4 @@
 {-# LANGUAGE CPP               #-}
-{-# LANGUAGE FlexibleContexts  #-}
-{-# LANGUAGE FlexibleInstances #-}
-{-# LANGUAGE TupleSections     #-}
 
 #if __GLASGOW_HASKELL__ <= 708
 {-# LANGUAGE OverlappingInstances #-}
@@ -11,8 +8,10 @@
 
 import Control.Applicative
 import Control.Monad.Reader
+import Control.Monad.State
 
 import Data.List hiding (sort)
+import Data.Map (Map)
 import qualified Data.Map as Map
 import Data.Monoid
 
@@ -24,10 +23,13 @@
 import Agda.TypeChecking.Monad.Base
 import Agda.TypeChecking.Substitute
 import Agda.TypeChecking.Monad.Open
+import Agda.TypeChecking.Monad.Options
 
 import Agda.Utils.Except ( MonadError(catchError) )
 import Agda.Utils.Functor
 import Agda.Utils.List ((!!!), downFrom)
+import Agda.Utils.Size
+import Agda.Utils.Lens
 
 -- * Modifying the context
 
@@ -50,14 +52,9 @@
   i <- fresh
   return $ Ctx i x
 
--- | Change the context.
-{-# SPECIALIZE inContext :: [Dom (Name, Type)] -> TCM a -> TCM a #-}
-inContext :: MonadTCM tcm => [Dom (Name, Type)] -> tcm a -> tcm a
-inContext xs ret = do
-  ctx <- mapM mkContextEntry xs
-  modifyContext (const ctx) ret
-
 -- | Change to top (=empty) context.
+--
+--   TODO: currently, this makes the @ModuleParamDict@ ill-formed!
 {-# SPECIALIZE inTopContext :: TCM a -> TCM a #-}
 inTopContext :: MonadTCM tcm => tcm a -> tcm a
 inTopContext cont = do
@@ -68,68 +65,154 @@
   return a
 
 -- | Delete the last @n@ bindings from the context.
+--
+--   TODO: currently, this makes the @ModuleParamDict@ ill-formed!
 {-# SPECIALIZE escapeContext :: Int -> TCM a -> TCM a #-}
 escapeContext :: MonadTCM tcm => Int -> tcm a -> tcm a
 escapeContext n = modifyContext $ drop n
 
+-- * Manipulating module parameters --
+
+-- | Locally set module parameters for a computation.
+
+withModuleParameters :: ModuleParamDict -> TCM a -> TCM a
+withModuleParameters mp ret = do
+  old <- use stModuleParameters
+  stModuleParameters .= mp
+  x <- ret
+  stModuleParameters .= old
+  return x
+
+-- | Apply a substitution to all module parameters.
+
+updateModuleParameters :: MonadTCM tcm => Substitution -> tcm a -> tcm a
+updateModuleParameters sub ret = do
+  pm <- use stModuleParameters
+  let showMP pref mps = intercalate "\n" $
+        [ p ++ show m ++ " : " ++ show (mpSubstitution mp)
+        | (p, (m, mp)) <- zip (pref : repeat (map (const ' ') pref))
+                              (Map.toList mps)
+        ]
+  cxt <- reverse <$> getContext
+  reportSLn "tc.cxt.param" 90 $ unlines $
+    [ "updatingModuleParameters"
+    , "  sub = " ++ show sub
+    , "  cxt = " ++ unwords (map (show . fst . unDom) cxt)
+    , showMP "  old = " pm
+    ]
+  let pm' = applySubst sub pm
+  reportSLn "tc.cxt.param" 90 $ showMP "  new = " pm'
+  stModuleParameters .= pm'
+  x <- ret              -- We need to keep introduced modules around
+  pm1 <- use stModuleParameters
+  let pm'' = Map.union pm (defaultModuleParameters <$ Map.difference pm1 pm)
+  stModuleParameters .= pm''
+  reportSLn "tc.cxt.param" 90 $ showMP "  restored = " pm''
+  return x
+
+-- | Since the @ModuleParamDict@ is relative to the current context,
+--   this function should be called everytime the context is extended.
+--
+weakenModuleParameters :: MonadTCM tcm => Nat -> tcm a -> tcm a
+weakenModuleParameters n = updateModuleParameters (raiseS n)
+
+-- | Get substitution @Γ ⊢ ρ : Γm@ where @Γ@ is the current context
+--   and @Γm@ is the module parameter telescope of module @m@.
+--
+--   In case the current 'ModuleParamDict' does not know @m@,
+--   we return the identity substitution.
+--   This is ok for instance if we are outside module @m@
+--   (in which case we have to supply all module parameters to any
+--   symbol defined within @m@ we want to refer).
+getModuleParameterSub :: MonadTCM tcm => ModuleName -> tcm Substitution
+getModuleParameterSub m = do
+  r <- use stModuleParameters
+  case Map.lookup m r of
+    Nothing -> return IdS
+    Just mp -> return $ mpSubstitution mp
+
+
 -- * Adding to the context
 
 -- | @addCtx x arg cont@ add a variable to the context.
 --
 --   Chooses an unused 'Name'.
+--
+--   Warning: Does not update module parameter substitution!
 {-# SPECIALIZE addCtx :: Name -> Dom Type -> TCM a -> TCM a #-}
 addCtx :: MonadTCM tcm => Name -> Dom Type -> tcm a -> tcm a
 addCtx x a ret = do
-  ctx <- map (nameConcrete . fst . unDom) <$> getContext
-  let x' = head $ filter (notTaken ctx) $ iterate nextName x
-  ce <- mkContextEntry $ (x',) <$> a
+  ce <- mkContextEntry $ (x,) <$> a
   modifyContext (ce :) ret
       -- let-bindings keep track of own their context
+
+-- | Pick a concrete name that doesn't shadow anything in the context.
+unshadowName :: MonadTCM tcm => Name -> tcm Name
+unshadowName x = do
+  ctx <- map (nameConcrete . fst . unDom) <$> getContext
+  return $ head $ filter (notTaken ctx) $ iterate nextName x
   where
     notTaken xs x = isNoName x || nameConcrete x `notElem` xs
 
 -- | Various specializations of @addCtx@.
 {-# SPECIALIZE addContext :: b -> TCM a -> TCM a #-}
 class AddContext b where
-  addContext :: MonadTCM tcm => b -> tcm a -> tcm a
+  addContext  :: MonadTCM tcm => b -> tcm a -> tcm a
+  contextSize :: b -> Nat
 
+-- | Since the module parameter substitution is relative to
+--   the current context, we need to weaken it when we
+--   extend the context.  This function takes care of that.
+--
+addContext' :: (MonadTCM tcm, AddContext b) => b -> tcm a -> tcm a
+addContext' cxt = addContext cxt . weakenModuleParameters (contextSize cxt)
+
 #if __GLASGOW_HASKELL__ >= 710
 instance {-# OVERLAPPABLE #-} AddContext a => AddContext [a] where
 #else
 instance AddContext a => AddContext [a] where
 #endif
   addContext = flip (foldr addContext)
+  contextSize = sum . map contextSize
 
 instance AddContext (Name, Dom Type) where
   addContext = uncurry addCtx
+  contextSize _ = 1
 
 instance AddContext (Dom (Name, Type)) where
   addContext = addContext . distributeF
   -- addContext dom = addCtx (fst $ unDom dom) (snd <$> dom)
+  contextSize _ = 1
 
 instance AddContext ([Name], Dom Type) where
   addContext (xs, dom) = addContext (bindsToTel' id xs dom)
+  contextSize (xs, _) = length xs
 
 instance AddContext ([WithHiding Name], Dom Type) where
   addContext ([]                 , dom) = id
   addContext (WithHiding h x : xs, dom) =
     addContext (x , mapHiding (mappend h) dom) .
     addContext (xs, raise 1 dom)
+  contextSize (xs, _) = length xs
 
 instance AddContext (String, Dom Type) where
   addContext (s, dom) ret = do
-    x <- freshName_ s
+    x <- unshadowName =<< freshName_ s
     addCtx x dom ret
+  contextSize _ = 1
 
 instance AddContext (Dom (String, Type)) where
   addContext = addContext . distributeF
   -- addContext dom = addContext (fst $ unDom dom, snd <$> dom)
+  contextSize _ = 1
 
 instance AddContext (Dom Type) where
   addContext dom = addContext ("_", dom)
+  contextSize _ = 1
 
 instance AddContext Name where
   addContext x = addContext (x, dummyDom)
+  contextSize _ = 1
 
 #if __GLASGOW_HASKELL__ >= 710
 instance {-# OVERLAPPING #-} AddContext String where
@@ -137,41 +220,13 @@
 instance AddContext String where
 #endif
   addContext s = addContext (s, dummyDom)
+  contextSize _ = 1
 
 instance AddContext Telescope where
   addContext tel ret = loop tel where
     loop EmptyTel          = ret
     loop (ExtendTel t tel) = underAbstraction t tel loop
-
-{-
--- | N-ary variant of @addCtx@.
-{-# SPECIALIZE addContext :: [Dom (Name, Type)] -> TCM a -> TCM a #-}
-addContext :: MonadTCM tcm => [Dom (Name, Type)] -> tcm a -> tcm a
-addContext ctx m =
-  foldr (\arg -> addCtx (fst $ unDom arg) (snd <$> arg)) m ctx
--}
-
--- | add a bunch of variables with the same type to the context
-{-# SPECIALIZE addCtxs :: [Name] -> Dom Type -> TCM a -> TCM a #-}
-addCtxs :: MonadTCM tcm => [Name] -> Dom Type -> tcm a -> tcm a
-addCtxs []     _ k = k
-addCtxs (x:xs) t k = addCtx x t $ addCtxs xs (raise 1 t) k
-
--- | Turns the string into a name and adds it to the context.
-{-# SPECIALIZE addCtxString :: String -> Dom Type -> TCM a -> TCM a #-}
-addCtxString :: MonadTCM tcm => String -> Dom Type -> tcm a -> tcm a
-addCtxString s a m = do
-  x <- freshName_ s
-  addCtx x a m
-
--- | Turns the string into a name and adds it to the context, with dummy type.
-{-# SPECIALIZE addCtxString_ :: String -> TCM a -> TCM a #-}
-addCtxString_ :: MonadTCM tcm => String -> tcm a -> tcm a
-addCtxString_ s = addCtxString s dummyDom
-
-{-# SPECIALIZE addCtxStrings_ :: [String] -> TCM a -> TCM a #-}
-addCtxStrings_ :: MonadTCM tcm => [String] -> tcm a -> tcm a
-addCtxStrings_ = flip (foldr addCtxString_)
+  contextSize = size
 
 -- | Context entries without a type have this dummy type.
 dummyDom :: Dom Type
@@ -182,8 +237,8 @@
 underAbstraction :: (Subst t a, MonadTCM tcm) => Dom Type -> Abs a -> (a -> tcm b) -> tcm b
 underAbstraction _ (NoAbs _ v) k = k v
 underAbstraction t a           k = do
-    x <- freshName_ $ realName $ absName a
-    addCtx x t $ k $ absBody a
+    x <- unshadowName =<< freshName_ (realName $ absName a)
+    addContext (x, t) $ k $ absBody a
   where
     realName s = if isNoName s then "x" else argNameToString s
 
@@ -192,14 +247,7 @@
 underAbstraction_ :: (Subst t a, MonadTCM tcm) => Abs a -> (a -> tcm b) -> tcm b
 underAbstraction_ = underAbstraction dummyDom
 
--- | Add a telescope to the context.
-{-# SPECIALIZE addCtxTel :: Telescope -> TCM a -> TCM a #-}
-addCtxTel :: MonadTCM tcm => Telescope -> tcm a -> tcm a
-addCtxTel tel ret = loop tel where
-  loop EmptyTel          = ret
-  loop (ExtendTel t tel) = underAbstraction t tel loop
-
--- | Add a let bound variable
+-- | Add a let bound variable.
 {-# SPECIALIZE addLetBinding :: ArgInfo -> Name -> Term -> Type -> TCM a -> TCM a #-}
 addLetBinding :: MonadTCM tcm => ArgInfo -> Name -> Term -> Type -> tcm a -> tcm a
 addLetBinding info x v t0 ret = do
@@ -252,7 +300,7 @@
 lookupBV :: MonadReader TCEnv m => Nat -> m (Dom (Name, Type))
 lookupBV n = do
   ctx <- getContext
-  let failure = fail $ "deBruijn index out of scope: " ++ show n ++
+  let failure = fail $ "de Bruijn index out of scope: " ++ show n ++
                        " in context " ++ show (map (fst . unDom) ctx)
   maybe failure (return . fmap (raise $ n + 1)) $ ctx !!! n
 
diff --git a/src/full/Agda/TypeChecking/Monad/Env.hs b/src/full/Agda/TypeChecking/Monad/Env.hs
--- a/src/full/Agda/TypeChecking/Monad/Env.hs
+++ b/src/full/Agda/TypeChecking/Monad/Env.hs
@@ -1,4 +1,3 @@
-{-# LANGUAGE FlexibleContexts #-}
 
 module Agda.TypeChecking.Monad.Env where
 
@@ -38,7 +37,11 @@
 
 -- | Set the current environment to the given
 withEnv :: TCEnv -> TCM a -> TCM a
-withEnv env m = local (\env0 -> env { envAllowDestructiveUpdate = envAllowDestructiveUpdate env0 }) m
+withEnv env = local $ \ env0 -> env
+  -- Keep persistent settings
+  { envAllowDestructiveUpdate = envAllowDestructiveUpdate env0
+  , envPrintMetasBare         = envPrintMetasBare env0
+  }
 
 -- | Get the current environment
 getEnv :: TCM TCEnv
diff --git a/src/full/Agda/TypeChecking/Monad/Exception.hs b/src/full/Agda/TypeChecking/Monad/Exception.hs
--- a/src/full/Agda/TypeChecking/Monad/Exception.hs
+++ b/src/full/Agda/TypeChecking/Monad/Exception.hs
@@ -1,7 +1,4 @@
 {-# LANGUAGE CPP                    #-}
-{-# LANGUAGE FlexibleInstances      #-}
-{-# LANGUAGE FunctionalDependencies #-}
-{-# LANGUAGE MultiParamTypeClasses  #-}
 {-# LANGUAGE UndecidableInstances   #-}
 
 -- | Basically a copy of the ErrorT monad transformer. It's handy to slap
diff --git a/src/full/Agda/TypeChecking/Monad/Local.hs b/src/full/Agda/TypeChecking/Monad/Local.hs
new file mode 100644
--- /dev/null
+++ b/src/full/Agda/TypeChecking/Monad/Local.hs
@@ -0,0 +1,40 @@
+{-# LANGUAGE CPP #-}
+module Agda.TypeChecking.Monad.Local where
+
+import Control.Applicative
+import Control.Monad
+import Data.Monoid
+
+import Agda.Syntax.Internal
+import Agda.TypeChecking.Substitute
+import Agda.TypeChecking.Monad.Base
+import Agda.TypeChecking.Monad.Context
+import Agda.TypeChecking.Monad.Env
+import Agda.TypeChecking.Monad.Options
+import Agda.TypeChecking.Free
+import {-# SOURCE #-} Agda.TypeChecking.Monad.Signature (inFreshModuleIfFreeParams, lookupSection)
+
+import Agda.Utils.Size
+import Agda.Utils.Impossible
+#include "undefined.h"
+
+-- | Precondition: must not be called if the module parameter of the current
+--   module have been refined or (touched at all).
+makeLocal :: Free' a All => a -> TCM (Local a)
+makeLocal x | closed x = return $ Global x
+            | otherwise = inFreshModuleIfFreeParams $ do
+  m <- currentModule
+  return (Local m x)
+
+makeGlobal :: Free' a All => a -> TCM (Local a)
+makeGlobal x | closed x  = return $ Global x
+             | otherwise = __IMPOSSIBLE__
+
+getLocal :: Subst Term a => Local a -> TCM (Maybe a)
+getLocal (Global x) = return (Just x)
+getLocal l@(Local m x) = do
+  m' <- currentModule
+  if m' == m || isSubModuleOf m' m
+    then Just . (`applySubst` x) <$> getModuleParameterSub m
+    else return Nothing
+
diff --git a/src/full/Agda/TypeChecking/Monad/MetaVars.hs b/src/full/Agda/TypeChecking/Monad/MetaVars.hs
--- a/src/full/Agda/TypeChecking/Monad/MetaVars.hs
+++ b/src/full/Agda/TypeChecking/Monad/MetaVars.hs
@@ -1,20 +1,24 @@
-{-# LANGUAGE CPP               #-}
-{-# LANGUAGE FlexibleInstances #-}
-{-# LANGUAGE TupleSections     #-}
+{-# LANGUAGE CPP #-}
+{-# LANGUAGE NondecreasingIndentation #-}
 
 module Agda.TypeChecking.Monad.MetaVars where
 
-import Control.Applicative
+import Prelude hiding (null)
+
+import Control.Applicative hiding (empty)
 import Control.Monad.State
 import Control.Monad.Reader
 import Control.Monad.Writer
 
+import Data.Map (Map)
 import qualified Data.Map as Map
+import Data.Set (Set)
 import qualified Data.Set as Set
 import qualified Data.Foldable as Fold
 
 import Agda.Syntax.Common
 import Agda.Syntax.Internal
+import Agda.Syntax.Internal.Generic
 import Agda.Syntax.Position
 import Agda.Syntax.Scope.Base
 
@@ -28,12 +32,15 @@
 
 import Agda.Utils.Functor ((<.>))
 import Agda.Utils.Lens
+import Agda.Utils.List
 import Agda.Utils.Maybe
 import Agda.Utils.Monad
+import Agda.Utils.Null
 import Agda.Utils.Permutation
 import Agda.Utils.Pretty (prettyShow)
 import Agda.Utils.Tuple
 import Agda.Utils.Size
+import qualified Agda.Utils.Maybe.Strict as Strict
 
 #include "undefined.h"
 import Agda.Utils.Impossible
@@ -49,6 +56,14 @@
 modifyMetaStore :: (MetaStore -> MetaStore) -> TCM ()
 modifyMetaStore f = stMetaStore %= f
 
+-- | Run a computation and record which new metas it created.
+metasCreatedBy :: TCM a -> TCM (a, Set MetaId)
+metasCreatedBy m = do
+  before <- Map.keysSet <$> use stMetaStore
+  a <- m
+  after  <- Map.keysSet <$> use stMetaStore
+  return (a, after Set.\\ before)
+
 -- | Lookup a meta variable
 lookupMeta :: MetaId -> TCM MetaVariable
 lookupMeta m = fromMaybeM failure $ Map.lookup m <$> getMetaStore
@@ -106,7 +121,7 @@
       DontCare v -> loop v
       Level l    -> isInstantiatedMeta l
       Lam _ b    -> isInstantiatedMeta b
-      Con _ vs   -> isInstantiatedMeta vs
+      Con _ _ vs -> isInstantiatedMeta vs
       _          -> __IMPOSSIBLE__
 
 instance IsInstantiatedMeta Level where
@@ -138,9 +153,26 @@
   mv <- lookupMeta m
   return $ case mvInstantiation mv of
     InstV tel v -> Just $ foldr mkLam v tel
-    InstS v     -> Just v
     _           -> Nothing
 
+
+-- | Returns every meta-variable occurrence in the given type, except
+-- for those in 'Sort's.
+allMetas :: TermLike a => a -> [MetaId]
+allMetas = foldTerm metas
+  where
+  metas (MetaV m _) = [m]
+  metas (Level l)   = levelMetas l
+  metas _           = []
+
+  levelMetas (Max as) = concatMap plusLevelMetas as
+
+  plusLevelMetas ClosedLevel{} = []
+  plusLevelMetas (Plus _ l)    = levelAtomMetas l
+
+  levelAtomMetas (MetaLevel m _) = [m]
+  levelAtomMetas _               = []
+
 -- | Create 'MetaInfo' in the current environment.
 createMetaInfo :: TCM MetaInfo
 createMetaInfo = createMetaInfo' RunMetaOccursCheck
@@ -168,7 +200,7 @@
 getMetaNameSuggestion mi = miNameSuggestion . mvInfo <$> lookupMeta mi
 
 setMetaNameSuggestion :: MetaId -> MetaNameSuggestion -> TCM ()
-setMetaNameSuggestion mi s = do
+setMetaNameSuggestion mi s = unless (null s || isUnderscore s) $ do
   reportSLn "tc.meta.name" 20 $
     "setting name of meta " ++ prettyShow mi ++ " to " ++ s
   updateMetaVar mi $ \ mvar ->
@@ -185,13 +217,22 @@
 
 -- | Register an interaction point during scope checking.
 --   If there is no interaction id yet, create one.
-registerInteractionPoint :: Range -> Maybe Nat -> TCM InteractionId
-registerInteractionPoint r maybeId = do
+registerInteractionPoint :: Bool -> Range -> Maybe Nat -> TCM InteractionId
+registerInteractionPoint preciseRange r maybeId = do
+  m <- use stInteractionPoints
+  if not preciseRange then continue m else do
+    -- If the range does not come from a file, it is not
+    -- precise, so ignore it.
+    Strict.caseMaybe (rangeFile r) (continue m) $ \ _ -> do
+    -- First, try to find the interaction point by Range.
+    caseMaybe (findInteractionPoint_ r m) (continue m) {-else-} return
+ where
+ continue m = do
+  -- We did not find an interaction id with the same Range, so let's create one!
   ii <- case maybeId of
     Just i  -> return $ InteractionId i
     Nothing -> fresh
-  m <- use stInteractionPoints
-  let ip = InteractionPoint { ipRange = r, ipMeta = Nothing }
+  let ip = InteractionPoint { ipRange = r, ipMeta = Nothing, ipClause = IPNoClause }
   case Map.insertLookupWithKey (\ key new old -> old) ii ip m of
     -- If the interaction point is already present, we keep the old ip.
     -- However, it needs to be at the same range as the new one.
@@ -202,11 +243,25 @@
       modifyInteractionPoints (const m')
       return ii
 
+-- | Find an interaction point by 'Range' by searching the whole map.
+--
+--   O(n): linear in the number of registered interaction points.
+
+findInteractionPoint_ :: Range -> InteractionPoints -> Maybe InteractionId
+findInteractionPoint_ r m = do
+  guard $ not $ null r
+  headMaybe $ mapMaybe sameRange $ Map.toList m
+  where
+    sameRange :: (InteractionId, InteractionPoint) -> Maybe InteractionId
+    sameRange (ii, InteractionPoint r' _ _) | r == r' = Just ii
+    sameRange _ = Nothing
+
 -- | Hook up meta variable to interaction point.
 connectInteractionPoint :: InteractionId -> MetaId -> TCM ()
 connectInteractionPoint ii mi = do
+  ipCl <- asks envClause
   m <- use stInteractionPoints
-  let ip = InteractionPoint { ipRange = __IMPOSSIBLE__, ipMeta = Just mi }
+  let ip = InteractionPoint { ipRange = __IMPOSSIBLE__, ipMeta = Just mi, ipClause = ipCl }
   -- The interaction point needs to be present already, we just set the meta.
   case Map.insertLookupWithKey (\ key new old -> new { ipRange = ipRange old }) ii ip m of
     (Nothing, _) -> __IMPOSSIBLE__
@@ -215,8 +270,11 @@
 -- | Move an interaction point from the current ones to the old ones.
 removeInteractionPoint :: InteractionId -> TCM ()
 removeInteractionPoint ii = do
-  scope <- getInteractionScope ii
-  modifyInteractionPoints $ Map.delete ii
+  ip <- stInteractionPoints %%= \ m -> do
+    let (mip, m') = Map.updateLookupWithKey (\ _ _ -> Nothing) ii m
+    return (m',
+      fromMaybe __IMPOSSIBLE__ mip)
+  stSolvedInteractionPoints %= Map.insert ii ip
 
 -- | Get a list of interaction ids.
 getInteractionPoints :: TCM [InteractionId]
@@ -249,8 +307,15 @@
 lookupInteractionId :: InteractionId -> TCM MetaId
 lookupInteractionId ii = fromMaybeM err2 $ ipMeta <$> lookupInteractionPoint ii
   where
-    err2 = typeError $ GenericError $ "No type nor action available for hole " ++ show ii
+    err2 = typeError $ GenericError $ "No type nor action available for hole " ++ show ii ++ ". Possible cause: the hole has not been reached during type checking (do you see yellow?)"
 
+-- | Check whether an interaction id is already associated with a meta variable.
+lookupInteractionMeta :: InteractionId -> TCM (Maybe MetaId)
+lookupInteractionMeta ii = lookupInteractionMeta_ ii <$> use stInteractionPoints
+
+lookupInteractionMeta_ :: InteractionId -> InteractionPoints -> Maybe MetaId
+lookupInteractionMeta_ ii m = ipMeta =<< Map.lookup ii m
+
 -- | Generate new meta variable.
 newMeta :: MetaInfo -> MetaPriority -> Permutation -> Judgement a -> TCM MetaId
 newMeta = newMeta' Open
@@ -296,20 +361,19 @@
         isInst BlockedConst{}                 = False
         isInst PostponedTypeCheckingProblem{} = False
         isInst InstV{}                        = True
-        isInst InstS{}                        = True
 
 getOpenMetas :: TCM [MetaId]
 getOpenMetas = do
     store <- getMetaStore
-    return [ i | (i, MetaVar{ mvInstantiation = mi }) <- Map.assocs store, isOpen mi ]
-    where
-        isOpen Open                           = True
-        isOpen OpenIFS                        = True
-        isOpen BlockedConst{}                 = True
-        isOpen PostponedTypeCheckingProblem{} = True
-        isOpen InstV{}                        = False
-        isOpen InstS{}                        = False
+    return [ i | (i, MetaVar{ mvInstantiation = mi }) <- Map.assocs store, isOpenMeta mi ]
 
+isOpenMeta :: MetaInstantiation -> Bool
+isOpenMeta Open                           = True
+isOpenMeta OpenIFS                        = True
+isOpenMeta BlockedConst{}                 = True
+isOpenMeta PostponedTypeCheckingProblem{} = True
+isOpenMeta InstV{}                        = False
+
 -- | @listenToMeta l m@: register @l@ as a listener to @m@. This is done
 --   when the type of l is blocked by @m@.
 listenToMeta :: Listener -> MetaId -> TCM ()
@@ -343,14 +407,18 @@
 
 -- | Freeze all meta variables and return the list of metas that got frozen.
 freezeMetas :: TCM [MetaId]
-freezeMetas = execWriterT $ stMetaStore %== Map.traverseWithKey freeze
+freezeMetas = freezeMetas' $ const True
+
+-- | Freeze some meta variables and return the list of metas that got frozen.
+freezeMetas' :: (MetaId -> Bool) -> TCM [MetaId]
+freezeMetas' p = execWriterT $ stMetaStore %== Map.traverseWithKey freeze
   where
   freeze :: Monad m => MetaId -> MetaVariable -> WriterT [MetaId] m MetaVariable
   freeze m mvar
-    | mvFrozen mvar == Frozen = return mvar
-    | otherwise = do
+    | p m && mvFrozen mvar /= Frozen = do
         tell [m]
         return $ mvar { mvFrozen = Frozen }
+    | otherwise = return mvar
 
 -- | Thaw all meta variables.
 unfreezeMetas :: TCM ()
diff --git a/src/full/Agda/TypeChecking/Monad/Mutual.hs b/src/full/Agda/TypeChecking/Monad/Mutual.hs
--- a/src/full/Agda/TypeChecking/Monad/Mutual.hs
+++ b/src/full/Agda/TypeChecking/Monad/Mutual.hs
@@ -2,64 +2,83 @@
 
 module Agda.TypeChecking.Monad.Mutual where
 
+import Prelude hiding (null)
+
 import Control.Monad.Reader
 
-import qualified Data.Map as Map
-import Data.Set (Set)
 import Data.Functor ((<$>))
+import Data.Set (Set)
 import qualified Data.Set as Set
+import qualified Data.Map as Map
 
+import Agda.Syntax.Info as Info
 import Agda.Syntax.Internal
 import Agda.TypeChecking.Monad.Base
 import Agda.TypeChecking.Monad.State
 
 import Agda.Utils.Lens
+import Agda.Utils.Null
 
 noMutualBlock :: TCM a -> TCM a
 noMutualBlock = local $ \e -> e { envMutualBlock = Nothing }
 
-inMutualBlock :: TCM a -> TCM a
+-- | Pass the current mutual block id
+--   or create a new mutual block if we are not already inside on.
+inMutualBlock :: (MutualId -> TCM a) -> TCM a
 inMutualBlock m = do
   mi <- asks envMutualBlock
   case mi of
     Nothing -> do
       i <- fresh
-      flip local m $ \e -> e { envMutualBlock = Just i }
+      local (\ e -> e { envMutualBlock = Just i }) $ m i
     -- Don't create a new mutual block if we're already inside one.
-    Just _  -> m
+    Just i -> m i
 
--- | Set the mutual block for a definition
+-- | Set the mutual block info for a block,
+--   possibly overwriting the existing one.
+
+setMutualBlockInfo :: MutualId -> Info.MutualInfo -> TCM ()
+setMutualBlockInfo mi info = stMutualBlocks %= Map.alter f mi
+  where
+  f Nothing                   = Just $ MutualBlock info empty
+  f (Just (MutualBlock _ xs)) = Just $ MutualBlock info xs
+
+-- | Set the mutual block info for a block if non-existing.
+
+insertMutualBlockInfo :: MutualId -> Info.MutualInfo -> TCM ()
+insertMutualBlockInfo mi info = stMutualBlocks %= Map.alter f mi
+  where
+  f Nothing = Just $ MutualBlock info empty
+  f (Just mb@(MutualBlock info0 xs))
+    | null info0 = Just $ MutualBlock info xs
+    | otherwise  = Just mb
+
+-- | Set the mutual block for a definition.
+
 setMutualBlock :: MutualId -> QName -> TCM ()
 setMutualBlock i x = do
-  stMutualBlocks %= Map.insertWith Set.union i (Set.singleton x)
+  stMutualBlocks %= Map.alter f i
   stSignature    %= updateDefinition x (\ defn -> defn { defMutual = i })
-
--- | Get all mutual blocks
-getMutualBlocks :: TCM [Set QName]
-getMutualBlocks = Map.elems <$> use stMutualBlocks
+  where
+  f Nothing                    = Just $ MutualBlock empty $ Set.singleton x
+  f (Just (MutualBlock mi xs)) = Just $ MutualBlock mi $ Set.insert x xs
 
 -- | Get the current mutual block, if any, otherwise a fresh mutual
 -- block is returned.
 currentOrFreshMutualBlock :: TCM MutualId
 currentOrFreshMutualBlock = maybe fresh return =<< asks envMutualBlock
 
-lookupMutualBlock :: MutualId -> TCM (Set QName)
+lookupMutualBlock :: MutualId -> TCM MutualBlock
 lookupMutualBlock mi = do
-  mb <- use stMutualBlocks
-  case Map.lookup mi mb of
-    Just qs -> return qs
-    Nothing -> return Set.empty -- can end up here if we ask for the current mutual block and there is none
+  mbs <- use stMutualBlocks
+  case Map.lookup mi mbs of
+    Just mb -> return mb
+    Nothing -> return empty -- can end up here if we ask for the current mutual block and there is none
 
+-- | Reverse lookup of a mutual block id for a names.
 mutualBlockOf :: QName -> TCM MutualId
 mutualBlockOf x = do
   mb <- Map.toList <$> use stMutualBlocks
-  case filter (Set.member x . snd) mb of
+  case filter (Set.member x . mutualNames . snd) mb of
     (i, _) : _ -> return i
     _          -> fail $ "No mutual block for " ++ show x
-
-findMutualBlock :: QName -> TCM (Set QName)
-findMutualBlock f = do
-  bs <- getMutualBlocks
-  case filter (Set.member f) bs of
-    []    -> fail $ "No mutual block for " ++ show f
-    b : _ -> return b
diff --git a/src/full/Agda/TypeChecking/Monad/Open.hs b/src/full/Agda/TypeChecking/Monad/Open.hs
--- a/src/full/Agda/TypeChecking/Monad/Open.hs
+++ b/src/full/Agda/TypeChecking/Monad/Open.hs
@@ -1,5 +1,4 @@
 -- {-# LANGUAGE CPP #-}
-{-# LANGUAGE FlexibleContexts #-}
 
 module Agda.TypeChecking.Monad.Open
         ( makeOpen
diff --git a/src/full/Agda/TypeChecking/Monad/Options.hs b/src/full/Agda/TypeChecking/Monad/Options.hs
--- a/src/full/Agda/TypeChecking/Monad/Options.hs
+++ b/src/full/Agda/TypeChecking/Monad/Options.hs
@@ -1,5 +1,4 @@
 {-# LANGUAGE CPP #-}
-{-# LANGUAGE FlexibleContexts #-}
 
 module Agda.TypeChecking.Monad.Options where
 
@@ -17,12 +16,13 @@
 import System.FilePath
 
 import Agda.Syntax.Internal
+import Agda.Syntax.Common
 import Agda.Syntax.Concrete
 import {-# SOURCE #-} Agda.TypeChecking.Errors
 import Agda.TypeChecking.Monad.Base
 import Agda.TypeChecking.Monad.State
 import Agda.TypeChecking.Monad.Benchmark
-import Agda.Interaction.FindFile
+import {-# SOURCE #-} Agda.Interaction.FindFile
 import Agda.Interaction.Options
 import qualified Agda.Interaction.Options.Lenses as Lens
 import Agda.Interaction.Response
@@ -83,7 +83,7 @@
           getIncludeDirs
         incs -> return incs
       modify $ Lens.setCommandLineOptions opts{ optAbsoluteIncludePaths = incs }
-             . Lens.setPragmaOptions (optPragmaOptions opts)
+      setPragmaOptions (optPragmaOptions opts)
       updateBenchmarkingStatus
 
 libToTCM :: LibM a -> TCM a
@@ -106,11 +106,11 @@
 addDefaultLibraries :: RelativeTo -> CommandLineOptions -> TCM CommandLineOptions
 addDefaultLibraries rel o
   | or [ not $ null $ optLibraries o
-       , not $ optDefaultLibs o
+       , not $ optUseLibs o
        , optShowVersion o ] = pure o
   | otherwise = do
   root <- getProjectRoot rel
-  (libs, incs) <- libToTCM $ getDefaultLibraries (filePath root)
+  (libs, incs) <- libToTCM $ getDefaultLibraries (filePath root) (optDefaultLibs o)
   return o{ optIncludePaths = incs ++ optIncludePaths o, optLibraries = libs }
 
 class (Functor m, Applicative m, Monad m) => HasOptions m where
@@ -149,27 +149,6 @@
 displayFormsEnabled :: TCM Bool
 displayFormsEnabled = asks envDisplayFormsEnabled
 
--- | Don't eta contract implicit
-dontEtaContractImplicit :: TCM a -> TCM a
-dontEtaContractImplicit = local $ \e -> e { envEtaContractImplicit = False }
-
--- | Do eta contract implicit
-{-# SPECIALIZE doEtaContractImplicit :: TCM a -> TCM a #-}
-doEtaContractImplicit :: MonadTCM tcm => tcm a -> tcm a
-doEtaContractImplicit = local $ \e -> e { envEtaContractImplicit = True }
-
-{-# SPECIALIZE shouldEtaContractImplicit :: TCM Bool #-}
-shouldEtaContractImplicit :: MonadReader TCEnv m => m Bool
-shouldEtaContractImplicit = asks envEtaContractImplicit
-
--- | Don't reify interaction points
-dontReifyInteractionPoints :: TCM a -> TCM a
-dontReifyInteractionPoints =
-  local $ \e -> e { envReifyInteractionPoints = False }
-
-shouldReifyInteractionPoints :: TCM Bool
-shouldReifyInteractionPoints = asks envReifyInteractionPoints
-
 -- | Gets the include directories.
 --
 -- Precondition: 'optAbsoluteIncludePaths' must be nonempty (i.e.
@@ -195,7 +174,7 @@
 getProjectRoot :: RelativeTo -> TCM AbsolutePath
 getProjectRoot CurrentDir = liftIO (absolute =<< getCurrentDirectory)
 getProjectRoot (ProjectRoot f) = do
-  m <- moduleName' f
+  Ranged _ m <- moduleName' f
   return (projectRoot f m)
 
 -- | Makes the given directories absolute and stores them as include
@@ -214,11 +193,6 @@
   oldIncs <- gets Lens.getAbsoluteIncludePaths
 
   root <- getProjectRoot relativeTo
-  check <- case relativeTo of
-    CurrentDir -> return (return ())
-    ProjectRoot f -> do
-      m <- moduleName' f
-      return (checkModuleName m f)
 
   -- Add the current dir if no include path is given
   incs <- return $ if null incs then ["."] else incs
@@ -247,8 +221,25 @@
     setInteractionOutputCallback ho
 
   Lens.putAbsoluteIncludePaths incs
-  check
 
+  -- Andreas, 2016-07-11 (reconstructing semantics):
+  --
+  -- Check that the module name of the project root
+  -- is still correct wrt. to the changed include path.
+  --
+  -- E.g. if the include path was "/" and file "/A/B" was named "module A.B",
+  -- and then the include path changes to "/A/", the module name
+  -- becomes invalid; correct would then be "module B".
+
+  case relativeTo of
+    CurrentDir -> return ()
+    ProjectRoot f -> void $ moduleName f
+     -- Andreas, 2016-07-12 WAS:
+     -- do
+     --  Ranged _ m <- moduleName' f
+     --  checkModuleName m f Nothing
+
+
 setInputFile :: FilePath -> TCM ()
 setInputFile file =
     do  opts <- commandLineOptions
@@ -301,11 +292,14 @@
 -- | Switch on printing of implicit and irrelevant arguments.
 --   E.g. for reification in with-function generation.
 withShowAllArguments :: TCM a -> TCM a
-withShowAllArguments ret = do
+withShowAllArguments = withShowAllArguments' True
+
+withShowAllArguments' :: Bool -> TCM a -> TCM a
+withShowAllArguments' yes ret = do
   opts <- pragmaOptions
   let imp = optShowImplicit opts
       irr = optShowIrrelevant opts
-  setPragmaOptions $ opts { optShowImplicit = True, optShowIrrelevant = True }
+  setPragmaOptions $ opts { optShowImplicit = yes, optShowIrrelevant = yes }
   x <- ret
   opts <- pragmaOptions
   setPragmaOptions $ opts { optShowImplicit = imp, optShowIrrelevant = irr }
@@ -336,6 +330,9 @@
 etaEnabled :: TCM Bool
 etaEnabled = optEta <$> pragmaOptions
 
+maxInstanceSearchDepth :: TCM Int
+maxInstanceSearchDepth = optInstanceSearchDepth <$> pragmaOptions
+
 ------------------------------------------------------------------------
 -- Verbosity
 
@@ -362,7 +359,7 @@
                  | otherwise = do
     t <- getVerbosity
     let ks = wordsBy (`elem` ".:") k
-        m  = maximum $ 0 : Trie.lookupPath ks t
+        m  = last $ 0 : Trie.lookupPath ks t
     return (n <= m)
 
 -- | Displays a debug message in a suitable way.
diff --git a/src/full/Agda/TypeChecking/Monad/Sharing.hs b/src/full/Agda/TypeChecking/Monad/Sharing.hs
--- a/src/full/Agda/TypeChecking/Monad/Sharing.hs
+++ b/src/full/Agda/TypeChecking/Monad/Sharing.hs
@@ -1,5 +1,4 @@
 {-# LANGUAGE CPP              #-}
-{-# LANGUAGE FlexibleContexts #-}
 
 module Agda.TypeChecking.Monad.Sharing where
 
diff --git a/src/full/Agda/TypeChecking/Monad/Signature.hs b/src/full/Agda/TypeChecking/Monad/Signature.hs
--- a/src/full/Agda/TypeChecking/Monad/Signature.hs
+++ b/src/full/Agda/TypeChecking/Monad/Signature.hs
@@ -1,9 +1,5 @@
-{-# LANGUAGE CPP               #-}
-{-# LANGUAGE DoAndIfThenElse   #-}
-{-# LANGUAGE FlexibleContexts  #-}
-{-# LANGUAGE FlexibleInstances #-}
-{-# LANGUAGE LambdaCase        #-}
-{-# LANGUAGE PatternGuards     #-}
+{-# LANGUAGE CPP                      #-}
+{-# LANGUAGE NondecreasingIndentation #-}
 
 module Agda.TypeChecking.Monad.Signature where
 
@@ -13,6 +9,7 @@
 import Control.Applicative hiding (empty)
 import Control.Monad.State
 import Control.Monad.Reader
+import Control.Monad.Trans.Maybe
 
 import Data.List hiding (null)
 import Data.Set (Set)
@@ -23,14 +20,13 @@
 import Data.Monoid
 
 import Agda.Syntax.Abstract.Name
-import Agda.Syntax.Abstract (Ren)
+import Agda.Syntax.Abstract (Ren, ScopeCopyInfo(..))
 import Agda.Syntax.Common
 import Agda.Syntax.Internal as I
 import Agda.Syntax.Internal.Names
 import Agda.Syntax.Position
 import Agda.Syntax.Treeless (Compiled(..), TTerm)
 
-import qualified Agda.Compiler.JS.Parser as JS
 import qualified Agda.Compiler.UHC.Pragmas.Base as CR
 
 import Agda.TypeChecking.Monad.Base
@@ -40,6 +36,7 @@
 import Agda.TypeChecking.Monad.Exception ( ExceptionT )
 import Agda.TypeChecking.Monad.Mutual
 import Agda.TypeChecking.Monad.Open
+import Agda.TypeChecking.Monad.Local
 import Agda.TypeChecking.Monad.State
 import Agda.TypeChecking.Positivity.Occurrence
 import Agda.TypeChecking.Substitute
@@ -70,8 +67,15 @@
   reportSLn "tc.signature" 20 $ "adding constant " ++ show q ++ " to signature"
   tel <- getContextTelescope
   let tel' = replaceEmptyName "r" $ killRange $ case theDef d of
-              Constructor{} -> fmap (setHiding Hidden) tel
-              _             -> tel
+              Constructor{} -> fmap hideOrKeepInstance tel
+              Function{ funProjection = Just Projection{ projProper = True, projIndex = n } } ->
+                let fallback = fmap hideOrKeepInstance tel in
+                if n > 0 then fallback else
+                -- if the record value is part of the telescope, its hiding should left unchanged
+                  case initLast $ telToList tel of
+                    Nothing -> fallback
+                    Just (doms, dom) -> telFromList $ fmap hideOrKeepInstance doms ++ [dom]
+              _ -> tel
   let d' = abstract tel' $ d { defName = q }
   reportSLn "tc.signature" 30 $ "lambda-lifted definition = " ++ show d'
   modifySignature $ updateDefinitions $ HMap.insertWith (+++) q d'
@@ -134,14 +138,9 @@
     addEp crep = crep { compiledEpic = Just epDef }
 
 addJSCode :: QName -> String -> TCM ()
-addJSCode q jsDef =
-  case JS.parse jsDef of
-    Left e ->
-      modifySignature $ updateDefinition q $ updateDefCompiledRep $ addJS (Just e)
-    Right s ->
-      typeError (CompilationError ("Failed to parse ECMAScript (..." ++ s ++ ") for " ++ show q))
+addJSCode q jsDef = modifySignature $ updateDefinition q $ updateDefCompiledRep $ addJS
   where
-    addJS e crep = crep { compiledJS = e }
+    addJS crep = crep { compiledJS = Just jsDef }
 
 addCoreCode :: QName -> CR.CoreExpr -> TCM ()
 addCoreCode q crDef =  modifySignature $ updateDefinition q $ updateDefCompiledRep $ addCore crDef
@@ -159,26 +158,14 @@
   where
     addCr crep = crep { compiledCore = Just $ CrType crTy }
 
-markNoSmashing :: QName -> TCM ()
-markNoSmashing q = modifySignature $ updateDefinition q $ mark
-  where
-    mark def@Defn{theDef = fun@Function{}} =
-      def{theDef = fun{funSmashable = False}}
-    mark def = def
+setFunctionFlag :: FunctionFlag -> Bool -> QName -> TCM ()
+setFunctionFlag flag val q = modifyGlobalDefinition q $ set (theDefLens . funFlag flag) val
 
 markStatic :: QName -> TCM ()
-markStatic q = modifySignature $ updateDefinition q $ mark
-  where
-    mark def@Defn{theDef = fun@Function{}} =
-      def{theDef = fun{funStatic = True}}
-    mark def = def
+markStatic = setFunctionFlag FunStatic True
 
 markInline :: QName -> TCM ()
-markInline q = modifySignature $ updateDefinition q $ mark
-  where
-    mark def@Defn{theDef = fun@Function{}} =
-      def{theDef = fun{funInline = True}}
-    mark def = def
+markInline = setFunctionFlag FunInline True
 
 unionSignatures :: [Signature] -> Signature
 unionSignatures ss = foldr unionSignature emptySignature ss
@@ -210,67 +197,84 @@
       reportSLn "impossible" 60 $ "with content " ++ show sec
       __IMPOSSIBLE__
   -- Add the new section.
+  setDefaultModuleParameters m
   modifySignature $ over sigSections $ Map.insert m sec
 
--- | Lookup a section. If it doesn't exist that just means that the module
---   wasn't parameterised.
+setDefaultModuleParameters :: ModuleName -> TCM ()
+setDefaultModuleParameters m =
+  stModuleParameters %= Map.insert m defaultModuleParameters
+
+-- | Get a section.
+--
+--   Why Maybe? The reason is that we look up all prefixes of a module to
+--   compute number of parameters, and for hierarchical top-level modules,
+--   A.B.C say, A and A.B do not exist.
+{-# SPECIALIZE getSection :: ModuleName -> TCM (Maybe Section) #-}
+{-# SPECIALIZE getSection :: ModuleName -> ReduceM (Maybe Section) #-}
+getSection :: (Functor m, ReadTCState m) => ModuleName -> m (Maybe Section)
+getSection m = do
+  sig  <- (^. stSignature . sigSections) <$> getTCState
+  isig <- (^. stImports   . sigSections) <$> getTCState
+  return $ Map.lookup m sig `mplus` Map.lookup m isig
+
+-- | Lookup a section telescope.
+--
+--   If it doesn't exist, like in hierarchical top-level modules,
+--   the section telescope is empty.
 {-# SPECIALIZE lookupSection :: ModuleName -> TCM Telescope #-}
 {-# SPECIALIZE lookupSection :: ModuleName -> ReduceM Telescope #-}
 lookupSection :: (Functor m, ReadTCState m) => ModuleName -> m Telescope
-lookupSection m = do
-  sig  <- (^. stSignature . sigSections) <$> getTCState
-  isig <- (^. stImports   . sigSections) <$> getTCState
-  return $ maybe EmptyTel (^. secTelescope) $ Map.lookup m sig `mplus` Map.lookup m isig
+lookupSection m = maybe EmptyTel (^. secTelescope) <$> getSection m
 
 -- Add display forms to all names @xn@ such that @x = x1 es1@, ... @xn-1 = xn esn@.
 addDisplayForms :: QName -> TCM ()
 addDisplayForms x = do
   def  <- getConstInfo x
-  args <- getContextArgs
-  add (drop (projectionArgs $ theDef def) args) x x []
+  args <- drop (projectionArgs $ theDef def) <$> getContextArgs
+  add args x x $ map Apply $ raise 1 args -- make room for the single match variable of the display form
   where
-    add args top x vs0 = do
+    add args top x es0 = do
       def <- getConstInfo x
       let cs = defClauses def
           isCopy = defCopy def
       case cs of
-        [ Clause{ namedClausePats = pats, clauseBody = b } ]
-          | isCopy
-          , all (isVar . namedArg) pats
-          , Just (m, Def y es) <- strip (b `apply` vs0)
-          , Just vs <- mapM isApplyElim es -> do
-              let ps = raise 1 $ map unArg vs
-                  df = Display 0 ps $ DTerm $ Def top $ map Apply args
+        [ cl ] -> do
+          if not isCopy
+            then noDispForm x "not a copy" else do
+          if not $ all (isVar . namedArg) $ namedClausePats cl
+            then noDispForm x "properly matching patterns" else do
+          -- We have
+          --    x ps = e
+          -- and we're trying to generate a display form
+          --    x es0 <-- e[es0/ps]
+          -- Of course x es0 might be an over- or underapplication, hence the
+          -- n/m arithmetic.
+          let n          = size $ namedClausePats cl
+              (es1, es2) = splitAt n es0
+              m          = n - size es1
+              vs1 = map unArg $ fromMaybe __IMPOSSIBLE__ $ allApplyElims es1
+              sub = parallelS $ reverse $ vs1 ++ replicate m (var 0)
+              body = applySubst sub (compiledClauseBody cl) `applyE` es2
+          case unSpine <$> body of
+            Just (Def y es) -> do
+              let df = Display m es $ DTerm $ Def top $ map Apply args
               reportSLn "tc.display.section" 20 $ "adding display form " ++ show y ++ " --> " ++ show top
                                                 ++ "\n  " ++ show df
               addDisplayForm y df
-              add args top y vs
+              add args top y es
+            Just v          -> noDispForm x $ "not a def body, but " ++ show v
+            Nothing         -> noDispForm x $ "bad body"
         [] | Constructor{ conSrcCon = h } <- theDef def -> do
               let y  = conName h
-                  df = Display 0 [] $ DTerm $ Con (h {conName = top }) []
+                  df = Display 0 [] $ DTerm $ Con (h {conName = top }) ConOSystem []
               reportSLn "tc.display.section" 20 $ "adding display form " ++ show y ++ " --> " ++ show top
                                                 ++ "\n  " ++ show df
               addDisplayForm y df
-        _ -> do
-          let reason = if not isCopy then "not a copy" else
-                  case cs of
-                    []    -> "no clauses"
-                    _:_:_ -> "many clauses"
-                    [ Clause{ clauseBody = b } ] -> case strip b of
-                      Nothing -> "bad body"
-                      Just (m, Def y es)
-                        | m < length args -> "too few args"
-                        | m > length args -> "too many args"
-                        | otherwise       -> "args=" ++ show args ++ " es=" ++ show es
-                      Just (m, v) -> "not a def body, but " ++ show v
-          reportSLn "tc.display.section" 30 $
-            "no display form from " ++ show x ++ " because " ++ reason
+        [] -> noDispForm x "no clauses"
+        (_:_:_) -> noDispForm x "many clauses"
 
-    strip (Body v)   = return (0, unSpine v)
-    strip  NoBody    = Nothing
-    strip (Bind b)   = do
-      (n, v) <- strip $ absBody b
-      return (n + 1, ignoreSharing v)
+    noDispForm x reason = reportSLn "tc.display.section" 30 $
+      "no display form from " ++ show x ++ " because " ++ reason
 
     isVar VarP{} = True
     isVar _      = False
@@ -281,12 +285,11 @@
   -> Telescope      -- ^ Parameters of new module.
   -> ModuleName     -- ^ Name of old module applied to arguments.
   -> Args           -- ^ Arguments of module application.
-  -> Ren QName      -- ^ Imported names (given as renaming).
-  -> Ren ModuleName -- ^ Imported modules (given as renaming).
+  -> ScopeCopyInfo  -- ^ Imported names and modules
   -> TCM ()
-applySection new ptel old ts rd rm = do
+applySection new ptel old ts ScopeCopyInfo{ renModules = rm, renNames = rd } = do
   rd <- closeConstructors rd
-  applySection' new ptel old ts rd rm
+  applySection' new ptel old ts ScopeCopyInfo{ renModules = rm, renNames = rd }
   where
     -- If a datatype is being copied, all its constructors need to be copied,
     -- and if a constructor is copied its datatype needs to be.
@@ -316,8 +319,8 @@
             Record{ recConHead = h }      -> [conName h]
             _                         -> []
 
-applySection' :: ModuleName -> Telescope -> ModuleName -> Args -> Ren QName -> Ren ModuleName -> TCM ()
-applySection' new ptel old ts rd rm = do
+applySection' :: ModuleName -> Telescope -> ModuleName -> Args -> ScopeCopyInfo -> TCM ()
+applySection' new ptel old ts ScopeCopyInfo{ renNames = rd, renModules = rm } = do
   reportSLn "tc.mod.apply" 10 $ render $ vcat
     [ text "applySection"
     , text "new  =" <+> text (show new)
@@ -354,10 +357,11 @@
       copyDef' np def
       where
         copyDef' np d = do
-          reportSLn "tc.mod.apply" 60 $ "making new def for " ++ show y ++ " from " ++ show x ++ " with " ++ show np ++ " args " ++ show abstr
+          reportSLn "tc.mod.apply" 60 $ "making new def for " ++ show y ++ " from " ++ show x ++ " with " ++ show np ++ " args " ++ show (defAbstract d)
           reportSLn "tc.mod.apply" 80 $
             "args = " ++ show ts' ++ "\n" ++
-            "old type = " ++ prettyShow (defType d) ++ "\n" ++
+            "old type = " ++ prettyShow (defType d)
+          reportSLn "tc.mod.apply" 80 $
             "new type = " ++ prettyShow t
           addConstant y =<< nd y
           makeProjection y
@@ -382,7 +386,6 @@
             pol = defPolarity d `apply` ts'
             occ = defArgOccurrences d `apply` ts'
             inst = defInstance d
-            abstr = defAbstract d
             -- the name is set by the addConstant function
             nd :: QName -> TCM Definition
             nd y = for def $ \ df -> Defn
@@ -396,6 +399,7 @@
                     , defCompiledRep    = noCompiledRep
                     , defInstance       = inst
                     , defCopy           = True
+                    , defMatchable      = False
                     , theDef            = df }
             oldDef = theDef d
             isCon  = case oldDef of { Constructor{} -> True ; _ -> False }
@@ -409,9 +413,9 @@
             isVar0 t = case ignoreSharing $ unArg t of Var 0 [] -> True; _ -> False
             proj   = case oldDef of
               Function{funProjection = Just p@Projection{projIndex = n}}
-                | size ts < n || (size ts == n && isVar0 (last ts))
-                -> Just $ p { projIndex    = n - size ts
-                            , projDropPars = projDropPars p `apply` ts
+                | size ts' < n || (size ts' == n && maybe True isVar0 (lastMaybe ts'))
+                -> Just $ p { projIndex = n - size ts'
+                            , projLams  = projLams p `apply` ts'
                             }
               _ -> Nothing
             def =
@@ -425,26 +429,22 @@
                          , dataClause = Just cl
                          , dataCons   = map copyName cs
                          }
-                Record{ recPars = np, recConType = t, recTel = tel } -> return $
+                Record{ recPars = np, recTel = tel } -> return $
                   oldDef { recPars    = np - size ts'
                          , recClause  = Just cl
-                         , recConType = piApply t ts'
                          , recTel     = apply tel ts'
                          }
                 _ -> do
                   cc <- compileClauses Nothing [cl] -- Andreas, 2012-10-07 non need for record pattern translation
-                  let newDef = Function
+                  let newDef =
+                        set funMacro  (oldDef ^. funMacro) $
+                        set funStatic (oldDef ^. funStatic) $
+                        set funInline True $
+                        emptyFunction
                         { funClauses        = [cl]
-                        , funCompiled       = Just $ cc
-                        , funTreeless       = Nothing
-                        , funDelayed        = NotDelayed
-                        , funInv            = NotInjective
+                        , funCompiled       = Just cc
                         , funMutual         = mutual
-                        , funAbstr          = ConcreteDef -- OR: abstr -- ?!
                         , funProjection     = proj
-                        , funStatic         = False
-                        , funInline         = False
-                        , funSmashable      = True
                         , funTerminates     = Just True
                         , funExtLam         = extlam
                         , funWith           = with
@@ -453,14 +453,12 @@
                   reportSLn "tc.mod.apply" 80 $ "new def for " ++ show x ++ "\n  " ++ show newDef
                   return newDef
 
-            head = case oldDef of
-                     Function{funProjection = Just Projection{ projDropPars = f}}
-                       -> f
-                     _ -> Def x []
             cl = Clause { clauseRange     = getRange $ defClauses d
                         , clauseTel       = EmptyTel
                         , namedClausePats = []
-                        , clauseBody      = Body $ head `apply` ts'
+                        , clauseBody      = Just $ case oldDef of
+                            Function{funProjection = Just p} -> projDropParsApply p ProjSystem ts'
+                            _ -> Def x $ map Apply ts'
                         , clauseType      = Just $ defaultArg t
                         , clauseCatchall  = False
                         }
@@ -505,26 +503,29 @@
       reportSLn "tc.mod.apply" 80 $ "  totalArgs    = " ++ show totalArgs
       reportSLn "tc.mod.apply" 80 $ "  tel          = " ++ intercalate " " (map (fst . unDom) $ telToList tel)  -- only names
       reportSLn "tc.mod.apply" 80 $ "  sectionTel   = " ++ intercalate " " (map (fst . unDom) $ telToList ptel) -- only names
-      addCtxTel sectionTel $ addSection y
+      addContext sectionTel $ addSection y
 
 -- | Add a display form to a definition (could be in this or imported signature).
 addDisplayForm :: QName -> DisplayForm -> TCM ()
 addDisplayForm x df = do
-  d <- makeOpen df
+  d <- makeLocal df
   let add = updateDefinition x $ \ def -> def{ defDisplay = d : defDisplay def }
-  inCurrentSig <- isJust . HMap.lookup x <$> use (stSignature . sigDefinitions)
-  if inCurrentSig
-     then modifySignature add
-     else stImportsDisplayForms %= HMap.insertWith (++) x [d]
+  ifM (isLocal x)
+    {-then-} (modifySignature add)
+    {-else-} (stImportsDisplayForms %= HMap.insertWith (++) x [d])
   whenM (hasLoopingDisplayForm x) $
     typeError . GenericDocError $ text "Cannot add recursive display form for" <+> pretty x
 
-getDisplayForms :: QName -> TCM [Open DisplayForm]
+isLocal :: QName -> TCM Bool
+isLocal x = isJust . HMap.lookup x <$> use (stSignature . sigDefinitions)
+
+getDisplayForms :: QName -> TCM [LocalDisplayForm]
 getDisplayForms q = do
   ds  <- defDisplay <$> getConstInfo q
   ds1 <- maybe [] id . HMap.lookup q <$> use stImportsDisplayForms
   ds2 <- maybe [] id . HMap.lookup q <$> use stImportedDisplayForms
-  return $ ds ++ ds1 ++ ds2
+  ifM (isLocal q) (return $ ds ++ ds1 ++ ds2)
+                  (return $ ds1 ++ ds ++ ds2)
 
 -- | Find all names used (recursively) by display forms of a given name.
 chaseDisplayForms :: QName -> TCM (Set QName)
@@ -533,7 +534,7 @@
     go used []       = pure used
     go used (q : qs) = do
       let rhs (Display _ _ e) = e   -- Only look at names in the right-hand side (#1870)
-      ds <- (`Set.difference` used) . Set.unions . map (namesIn . rhs . openThing)
+      ds <- (`Set.difference` used) . Set.unions . map (namesIn . rhs . dget)
             <$> (getDisplayForms q `catchError_` \ _ -> pure [])  -- might be a pattern synonym
       go (Set.union ds used) (Set.toList ds ++ qs)
 
@@ -546,15 +547,14 @@
   def <- theDef <$> getConstInfo x
   case def of
     Constructor{conSrcCon = c}                                -> return $ conName c
-    Record{recClause = Just (Clause{ clauseBody = body })}    -> canonicalName $ extract body
-    Datatype{dataClause = Just (Clause{ clauseBody = body })} -> canonicalName $ extract body
+    Record{recClause = Just (Clause{ clauseBody = body })}    -> can body
+    Datatype{dataClause = Just (Clause{ clauseBody = body })} -> can body
     _                                                         -> return x
   where
-    extract NoBody           = __IMPOSSIBLE__
-    extract (Body (Def x _)) = x
-    extract (Body (Shared p)) = extract (Body $ derefPtr p)
-    extract (Body _)         = __IMPOSSIBLE__
-    extract (Bind b)         = extract (unAbs b)
+    can body = canonicalName $ extract $ fromMaybe __IMPOSSIBLE__ body
+    extract (Def x _)  = x
+    extract (Shared p) = extract $ derefPtr p
+    extract _          = __IMPOSSIBLE__
 
 sameDef :: QName -> QName -> TCM (Maybe QName)
 sameDef d1 d2 = do
@@ -607,6 +607,11 @@
       look s = HMap.lookup q $ s ^. sigRewriteRules
   return $ mconcat $ catMaybes [look sig, look imp]
 
+-- | Get the original name of the projection
+--   (the current one could be from a module application).
+getOriginalProjection :: HasConstInfo m => QName -> m QName
+getOriginalProjection q = projOrig . fromMaybe __IMPOSSIBLE__ <$> isProjection q
+
 instance HasConstInfo (TCMT IO) where
   getRewriteRulesFor = defaultGetRewriteRulesFor get
   getConstInfo q = join $ pureTCM $ \st env ->
@@ -635,6 +640,10 @@
           dropLastModule q@QName{ qnameModule = m } =
             q{ qnameModule = mnameFromList $ ifNull (mnameToList m) __IMPOSSIBLE__ init }
 
+instance (HasConstInfo m) => HasConstInfo (MaybeT m) where
+  getConstInfo = lift . getConstInfo
+  getRewriteRulesFor = lift . getRewriteRulesFor
+
 instance (HasConstInfo m, Error err) => HasConstInfo (ExceptionT err m) where
   getConstInfo = lift . getConstInfo
   getRewriteRulesFor = lift . getRewriteRulesFor
@@ -655,7 +664,10 @@
 
 -- | Set the polarity of a definition.
 setPolarity :: QName -> [Polarity] -> TCM ()
-setPolarity q pol = modifySignature $ updateDefinition q $ updateDefPolarity $ const pol
+setPolarity q pol = do
+  reportSLn "tc.polarity.set" 20 $
+    "Setting polarity of " ++ show q ++ " to " ++ show pol ++ "."
+  modifySignature $ updateDefinition q $ updateDefPolarity $ const pol
 
 -- | Get argument occurrence info for argument @i@ of definition @d@ (never fails).
 getArgOccurrence :: QName -> Nat -> TCM Occurrence
@@ -665,6 +677,8 @@
     Constructor{} -> StrictPos
     _             -> fromMaybe Mixed $ defArgOccurrences def !!! i
 
+-- | Sets the 'defArgOccurrences' for the given identifier (which
+-- should already exist in the signature).
 setArgOccurrences :: QName -> [Occurrence] -> TCM ()
 setArgOccurrences d os = modifyArgOccurrences d $ const os
 
@@ -693,6 +707,27 @@
     Function{ funTreeless = t } -> t
     _                           -> Nothing
 
+getErasedConArgs :: QName -> TCM [Bool]
+getErasedConArgs q = do
+  def <- getConstInfo q
+  case theDef def of
+    Constructor{ conData = d, conPars = np, conErased = es } -> do
+      ddef <- getConstInfo d
+      case compiledHaskell $ defCompiledRep ddef of
+        Nothing -> return es
+        Just _  -> do
+          -- Can't erase arguments of COMPILED_DATA constructors yet
+          TelV tel _ <- telView $ defType def
+          return $ replicate (size tel - np) False
+    _ -> __IMPOSSIBLE__
+
+setErasedConArgs :: QName -> [Bool] -> TCM ()
+setErasedConArgs q args = modifyGlobalDefinition q setArgs
+  where
+    setArgs def@Defn{theDef = con@Constructor{}} =
+      def{ theDef = con{ conErased = args } }
+    setArgs def = def   -- no-op for non-constructors
+
 getTreeless :: QName -> TCM (Maybe TTerm)
 getTreeless q = fmap cTreeless <$> getCompiled q
 
@@ -722,15 +757,6 @@
 mutuallyRecursive :: QName -> QName -> TCM Bool
 mutuallyRecursive d d' = (d `elem`) <$> getMutual d'
 
--- | Why Maybe? The reason is that we look up all prefixes of a module to
---   compute number of parameters, and for hierarchical top-level modules,
---   A.B.C say, A and A.B do not exist.
-getSection :: ModuleName -> TCM (Maybe Section)
-getSection m = do
-  sig  <- use $ stSignature . sigSections
-  isig <- use $ stImports   . sigSections
-  return $ Map.lookup m sig <|> Map.lookup m isig
-
 -- | Get the number of parameters to the current module.
 getCurrentModuleFreeVars :: TCM Nat
 getCurrentModuleFreeVars = size <$> (lookupSection =<< currentModule)
@@ -738,11 +764,16 @@
 -- | Compute the number of free variables of a defined name. This is the sum of
 --   number of parameters shared with the current module and the number of
 --   anonymous variables (if the name comes from a let-bound module).
-{-# SPECIALIZE getDefFreeVars :: QName -> TCM Nat #-}
-{-# SPECIALIZE getDefFreeVars :: QName -> ReduceM Nat #-}
 getDefFreeVars :: (Functor m, Applicative m, ReadTCState m, MonadReader TCEnv m) => QName -> m Nat
-getDefFreeVars q = do
-  let m = qnameModule q
+getDefFreeVars = getModuleFreeVars . qnameModule
+
+freeVarsToApply :: QName -> TCM Args
+freeVarsToApply = moduleParamsToApply . qnameModule
+
+{-# SPECIALIZE getModuleFreeVars :: ModuleName -> TCM Nat #-}
+{-# SPECIALIZE getModuleFreeVars :: ModuleName -> ReduceM Nat #-}
+getModuleFreeVars :: (Functor m, Applicative m, ReadTCState m, MonadReader TCEnv m) => ModuleName -> m Nat
+getModuleFreeVars m = do
   m0   <- commonParentModule m <$> currentModule
   (+) <$> getAnonymousVariables m <*> (size <$> lookupSection m0)
 
@@ -760,40 +791,51 @@
 --        module M₃ Θ where
 --          ... M₁.M₂.f [insert Γ raised by Θ]
 --   @
-freeVarsToApply :: QName -> TCM Args
-freeVarsToApply x = do
-  -- Get the correct number of free variables (correctly raised) of @x@.
+moduleParamsToApply :: ModuleName -> TCM Args
+moduleParamsToApply m = do
+  -- Get the correct number of free variables (correctly raised) of @m@.
 
-  args <- take <$> getDefFreeVars x <*> getContextArgs
+  reportSLn "tc.sig.param" 90 $ "computing module parameters of " ++ show m
+  cxt <- getContext
+  n   <- getModuleFreeVars m
+  tel <- take n . telToList <$> lookupSection m
+  sub <- getModuleParameterSub m
+  reportSLn "tc.sig.param" 60 $ unlines $
+    [ "  n    = " ++ show n
+    , "  cxt  = " ++ show (map (fmap fst) cxt)
+    , "  sub  = " ++ show sub
+    ]
+  unless (size tel == n) __IMPOSSIBLE__
+  let args = applySubst sub $ zipWith (\ i a -> var i <$ argFromDom a) (downFrom n) tel
+  reportSLn "tc.sig.param" 60 $ "  args = " ++ show args
 
   -- Apply the original ArgInfo, as the hiding information in the current
-  -- context might be different from the hiding information expected by @x@.
+  -- context might be different from the hiding information expected by @m@.
 
-  getSection (qnameModule x) >>= \case
+  getSection m >>= \case
     Nothing -> do
-      -- We have no section for @x@.
+      -- We have no section for @m@.
       -- This should only happen for toplevel definitions, and then there
       -- are no free vars to apply, or?
       -- unless (null args) __IMPOSSIBLE__
       -- No, this invariant is violated by private modules, see Issue1701a.
       return args
-    Just (Section tel) -> do
-      -- The section telescope of the home of @x@ should be as least
-      -- as long as the number of free vars @x@ is applied to.
+    Just (Section stel) -> do
+      -- The section telescope of @m@ should be as least
+      -- as long as the number of free vars @m@ is applied to.
       -- We still check here as in no case, we want @zipWith@ to silently
       -- drop some @args@.
       -- And there are also anonymous modules, thus, the invariant is not trivial.
-      when (size tel < size args) __IMPOSSIBLE__
-      return $ zipWith (\ (Dom ai _) (Arg _ v) -> Arg ai v) (telToList tel) args
+      when (size stel < size args) __IMPOSSIBLE__
+      return $ zipWith (\ (Dom ai _) (Arg _ v) -> Arg ai v) (telToList stel) args
 
 -- | Unless all variables in the context are module parameters, create a fresh
 --   module to capture the non-module parameters. Used when unquoting to make
 --   sure generated definitions work properly.
 inFreshModuleIfFreeParams :: TCM a -> TCM a
 inFreshModuleIfFreeParams k = do
-  a <- getCurrentModuleFreeVars
-  b <- size <$> getContext
-  if a == b then k else do
+  sub <- getModuleParameterSub =<< currentModule
+  if sub == IdS then k else do
     m  <- currentModule
     m' <- qualifyM m . mnameFromList . (:[]) <$> freshName_ "_"
     addSection m'
@@ -824,23 +866,26 @@
                , theDef = def
                }
   where
-    makeAbs Datatype   {} = Just Axiom
-    makeAbs Function   {} = Just Axiom
+    makeAbs Axiom         = Just Axiom
+    makeAbs Datatype   {} = Just AbstractDefn
+    makeAbs Function   {} = Just AbstractDefn
     makeAbs Constructor{} = Nothing
     -- Andreas, 2012-11-18:  Make record constructor and projections abstract.
-    makeAbs d@Record{}    = Just Axiom
-    -- Q: what about primitive?
-    makeAbs d             = Just d
+    makeAbs d@Record{}    = Just AbstractDefn
+    makeAbs Primitive{}   = __IMPOSSIBLE__
+    makeAbs AbstractDefn  = __IMPOSSIBLE__
 
 -- | Enter abstract mode. Abstract definition in the current module are transparent.
-inAbstractMode :: TCM a -> TCM a
+{-# SPECIALIZE inAbstractMode :: TCM a -> TCM a #-}
+inAbstractMode :: MonadReader TCEnv m => m a -> m a
 inAbstractMode = local $ \e -> e { envAbstractMode = AbstractMode,
                                    envAllowDestructiveUpdate = False }
                                     -- Allowing destructive updates when seeing through
                                     -- abstract may break the abstraction.
 
 -- | Not in abstract mode. All abstract definitions are opaque.
-inConcreteMode :: TCM a -> TCM a
+{-# SPECIALIZE inConcreteMode :: TCM a -> TCM a #-}
+inConcreteMode :: MonadReader TCEnv m => m a -> m a
 inConcreteMode = local $ \e -> e { envAbstractMode = ConcreteMode }
 
 -- | Ignore abstract mode. All abstract definitions are transparent.
@@ -852,14 +897,15 @@
 
 -- | Enter concrete or abstract mode depending on whether the given identifier
 --   is concrete or abstract.
-inConcreteOrAbstractMode :: QName -> TCM a -> TCM a
+{-# SPECIALIZE inConcreteOrAbstractMode :: QName -> (Definition -> TCM a) -> TCM a #-}
+inConcreteOrAbstractMode :: (MonadReader TCEnv m, HasConstInfo m) => QName -> (Definition -> m a) -> m a
 inConcreteOrAbstractMode q cont = do
   -- Andreas, 2015-07-01: If we do not ignoreAbstractMode here,
   -- we will get ConcreteDef for abstract things, as they are turned into axioms.
-  a <- ignoreAbstractMode $ defAbstract <$> getConstInfo q
-  case a of
-    AbstractDef -> inAbstractMode cont
-    ConcreteDef -> inConcreteMode cont
+  def <- ignoreAbstractMode $ getConstInfo q
+  case defAbstract def of
+    AbstractDef -> inAbstractMode $ cont def
+    ConcreteDef -> inConcreteMode $ cont def
 
 -- | Check whether a name might have to be treated abstractly (either if we're
 --   'inAbstractMode' or it's not a local name). Returns true for things not
@@ -904,16 +950,6 @@
             Datatype{dataSort = s} -> return s
             _                      -> fail $ "Expected " ++ show q ++ " to be a datatype."
 
--- | The number of parameters of a definition.
-defPars :: Definition -> Int
-defPars d = case theDef d of
-    Axiom{}                  -> 0
-    def@Function{}           -> projectionArgs def
-    Datatype  {dataPars = n} -> n
-    Record     {recPars = n} -> n
-    Constructor{conPars = n} -> n
-    Primitive{}              -> 0
-
 -- | The number of dropped parameters for a definition.
 --   0 except for projection(-like) functions and constructors.
 droppedPars :: Definition -> Int
@@ -924,6 +960,7 @@
     Record     {recPars = _} -> 0  -- not dropped
     Constructor{conPars = n} -> n
     Primitive{}              -> 0
+    AbstractDefn             -> __IMPOSSIBLE__
 
 -- | Is it the name of a record projection?
 {-# SPECIALIZE isProjection :: QName -> TCM (Maybe Projection) #-}
@@ -938,20 +975,18 @@
 
 -- | Is it a function marked STATIC?
 isStaticFun :: Defn -> Bool
-isStaticFun Function{ funStatic = b } = b
-isStaticFun _ = False
+isStaticFun = (^. funStatic)
 
 -- | Is it a function marked INLINE?
 isInlineFun :: Defn -> Bool
-isInlineFun Function{ funInline = b } = b
-isInlineFun _ = False
+isInlineFun = (^. funInline)
 
 -- | Returns @True@ if we are dealing with a proper projection,
 --   i.e., not a projection-like function nor a record field value
 --   (projection applied to argument).
 isProperProjection :: Defn -> Bool
 isProperProjection d = caseMaybe (isProjection_ d) False $ \ isP ->
-  if projIndex isP <= 0 then False else isJust $ projProper isP
+  if projIndex isP <= 0 then False else projProper isP
 
 -- | Number of dropped initial arguments of a projection(-like) function.
 projectionArgs :: Defn -> Int
@@ -967,11 +1002,11 @@
 
 -- | Apply a function @f@ to its first argument, producing the proper
 --   postfix projection if @f@ is a projection.
-applyDef :: QName -> Arg Term -> TCM Term
-applyDef f a = do
+applyDef :: ProjOrigin -> QName -> Arg Term -> TCM Term
+applyDef o f a = do
   let fallback = return $ Def f [Apply a]
   caseMaybeM (isProjection f) fallback $ \ isP -> do
     if projIndex isP <= 0 then fallback else do
       -- Get the original projection, if existing.
-      caseMaybe (projProper isP) fallback $ \ f' -> do
-        return $ unArg a `applyE` [Proj f']
+      if not (projProper isP) then fallback else do
+        return $ unArg a `applyE` [Proj o $ projOrig isP]
diff --git a/src/full/Agda/TypeChecking/Monad/Signature.hs-boot b/src/full/Agda/TypeChecking/Monad/Signature.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/full/Agda/TypeChecking/Monad/Signature.hs-boot
@@ -0,0 +1,9 @@
+
+module Agda.TypeChecking.Monad.Signature where
+
+import Agda.Syntax.Internal (ModuleName, Telescope)
+import Agda.TypeChecking.Monad.Base (TCM, ReadTCState)
+
+inFreshModuleIfFreeParams :: TCM a -> TCM a
+lookupSection :: (Functor m, ReadTCState m) => ModuleName -> m Telescope
+
diff --git a/src/full/Agda/TypeChecking/Monad/SizedTypes.hs b/src/full/Agda/TypeChecking/Monad/SizedTypes.hs
--- a/src/full/Agda/TypeChecking/Monad/SizedTypes.hs
+++ b/src/full/Agda/TypeChecking/Monad/SizedTypes.hs
@@ -1,6 +1,4 @@
 {-# LANGUAGE CPP #-}
-{-# LANGUAGE DeriveFunctor #-}
-{-# LANGUAGE TupleSections #-}
 
 -- | Stuff for sized types that does not require modules
 --   "Agda.TypeChecking.Reduce" or "Agda.TypeChecking.Constraints"
@@ -131,11 +129,10 @@
 
 -- | The name of @SIZESUC@.
 sizeSucName :: TCM (Maybe QName)
-sizeSucName = liftTCM $
-  ifM (not . optSizedTypes <$> pragmaOptions) (return Nothing) $ do
+sizeSucName = do
+  ifM (not . optSizedTypes <$> pragmaOptions) (return Nothing) $ tryMaybe $ do
     Def x [] <- ignoreSharing <$> primSizeSuc
-    return $ Just x
-  `catchError` \_ -> return Nothing
+    return x
 
 sizeSuc :: Nat -> Term -> TCM Term
 sizeSuc n v | n < 0     = __IMPOSSIBLE__
diff --git a/src/full/Agda/TypeChecking/Monad/State.hs b/src/full/Agda/TypeChecking/Monad/State.hs
--- a/src/full/Agda/TypeChecking/Monad/State.hs
+++ b/src/full/Agda/TypeChecking/Monad/State.hs
@@ -1,4 +1,5 @@
 {-# LANGUAGE CPP #-}
+{-# LANGUAGE BangPatterns #-}
 
 -- | Lenses for 'TCState' and more.
 
@@ -10,7 +11,8 @@
 import Control.Monad.State (put, get, gets, modify)
 import Control.Monad.Trans (liftIO)
 
-import Data.Map as Map
+import Data.Map (Map)
+import qualified Data.Map as Map
 import Data.Monoid
 import Data.Set (Set)
 import qualified Data.Set as Set
@@ -31,6 +33,7 @@
 import Agda.TypeChecking.Monad.Base
 import {-# SOURCE #-} Agda.TypeChecking.Monad.Options
 import Agda.TypeChecking.Positivity.Occurrence
+import Agda.TypeChecking.CompiledClause
 
 import Agda.Utils.Hash
 import qualified Agda.Utils.HashMap as HMap
@@ -176,9 +179,6 @@
 getSignature :: TCM Signature
 getSignature = use stSignature
 
-getImportedSignature :: TCM Signature
-getImportedSignature = use stImports
-
 -- | Update a possibly imported definition. Warning: changes made to imported
 --   definitions (during type checking) will not persist outside the current
 --   module. This function is currently used to update the compiled
@@ -190,9 +190,6 @@
 setSignature :: Signature -> TCM ()
 setSignature sig = modifySignature $ const sig
 
-setImportedSignature :: Signature -> TCM ()
-setImportedSignature sig = stImports .= sig
-
 -- | Run some computation in a different signature, restore original signature.
 withSignature :: Signature -> TCM a -> TCM a
 withSignature sig m = do
@@ -203,14 +200,17 @@
   return r
 
 -- ** Modifiers for rewrite rules
-addRewriteRulesFor :: QName -> RewriteRules -> Signature -> Signature
-addRewriteRulesFor f rews =
+addRewriteRulesFor :: QName -> RewriteRules -> [QName] -> Signature -> Signature
+addRewriteRulesFor f rews matchables =
     (over sigRewriteRules $ HMap.insertWith mappend f rews)
   . (updateDefinition f $ updateTheDef setNotInjective)
+  . (foldr (.) id $ map (\g -> updateDefinition g setMatchable) matchables)
     where
       setNotInjective def@Function{} = def { funInv = NotInjective }
       setNotInjective def            = def
 
+      setMatchable def = def { defMatchable = True }
+
 -- ** Modifiers for parts of the signature
 
 lookupDefinition :: QName -> Signature -> Maybe Definition
@@ -241,6 +241,10 @@
 updateFunClauses f def@Function{ funClauses = cs} = def { funClauses = f cs }
 updateFunClauses f _                              = __IMPOSSIBLE__
 
+updateCompiledClauses :: (Maybe CompiledClauses -> Maybe CompiledClauses) -> (Defn -> Defn)
+updateCompiledClauses f def@Function{ funCompiled = cc} = def { funCompiled = f cc }
+updateCompiledClauses f _                              = __IMPOSSIBLE__
+
 ---------------------------------------------------------------------------
 -- * Top level module
 ---------------------------------------------------------------------------
@@ -380,11 +384,12 @@
 ---------------------------------------------------------------------------
 
 -- | Look through the signature and reconstruct the instance table.
-addSignatureInstances :: Signature -> TCM ()
-addSignatureInstances sig = do
-  let itable = Map.fromListWith (++)
-               [ (c, [i]) | (i, Defn{ defInstance = Just c }) <- HMap.toList $ sig ^. sigDefinitions ]
-  modifyInstanceDefs $ first $ Map.unionWith (++) itable
+addImportedInstances :: Signature -> TCM ()
+addImportedInstances sig = do
+  let itable = Map.fromListWith Set.union
+               [ (c, Set.singleton i)
+               | (i, Defn{ defInstance = Just c }) <- HMap.toList $ sig ^. sigDefinitions ]
+  stImportedInstanceDefs %= Map.unionWith Set.union itable
 
 -- | Lens for 'stInstanceDefs'.
 updateInstanceDefs :: (TempInstanceTable -> TempInstanceTable) -> (TCState -> TCState)
@@ -394,20 +399,24 @@
 modifyInstanceDefs = modify . updateInstanceDefs
 
 getAllInstanceDefs :: TCM TempInstanceTable
-getAllInstanceDefs = use stInstanceDefs
+getAllInstanceDefs = do
+  (table,xs) <- use stInstanceDefs
+  itable <- use stImportedInstanceDefs
+  let !table' = Map.unionWith Set.union itable table
+  return (table', xs)
 
-getAnonInstanceDefs :: TCM [QName]
+getAnonInstanceDefs :: TCM (Set QName)
 getAnonInstanceDefs = snd <$> getAllInstanceDefs
 
 -- | Remove all instances whose type is still unresolved.
 clearAnonInstanceDefs :: TCM ()
-clearAnonInstanceDefs = modifyInstanceDefs $ mapSnd $ const []
+clearAnonInstanceDefs = modifyInstanceDefs $ mapSnd $ const Set.empty
 
 -- | Add an instance whose type is still unresolved.
 addUnknownInstance :: QName -> TCM ()
 addUnknownInstance x = do
   reportSLn "tc.decl.instance" 10 $ "adding definition " ++ show x ++ " to the instance table (the type is not yet known)"
-  modifyInstanceDefs $ mapSnd (x:)
+  modifyInstanceDefs $ mapSnd $ Set.insert x
 
 -- | Add instance to some ``class''.
 addNamedInstance
@@ -419,4 +428,4 @@
   -- Mark x as instance for n.
   modifySignature $ updateDefinition x $ \ d -> d { defInstance = Just n }
   -- Add x to n's instances.
-  modifyInstanceDefs $ mapFst $ Map.insertWith (++) n [x]
+  modifyInstanceDefs $ mapFst $ Map.insertWith Set.union n $ Set.singleton x
diff --git a/src/full/Agda/TypeChecking/Monad/Trace.hs b/src/full/Agda/TypeChecking/Monad/Trace.hs
--- a/src/full/Agda/TypeChecking/Monad/Trace.hs
+++ b/src/full/Agda/TypeChecking/Monad/Trace.hs
@@ -45,17 +45,21 @@
 traceCall mkCall m = do
   let call      = mkCall
       callRange = getRange call
-  -- Andreas, 2015-02-09 Make sure we do not set a range
-  -- outside the current file
-  verboseS "check.ranges" 10 $
+  -- Andreas, 2016-09-13 issue #2177
+  -- Since the fix of #2092 we may report an error outside the current file.
+  -- (For instance, if we import a module which then happens to have the
+  -- wrong name.)
+  -- Thus, we no longer crash, but just report the alien range.
+  -- -- Andreas, 2015-02-09 Make sure we do not set a range
+  -- -- outside the current file
+  verboseS "check.ranges" 90 $
     Strict.whenJust (rangeFile callRange) $ \f -> do
       currentFile <- asks envCurrentPath
       when (currentFile /= Just f) $ do
-        reportSLn "impossible" 10 $
+        reportSLn "check.ranges" 90 $
           prettyShow call ++
-          " is trying to set the current range to " ++ show callRange ++
+          " is setting the current range to " ++ show callRange ++
           " which is outside of the current file " ++ show currentFile
-        __IMPOSSIBLE__
   cl <- liftTCM $ buildClosure call
   let trace = local $ foldr (.) id $
         [ \e -> e { envCall = Just cl } | interestingCall cl ] ++
diff --git a/src/full/Agda/TypeChecking/Patterns/Abstract.hs b/src/full/Agda/TypeChecking/Patterns/Abstract.hs
--- a/src/full/Agda/TypeChecking/Patterns/Abstract.hs
+++ b/src/full/Agda/TypeChecking/Patterns/Abstract.hs
@@ -1,5 +1,4 @@
 {-# LANGUAGE CPP                 #-}
-{-# LANGUAGE FlexibleInstances   #-}
 {-# LANGUAGE ScopedTypeVariables #-}
 
 -- | Tools to manipulate patterns in abstract syntax
@@ -38,12 +37,12 @@
         | n < 0     -> __IMPOSSIBLE__
         | n > 20    -> tooBig
         | otherwise -> do
-          Con z _ <- ignoreSharing <$> primZero
-          Con s _ <- ignoreSharing <$> primSuc
+          Con z _ _ <- ignoreSharing <$> primZero
+          Con s _ _ <- ignoreSharing <$> primSuc
           let zero  = A.ConP cinfo (A.AmbQ [setRange r $ conName z]) []
               suc p = A.ConP cinfo (A.AmbQ [setRange r $ conName s]) [defaultNamedArg p]
               info  = A.PatRange r
-              cinfo = A.ConPatInfo ConPCon info
+              cinfo = A.ConPatInfo ConOCon info
               p'    = foldr ($) zero $ genericReplicate n suc
           return $ foldr (A.AsP info) p' xs
       _ -> return p
@@ -80,6 +79,7 @@
     A.DotP{}             -> return p
     A.LitP{}             -> return p
     A.AbsurdP{}          -> return p
+    A.ProjP{}            -> return p
     A.ConP i ds as       -> A.ConP i ds <$> expandPatternSynonyms as
     A.DefP i q as        -> A.DefP i q <$> expandPatternSynonyms as
     A.AsP i x p          -> A.AsP i x <$> expandPatternSynonyms p
diff --git a/src/full/Agda/TypeChecking/Patterns/Match.hs b/src/full/Agda/TypeChecking/Patterns/Match.hs
--- a/src/full/Agda/TypeChecking/Patterns/Match.hs
+++ b/src/full/Agda/TypeChecking/Patterns/Match.hs
@@ -1,6 +1,6 @@
 {-# LANGUAGE CPP                 #-}
-{-# LANGUAGE DeriveFunctor       #-}
 {-# LANGUAGE ScopedTypeVariables #-}
+{-# LANGUAGE NondecreasingIndentation #-}
 
 -- | Pattern matcher used in the reducer for clauses that
 --   have not been compiled to case trees yet.
@@ -9,6 +9,8 @@
 
 import Prelude hiding (null)
 
+import Data.IntMap (IntMap)
+import qualified Data.IntMap as IntMap
 import Data.Monoid
 import Data.Traversable (traverse)
 
@@ -20,10 +22,16 @@
 import Agda.TypeChecking.Substitute
 import Agda.TypeChecking.Monad hiding (reportSDoc)
 import Agda.TypeChecking.Pretty
+import Agda.TypeChecking.Records
+import Agda.TypeChecking.Datatypes
 
+import Agda.Utils.Empty
 import Agda.Utils.Functor (for, ($>))
+import Agda.Utils.List
+import Agda.Utils.Maybe
 import Agda.Utils.Monad
 import Agda.Utils.Null
+import Agda.Utils.Singleton
 import Agda.Utils.Size
 import Agda.Utils.Tuple
 
@@ -32,7 +40,7 @@
 
 -- | If matching is inconclusive (@DontKnow@) we want to know whether
 --   it is due to a particular meta variable.
-data Match a = Yes Simplification [a]
+data Match a = Yes Simplification (IntMap (Arg a))
              | No
              | DontKnow (Blocked ())
   deriving Functor
@@ -42,6 +50,17 @@
   null (Yes simpl as) = null simpl && null as
   null _              = False
 
+matchedArgs :: Empty -> Int -> IntMap (Arg a) -> [Arg a]
+matchedArgs err n vs = map get [0..n-1]
+  where
+    get k = fromMaybe (absurd err) $ IntMap.lookup k vs
+
+-- | Builds a proper substitution from an IntMap produced by match(Co)patterns
+buildSubstitution :: (DeBruijn a)
+                  => Empty -> Int -> IntMap (Arg a) -> Substitution' a
+buildSubstitution err n vs = parallelS $ map unArg $ matchedArgs err n vs
+
+
 -- 'mappend' is UNUSED.
 --
 -- instance Monoid (Match a) where
@@ -96,15 +115,15 @@
             (r', vs') <- loop ps vs
             let vs1 = v' : vs'
             case r' of
-              Yes s' us' -> return (Yes (s `mappend` s') (us ++ us'), vs1)
-              No         -> return (No                              , vs1)
-              DontKnow m -> return (DontKnow m                      , vs1)
+              Yes s' us' -> return (Yes (s `mappend` s') (us `mappend` us'), vs1)
+              No         -> return (No                                     , vs1)
+              DontKnow m -> return (DontKnow m                             , vs1)
       _ -> __IMPOSSIBLE__
 
 -- | @matchCopatterns ps es@ matches spine @es@ against copattern spine @ps@.
 --
 --   Returns 'Yes' and a substitution for the pattern variables
---   (in form of [Term]) if matching was successful.
+--   (in form of IntMap Term) if matching was successful.
 --
 --   Returns 'No' if there was a constructor or projection mismatch.
 --
@@ -114,7 +133,9 @@
 --   In any case, also returns spine @es@ in reduced form
 --   (with all the weak head reductions performed that were necessary
 --   to come to a decision).
-matchCopatterns :: [NamedArg Pattern] -> [Elim] -> ReduceM (Match Term, [Elim])
+matchCopatterns :: [NamedArg DeBruijnPattern]
+                -> [Elim]
+                -> ReduceM (Match Term, [Elim])
 matchCopatterns ps vs = do
   traceSDoc "tc.match" 50
     (vcat [ text "matchCopatterns"
@@ -126,15 +147,21 @@
      foldMatch (matchCopattern . namedArg) ps vs
 
 -- | Match a single copattern.
-matchCopattern :: Pattern -> Elim -> ReduceM (Match Term, Elim)
-matchCopattern (ProjP p) elim@(Proj q)
-  | p == q    = return (Yes YesSimplification [], elim)
-  | otherwise = return (No                      , elim)
+matchCopattern :: DeBruijnPattern
+               -> Elim
+               -> ReduceM (Match Term, Elim)
+matchCopattern pat@ProjP{} elim@(Proj _ q) = do
+  ProjP _ p <- normaliseProjP pat
+  q         <- getOriginalProjection q
+  return $ if p == q then (Yes YesSimplification empty, elim)
+                     else (No,                          elim)
 matchCopattern ProjP{} Apply{}   = __IMPOSSIBLE__
 matchCopattern _       Proj{}    = __IMPOSSIBLE__
 matchCopattern p       (Apply v) = mapSnd Apply <$> matchPattern p v
 
-matchPatterns :: [NamedArg Pattern] -> [Arg Term] -> ReduceM (Match Term, [Arg Term])
+matchPatterns :: [NamedArg DeBruijnPattern]
+              -> [Arg Term]
+              -> ReduceM (Match Term, [Arg Term])
 matchPatterns ps vs = do
   traceSDoc "tc.match" 50
     (vcat [ text "matchPatterns"
@@ -147,36 +174,51 @@
      foldMatch (matchPattern . namedArg) ps vs
 
 -- | Match a single pattern.
-matchPattern :: Pattern -> Arg Term -> ReduceM (Match Term, Arg Term)
+matchPattern :: DeBruijnPattern
+             -> Arg Term
+             -> ReduceM (Match Term, Arg Term)
 matchPattern p u = case (p, u) of
   (ProjP{}, _            ) -> __IMPOSSIBLE__
-  (VarP _ , arg@(Arg _ v)) -> return (Yes NoSimplification [v], arg)
-  (DotP _ , arg@(Arg _ v)) -> return (Yes NoSimplification [v], arg)
+  (VarP x , arg          ) -> return (Yes NoSimplification entry, arg)
+    where entry = singleton (dbPatVarIndex x, arg)
+  (DotP _ , arg@(Arg _ v)) -> return (Yes NoSimplification empty, arg)
   (LitP l , arg@(Arg _ v)) -> do
     w <- reduceB' v
     let arg' = arg $> ignoreBlocking w
     case ignoreSharing <$> w of
       NotBlocked _ (Lit l')
-          | l == l'            -> return (Yes YesSimplification []    , arg')
+          | l == l'            -> return (Yes YesSimplification empty , arg')
           | otherwise          -> return (No                          , arg')
       NotBlocked _ (MetaV x _) -> return (DontKnow $ Blocked x ()     , arg')
       Blocked x _              -> return (DontKnow $ Blocked x ()     , arg')
       NotBlocked r t           -> return (DontKnow $ NotBlocked r' () , arg')
         where r' = stuckOn (Apply arg') r
 
-  -- Case record pattern: always succeed!
-  -- This case is necessary if we want to use the clauses before
-  -- record pattern translation (e.g., in type-checking definitions by copatterns).
-  (ConP con@(ConHead c _ ds) ConPatternInfo{conPRecord = Just{}} ps, arg@(Arg info v))
-     -- precondition: con actually comes with the record fields
-     | size ds == size ps -> mapSnd (Arg info . Con con) <$> do
-         matchPatterns ps $ for ds $ \ d -> Arg info $ v `applyE` [Proj d]
-           -- TODO: correct info for projected terms
-     | otherwise -> __IMPOSSIBLE__
+  -- Case constructor pattern.
+  (ConP c cpi ps, Arg info v) -> do
+    if isNothing $ conPRecord cpi then fallback else do
+    isEtaRecordCon (conName c) >>= \case
+      Nothing -> fallback
+      Just fs -> do
+        -- Case: Eta record constructor.
+        -- This case is necessary if we want to use the clauses before
+        -- record pattern translation (e.g., in type-checking definitions by copatterns).
+        unless (size fs == size ps) __IMPOSSIBLE__
+        mapSnd (Arg info . Con c (fromConPatternInfo cpi)) <$> do
+          matchPatterns ps $ for fs $ \ (Arg ai f) -> Arg ai $ v `applyE` [Proj ProjSystem f]
+    where
+    isEtaRecordCon :: QName -> ReduceM (Maybe [Arg QName])
+    isEtaRecordCon c = do
+      (theDef <$> getConstInfo c) >>= \case
+        Constructor{ conData = d } -> do
+          (theDef <$> getConstInfo d) >>= \case
+            r@Record{ recFields = fs } | recEtaEquality r -> return $ Just fs
+            _ -> return Nothing
+        _ -> __IMPOSSIBLE__
 
-  -- Case data constructor pattern.
-  (ConP c _ ps, Arg info v) ->
-    do  w <- traverse constructorForm =<< reduceB' v
+    -- Default: not an eta record constructor.
+    fallback = do
+        w <- reduceB' v
         -- Unfold delayed (corecursive) definitions one step. This is
         -- only necessary if c is a coinductive constructor, but
         -- 1) it does not hurt to do it all the time, and
@@ -192,21 +234,24 @@
                    -- unfolded (due to open public).
                _ -> return w
 -}
-        w <- case w of
+        -- Jesper, 23-06-2016: Note that unfoldCorecursion may destroy
+        -- constructor forms, so we only call constructorForm after.
+        w <- traverse constructorForm =<< case w of
                NotBlocked r u -> unfoldCorecursion u  -- Andreas, 2014-06-12 TODO: r == ReallyNotBlocked sufficient?
                _ -> return w
         let v = ignoreBlocking w
             arg = Arg info v  -- the reduced argument
         case ignoreSharing <$> w of
-          NotBlocked _ (Con c' vs)
+          NotBlocked _ (Con c' ci vs)
             | c == c'               -> do
                 (m, vs) <- yesSimplification <$> matchPatterns ps vs
-                return (m, Arg info $ Con c' vs)
+                return (m, Arg info $ Con c' ci vs)
             | otherwise             -> return (No                          , arg)
           NotBlocked _ (MetaV x vs) -> return (DontKnow $ Blocked x ()     , arg)
           Blocked x _               -> return (DontKnow $ Blocked x ()     , arg)
           NotBlocked r _            -> return (DontKnow $ NotBlocked r' () , arg)
             where r' = stuckOn (Apply arg) r
+
 -- ASR (08 November 2014). The type of the function could be
 --
 -- @(Match Term, [Arg Term]) -> (Match Term, [Arg Term])@.
diff --git a/src/full/Agda/TypeChecking/Patterns/Match.hs-boot b/src/full/Agda/TypeChecking/Patterns/Match.hs-boot
--- a/src/full/Agda/TypeChecking/Patterns/Match.hs-boot
+++ b/src/full/Agda/TypeChecking/Patterns/Match.hs-boot
@@ -1,11 +1,19 @@
 
 module Agda.TypeChecking.Patterns.Match where
 
+import Data.IntMap (IntMap)
+
 import Agda.Syntax.Common
 import Agda.Syntax.Internal
 import Agda.TypeChecking.Monad
+import {-# SOURCE #-} Agda.TypeChecking.Pretty (PrettyTCM)
+import Agda.TypeChecking.Substitute (DeBruijn)
 
-data Match a = Yes Simplification [a] | No | DontKnow (Blocked ())
+import Agda.Utils.Empty
 
-matchPatterns   :: [NamedArg Pattern] -> Args  -> ReduceM (Match Term, Args)
-matchCopatterns :: [NamedArg Pattern] -> Elims -> ReduceM (Match Term, Elims)
+data Match a = Yes Simplification (IntMap (Arg a)) | No | DontKnow (Blocked ())
+
+buildSubstitution :: (DeBruijn a) => Empty -> Int -> IntMap (Arg a) -> Substitution' a
+
+matchPatterns   :: [NamedArg DeBruijnPattern] -> Args  -> ReduceM (Match Term, Args)
+matchCopatterns :: [NamedArg DeBruijnPattern] -> Elims -> ReduceM (Match Term, Elims)
diff --git a/src/full/Agda/TypeChecking/Polarity.hs b/src/full/Agda/TypeChecking/Polarity.hs
--- a/src/full/Agda/TypeChecking/Polarity.hs
+++ b/src/full/Agda/TypeChecking/Polarity.hs
@@ -1,6 +1,4 @@
 {-# LANGUAGE CPP               #-}
-{-# LANGUAGE FlexibleInstances #-}
-{-# LANGUAGE PatternGuards     #-}
 
 module Agda.TypeChecking.Polarity where
 
@@ -92,11 +90,10 @@
 
 -- | Main function of this module.
 computePolarity :: QName -> TCM ()
-computePolarity x = inConcreteOrAbstractMode x $ do
+computePolarity x = inConcreteOrAbstractMode x $ \ def -> do
   reportSLn "tc.polarity.set" 25 $ "Computing polarity of " ++ show x
 
   -- get basic polarity from positivity analysis
-  def      <- getConstInfo x
   let npars = droppedPars def
   let pol0 = replicate npars Nonvariant ++ map polFromOcc (defArgOccurrences def)
   reportSLn "tc.polarity.set" 15 $ "Polarity of " ++ show x ++ " from positivity: " ++ show pol0
@@ -165,13 +162,13 @@
 usagePolarity def = case def of
     Axiom{}                                 -> []
     Function{ funClauses = [] }             -> []
-    Function{ funClauses = cs }             -> usage $ map clausePats cs
+    Function{ funClauses = cs }             -> usage $ map namedClausePats cs
     Datatype{ dataPars = np, dataIxs = ni } -> genericReplicate np Nonvariant
     Record{ recPars = n }                   -> genericReplicate n Nonvariant
     Constructor{}                           -> []
     Primitive{}                             -> []
   where
-    usage = foldr1 (zipWith (/\)) . map (map (usagePat . unArg))
+    usage = foldr1 (zipWith (/\)) . map (map (usagePat . namedArg))
     usagePat VarP{} = Nonvariant
     usagePat DotP{} = Nonvariant
     usagePat ConP{} = Invariant
@@ -258,7 +255,7 @@
       -- get a list of 'Relevance's for the variables bound in the pattern
       rels0 = getRelevance <$> (concatMap (patternVars . fmap namedThing) ps')
       -- this is the order the variables appear in the telescope
-      perm  = clausePerm cl
+      perm  = fromMaybe __IMPOSSIBLE__ $ clausePerm cl
       rels  = permute perm rels0
       -- now improve 'Relevance' in 'Telescope' by pattern relevance
       updateDom UnusedArg = mapRelevance mkUnused
@@ -293,7 +290,7 @@
             -- and seek confirm it by looking at the constructor types
             let check c = do
                   t <- defType <$> getConstInfo c
-                  addCtxTel (telFromList parTel) $ do
+                  addContext (telFromList parTel) $ do
                     let pars = map (defaultArg . var) $ downFrom np
                     TelV conTel target <- telView =<< (t `piApplyM` pars)
                     case conTel of
@@ -387,7 +384,7 @@
   polarities i (El _ v) = polarities i v
 
 instance HasPolarity a => HasPolarity (Elim' a) where
-  polarities i (Proj p)  = return []
+  polarities i Proj{}    = return []
   polarities i (Apply a) = polarities i a
 
 instance HasPolarity Term where
@@ -405,7 +402,7 @@
       pols <- getPolarity x
       let compose p ps = map (composePol p) ps
       concat . zipWith compose (pols ++ repeat Invariant) <$> mapM (polarities i) ts
-    Con _ ts   -> polarities i ts -- constructors can be seen as monotone in all args.
+    Con _ _ ts -> polarities i ts -- constructors can be seen as monotone in all args.
     Pi a b     -> (++) <$> (map neg <$> polarities i a) <*> polarities i b
     Sort s     -> return [] -- polarities i s -- return []
     MetaV _ ts -> map (const Invariant) <$> polarities i ts
diff --git a/src/full/Agda/TypeChecking/Positivity.hs b/src/full/Agda/TypeChecking/Positivity.hs
--- a/src/full/Agda/TypeChecking/Positivity.hs
+++ b/src/full/Agda/TypeChecking/Positivity.hs
@@ -1,8 +1,5 @@
 {-# LANGUAGE BangPatterns         #-}
 {-# LANGUAGE CPP                  #-}
-{-# LANGUAGE FlexibleContexts     #-}
-{-# LANGUAGE FlexibleInstances    #-}
-{-# LANGUAGE TupleSections        #-}
 {-# LANGUAGE UndecidableInstances #-}
 
 -- | Check that a datatype is strictly positive.
@@ -13,28 +10,31 @@
 import Control.Applicative hiding (empty)
 import Control.DeepSeq
 import Control.Monad.Reader
+import Control.Monad.State (get)
 
 import Data.Either
 import qualified Data.Foldable as Fold
 import Data.Function
 import Data.Graph (SCC(..), flattenSCC)
+import Data.IntMap (IntMap)
+import qualified Data.IntMap as IntMap
 import Data.List as List hiding (null)
 import Data.Map (Map)
 import qualified Data.Map as Map
+import Data.Monoid (mconcat)
 import qualified Data.Sequence as DS
 import Data.Set (Set)
 import qualified Data.Set as Set
 
 import Debug.Trace
 
-import Test.QuickCheck
-
 import Agda.Syntax.Common
 import qualified Agda.Syntax.Info as Info
+import Agda.Syntax.Position (fuseRange, Range, HasRange(..), noRange)
 import Agda.Syntax.Internal
 import Agda.Syntax.Internal.Pattern
 import Agda.TypeChecking.Datatypes (isDataOrRecordType, DataOrRecord(..))
-import Agda.TypeChecking.Records (unguardedRecord, recursiveRecord)
+import Agda.TypeChecking.Records
 import Agda.TypeChecking.Monad
 import Agda.TypeChecking.Monad.Builtin (primInf, CoinductionKit(..), coinductionKit)
 import Agda.TypeChecking.Reduce
@@ -51,6 +51,7 @@
 import Agda.Utils.Null
 import qualified Agda.Utils.Permutation as Perm
 import Agda.Utils.SemiRing
+import Agda.Utils.Singleton
 import Agda.Utils.Size
 
 #include "undefined.h"
@@ -109,7 +110,7 @@
     checkPos :: Graph Node Edge ->
                 Graph Node Occurrence ->
                 QName -> TCM ()
-    checkPos g gstar q = inConcreteOrAbstractMode q $ do
+    checkPos g gstar q = inConcreteOrAbstractMode q $ \ _def -> do
       -- we check positivity only for data or record definitions
       whenJustM (isDatatype q) $ \ dr -> do
         reportSDoc "tc.pos.check" 10 $ text "Checking positivity of" <+> prettyTCM q
@@ -122,15 +123,17 @@
             -- which relates productOfEdgesInBoundedWalk to
             -- gaussJordanFloydWarshallMcNaughtonYamada.
 
-            how :: String -> Occurrence -> TCM Doc
-            how msg bound =
+            reason bound =
               case productOfEdgesInBoundedWalk
                      occ g (DefNode q) (DefNode q) bound of
-                Just (Edge _ how) -> fsep $
+                Just (Edge _ how) -> how
+                Nothing           -> __IMPOSSIBLE__
+
+            how :: String -> Occurrence -> TCM Doc
+            how msg bound = fsep $
                   [prettyTCM q] ++ pwords "is" ++
                   pwords (msg ++ ", because it occurs") ++
-                  [prettyTCM how]
-                Nothing -> __IMPOSSIBLE__
+                  [prettyTCM (reason bound)]
 
         -- if we have a negative loop, raise error
 
@@ -140,9 +143,8 @@
         when (Info.mutualPositivityCheck mi) $
           whenM positivityCheckEnabled $
             case loop of
-            Just o | o <= JustPos -> do
-              err <- how "not strictly positive" JustPos
-              setCurrentRange q $ typeError $ GenericDocError err
+            Just o | o <= JustPos ->
+              warning $ NotStrictlyPositive q (reason JustPos)
             _ -> return ()
 
         -- if we find an unguarded record, mark it as such
@@ -157,6 +159,13 @@
               reportSDoc "tc.pos.record" 5 $ how "recursive" GuardPos
               recursiveRecord q
               checkInduction q
+            -- If the record is not recursive, switch on eta
+            -- unless it is coinductive or a no-eta-equality record.
+            Nothing -> do
+              reportSDoc "tc.pos.record" 10 $
+                text "record type " <+> prettyTCM q <+>
+                text "is not recursive"
+              nonRecursiveRecord q
             _ -> return ()
 
     checkInduction :: QName -> TCM ()
@@ -202,9 +211,9 @@
       -- Compute a map from each name in q to the maximal argument index
       let maxs = Map.fromListWith max
            [ (q, i) | ArgNode q i <- Set.toList $ Graph.sourceNodes g, q `Set.member` qset ]
-      forM_ qs $ \ q -> inConcreteOrAbstractMode q $ do
+      forM_ qs $ \ q -> inConcreteOrAbstractMode q $ \ def -> do
         reportSDoc "tc.pos.args" 10 $ text "checking args of" <+> prettyTCM q
-        n <- getDefArity =<< getConstInfo q
+        n <- getDefArity def
         -- If there is no outgoing edge @ArgNode q i@, all @n@ arguments are @Unused@.
         -- Otherwise, we obtain the occurrences from the Graph.
         let findOcc i = fromMaybe Unused $ Graph.lookup (ArgNode q i) (DefNode q) g
@@ -231,37 +240,14 @@
   Record{ recPars = n }    -> return n
   _                        -> return 0
 
--- Specification of occurrences -------------------------------------------
+-- Operations on occurrences -------------------------------------------
 
 -- See also Agda.TypeChecking.Positivity.Occurrence.
 
--- | Description of an occurrence.
-data OccursWhere
-  = Unknown
-    -- ^ an unknown position (treated as negative)
-  | Known (DS.Seq Where)
-    -- ^ The elements of the sequence, from left to right, explain how
-    -- to get to the occurrence.
-  deriving (Show, Eq, Ord)
-
--- | One part of the description of an occurrence.
-data Where
-  = LeftOfArrow
-  | DefArg QName Nat -- ^ in the nth argument of a define constant
-  | UnderInf         -- ^ in the principal argument of built-in ∞
-  | VarArg           -- ^ as an argument to a bound variable
-  | MetaArg          -- ^ as an argument of a metavariable
-  | ConArgType QName -- ^ in the type of a constructor
-  | IndArgType QName -- ^ in a datatype index of a constructor
-  | InClause Nat     -- ^ in the nth clause of a defined function
-  | Matched          -- ^ matched against in a clause of a defined function
-  | InDefOf QName    -- ^ in the definition of a constant
-  deriving (Show, Eq, Ord)
-
 (>*<) :: OccursWhere -> OccursWhere -> OccursWhere
-Unknown   >*< _         = Unknown
-Known _   >*< Unknown   = Unknown
-Known os1 >*< Known os2 = Known (os1 DS.>< os2)
+Unknown      >*< _            = Unknown
+Known _    _ >*< Unknown      = Unknown
+Known r1 os1 >*< Known r2 os2 = Known (fuseRange r1 r2) (os1 DS.>< os2)
 
 instance PrettyTCM OccursWhere where
   prettyTCM o = prettyOs $ map maxOneLeftOfArrow $ uniq $ splitOnDef o
@@ -278,8 +264,8 @@
       prettyOs [o] = prettyO o <> text "."
       prettyOs (o:os) = prettyO o <> text ", which occurs" $$ prettyOs os
 
-      prettyO Unknown    = empty
-      prettyO (Known ws) =
+      prettyO Unknown      = empty
+      prettyO (Known _ ws) =
         Fold.foldrM (\w d -> return d $$ fsep (prettyW w)) empty ws
 
       prettyW w = case w of
@@ -298,8 +284,8 @@
         Matched      -> pwords "as matched against"
         InDefOf d    -> pwords "in the definition of" ++ [prettyTCM d]
 
-      maxOneLeftOfArrow Unknown    = Unknown
-      maxOneLeftOfArrow (Known ws) = Known $
+      maxOneLeftOfArrow Unknown      = Unknown
+      maxOneLeftOfArrow (Known r ws) = Known r $
         noArrows
           DS.><
         case DS.viewl startsWithArrow of
@@ -311,20 +297,20 @@
         isArrow LeftOfArrow{} = True
         isArrow _             = False
 
-      splitOnDef Unknown    = [Unknown]
-      splitOnDef (Known ws) = split ws DS.empty
+      splitOnDef Unknown      = [Unknown]
+      splitOnDef (Known r ws) = split ws DS.empty
         where
         split ws acc = case DS.viewl ws of
           w@InDefOf{} DS.:< ws -> let rest = split ws (DS.singleton w) in
                                   if DS.null acc
                                   then rest
-                                  else Known acc : rest
+                                  else Known r acc : rest
           w           DS.:< ws -> split ws (acc DS.|> w)
-          DS.EmptyL            -> [Known acc]
+          DS.EmptyL            -> [Known r acc]
 
 instance Sized OccursWhere where
-  size Unknown    = 1
-  size (Known ws) = 1 + size ws
+  size Unknown      = 1
+  size (Known _ ws) = 1 + size ws
 
 -- Computing occurrences --------------------------------------------------
 
@@ -332,6 +318,10 @@
           | ADef QName
   deriving (Eq, Ord, Show)
 
+instance HasRange Item where
+  getRange (AnArg _) = noRange
+  getRange (ADef qn)   = getRange qn
+
 type Occurrences = Map Item [OccursWhere]
 
 -- | Used to build 'Occurrences' and occurrence graphs.
@@ -377,7 +367,7 @@
   pp  m ws (OccursAs w ob)     = OccursAs' w <$> pp m (ws DS.|> w) ob
   pp  m ws (OnlyVarsUpTo n ob) = pp (Just $! maybe n (min n) m) ws ob
   pp  m ws (OccursHere i)      = do guard keep
-                                    return (OccursHere' i (Known ws))
+                                    return (OccursHere' i (Known (getRange i) ws))
     where
     keep = case (m, i) of
       (Nothing, _)      -> True
@@ -427,8 +417,11 @@
 type OccM = Reader OccEnv
 
 withExtendedOccEnv :: Maybe Item -> OccM a -> OccM a
-withExtendedOccEnv i = local $ \ e -> e { vars = i : vars e }
+withExtendedOccEnv i = withExtendedOccEnv' [i]
 
+withExtendedOccEnv' :: [Maybe Item] -> OccM a -> OccM a
+withExtendedOccEnv' is = local $ \ e -> e { vars = is ++ vars e }
+
 -- | Running the monad
 getOccurrences
   :: (Show a, PrettyTCM a, ComputeOccurrences a)
@@ -444,31 +437,28 @@
 
 instance ComputeOccurrences Clause where
   occurrences cl = do
-    let ps = unnumberPatVars $ clausePats cl
+    let ps    = namedClausePats cl
+        items = IntMap.elems $ patItems ps -- sorted from low to high DBI
     (Concat (mapMaybe matching (zip [0..] ps)) >+<) <$>
-      walk (patItems ps) (clauseBody cl)
+      withExtendedOccEnv' items (occurrences $ clauseBody cl)
     where
       matching (i, p)
-        | properlyMatching (unArg p) = Just $ OccursAs Matched $
-                                                OccursHere $ AnArg i
+        | properlyMatching (namedThing $ unArg p) =
+            Just $ OccursAs Matched $ OccursHere $ AnArg i
         | otherwise                  = Nothing
 
-      walk _         NoBody     = return emptyOB
-      walk []        (Body v)   = occurrences v
-      walk (i : pis) (Bind b)   = withExtendedOccEnv i $ walk pis $ absBody b
-      walk []        Bind{}     = __IMPOSSIBLE__
-      walk (_ : _)   Body{}     = __IMPOSSIBLE__
-
       -- @patItems ps@ creates a map from the pattern variables of @ps@
       -- to the index of the argument they are bound in.
-      -- This map is given as a list.
-      patItems ps = concat $ zipWith patItem [0..] ps
+      patItems ps = mconcat $ zipWith patItem [0..] ps
 
-      -- @patItem i p@ replicates index @i@ as often as there are
-      -- pattern variables in @p@ (dot patterns count as variable)
-      patItem :: Int -> Arg Pattern -> [Maybe Item]
-      patItem i p = map (const $ Just $ AnArg i) $ patternVars p
+      -- @patItem i p@ assigns index @i@ to each pattern variable in @p@
+      patItem :: Int -> NamedArg DeBruijnPattern -> IntMap (Maybe Item)
+      patItem i p = Fold.foldMap makeEntry ixs
+        where
+          ixs = map dbPatVarIndex $ lefts $ map unArg $ patternVars $ namedThing <$> p
 
+          makeEntry x = singleton (x, Just $ AnArg i)
+
 instance ComputeOccurrences Term where
   occurrences v = case unSpine v of
     Var i args -> do
@@ -490,7 +480,7 @@
             if n == 1 then OccursAs UnderInf else OccursAs (DefArg d n)
       occs <- mapM occurrences args
       return $ OccursHere (ADef d) >+< Concat (zipWith occsAs [0..] occs)
-    Con c args   -> occurrences args
+    Con _ _ args -> occurrences args
     MetaV _ args -> OccursAs MetaArg <$> occurrences args
     Pi a b       -> do
       oa <- occurrences a
@@ -512,7 +502,11 @@
 
 instance ComputeOccurrences LevelAtom where
   occurrences l = case l of
-    MetaLevel _ vs   -> OccursAs MetaArg <$> occurrences vs
+    MetaLevel x es   -> occurrences $ MetaV x es
+      -- Andreas, 2016-07-25, issue 2108
+      -- NOT: OccursAs MetaArg <$> occurrences vs
+      -- since we need to unSpine!
+      -- (Otherwise, we run into __IMPOSSIBLE__ at Proj elims)
     BlockedLevel _ v -> occurrences v
     NeutralLevel _ v -> occurrences v
     UnreducedLevel v -> occurrences v
@@ -541,6 +535,10 @@
 instance ComputeOccurrences a => ComputeOccurrences [a] where
   occurrences vs = Concat <$> mapM occurrences vs
 
+instance ComputeOccurrences a => ComputeOccurrences (Maybe a) where
+  occurrences (Just v) = occurrences v
+  occurrences Nothing  = return emptyOB
+
 instance (ComputeOccurrences a, ComputeOccurrences b) => ComputeOccurrences (a, b) where
   occurrences (x, y) = do
     ox <- occurrences x
@@ -557,12 +555,13 @@
 
 -- | Computes the occurrences in the given definition.
 computeOccurrences' :: QName -> TCM OccurrencesBuilder
-computeOccurrences' q = inConcreteOrAbstractMode q $ do
+computeOccurrences' q = inConcreteOrAbstractMode q $ \ def -> do
   reportSDoc "tc.pos" 25 $ do
-    a <- defAbstract <$> getConstInfo q
+    let a = defAbstract def
     m <- asks envAbstractMode
+    cur <- asks envCurrentModule
     text "computeOccurrences" <+> prettyTCM q <+> text (show a) <+> text (show m)
-  def <- getConstInfo q
+      <+> prettyTCM cur
   OccursAs (InDefOf q) <$> case theDef def of
     Function{funClauses = cs} -> do
       n  <- getDefArity def
@@ -597,33 +596,31 @@
     Constructor{} -> return emptyOB
     Axiom{}       -> return emptyOB
     Primitive{}   -> return emptyOB
+    AbstractDefn  -> __IMPOSSIBLE__
 
 -- | Eta expand a clause to have the given number of variables.
 --   Warning: doesn't put correct types in telescope!
 --   This is used instead of special treatment of lambdas
 --   (which was unsound: issue 121)
 etaExpandClause :: Nat -> Clause -> Clause
-etaExpandClause n c@Clause{ clauseTel = tel, namedClausePats = ps, clauseBody = b }
+etaExpandClause n c
   | m <= 0    = c
   | otherwise = c
-      { namedClausePats = raise m ps ++ map (defaultArg . unnamed . VarP . (,underscore)) (downFrom m)
-      , clauseBody      = liftBody m b
+      { namedClausePats = raise m (namedClausePats c) ++
+                          map (\i -> defaultArg $ namedDBVarP i underscore) (downFrom m)
+      , clauseBody      = liftBody m $ clauseBody c
       , clauseTel       = telFromList $
-          telToList tel ++ (replicate m $ (underscore,) <$> dummyDom)
+          telToList (clauseTel c) ++ (replicate m $ (underscore,) <$> dummyDom)
           -- dummyDom, not __IMPOSSIBLE__, because of debug printing.
       }
   where
-    m = n - genericLength ps
-
-    bind 0 = id
-    bind n = Bind . Abs underscore . bind (n - 1)
+    m = n - genericLength (namedClausePats c)
 
     vars = map (defaultArg . var) $ downFrom m
 --    vars = reverse [ defaultArg $ var i | i <- [0..m - 1] ]
 
-    liftBody m (Bind b)   = Bind $ fmap (liftBody m) b
-    liftBody m NoBody     = bind m NoBody
-    liftBody m (Body v)   = bind m $ Body $ raise m v `apply` vars
+    liftBody m (Just v) = Just $ raise m v `apply` vars
+    liftBody m Nothing  = Nothing
 
 -- Building the occurrence graph ------------------------------------------
 
@@ -690,9 +687,8 @@
     mapM defGraph (Set.toList qs)
   where
     defGraph :: QName -> TCM [Graph.Edge Node Node Edge]
-    defGraph q = do
+    defGraph q = inConcreteOrAbstractMode q $ \ _def -> do
       occs <- computeOccurrences' q
-      es   <- computeEdges qs q occs
 
       reportSDoc "tc.pos.occs" 40 $
         (text "Occurrences in" <+> prettyTCM q <> text ":")
@@ -712,6 +708,11 @@
                      $+$
                    (nest 2 $ vcat $ map (text . show) os))
                (Map.toList (flatten occs)))
+
+      -- Placing this line before the reportSDoc lines above creates a
+      -- space leak: occs is retained for too long.
+      es <- computeEdges qs q occs
+
       reportSDoc "tc.pos.occs.edges" 60 $
         text "Edges:"
           $+$
@@ -800,54 +801,3 @@
     return $ case isDR of
       Just IsData -> GuardPos  -- a datatype is guarding
       _           -> StrictPos
-
-------------------------------------------------------------------------
--- * Generators and tests
-------------------------------------------------------------------------
-
-instance Arbitrary OccursWhere where
-  arbitrary = oneof [return Unknown, Known <$> arbitrary]
-
-  shrink Unknown    = []
-  shrink (Known ws) = Unknown : [ Known ws | ws <- shrink ws ]
-
-instance Arbitrary Where where
-  arbitrary = oneof
-    [ return LeftOfArrow
-    , DefArg <$> arbitrary <*> arbitrary
-    , return UnderInf
-    , return VarArg
-    , return MetaArg
-    , ConArgType <$> arbitrary
-    , IndArgType <$> arbitrary
-    , InClause <$> arbitrary
-    , return Matched
-    , InDefOf <$> arbitrary
-    ]
-
-instance CoArbitrary OccursWhere where
-  coarbitrary (Known ws) = variant 0 . coarbitrary ws
-  coarbitrary Unknown    = variant 1
-
-instance CoArbitrary Where where
-  coarbitrary LeftOfArrow    = variant 0
-  coarbitrary (DefArg a b)   = variant 1 . coarbitrary (a, b)
-  coarbitrary UnderInf       = variant 2
-  coarbitrary VarArg         = variant 3
-  coarbitrary MetaArg        = variant 4
-  coarbitrary (ConArgType a) = variant 5 . coarbitrary a
-  coarbitrary (IndArgType a) = variant 6 . coarbitrary a
-  coarbitrary (InClause a)   = variant 7 . coarbitrary a
-  coarbitrary Matched        = variant 8
-  coarbitrary (InDefOf a)    = variant 9 . coarbitrary a
-
-instance Arbitrary Edge where
-  arbitrary = Edge <$> arbitrary <*> arbitrary
-
-  shrink (Edge o w) = [ Edge o w | o <- shrink o ] ++
-                      [ Edge o w | w <- shrink w ]
-
-instance CoArbitrary Edge where
-  coarbitrary (Edge o w) = coarbitrary (o, w)
-
--- properties moved to Agda.TypeChecking.Positivity.Tests
diff --git a/src/full/Agda/TypeChecking/Positivity/Occurrence.hs b/src/full/Agda/TypeChecking/Positivity/Occurrence.hs
--- a/src/full/Agda/TypeChecking/Positivity/Occurrence.hs
+++ b/src/full/Agda/TypeChecking/Positivity/Occurrence.hs
@@ -1,14 +1,15 @@
 {-# LANGUAGE CPP                #-}
 {-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE TemplateHaskell    #-}
 
+
 -- | Occurrences.
 
 module Agda.TypeChecking.Positivity.Occurrence
   ( Occurrence(..)
+  , OccursWhere(..)
+  , Where(..)
   , boundToEverySome
   , productOfEdgesInBoundedWalk
-  , Agda.TypeChecking.Positivity.Occurrence.tests
   ) where
 
 import Control.Applicative
@@ -19,8 +20,10 @@
 import Data.Typeable (Typeable)
 import Data.Map.Strict (Map)
 import qualified Data.Map.Strict as Map
-import Test.QuickCheck
+import qualified Data.Sequence as DS
 
+import Agda.Syntax.Common
+import Agda.Syntax.Abstract.Name
 import Agda.Syntax.Position
 import Agda.Utils.Graph.AdjacencyMap.Unidirectional (Graph)
 import qualified Agda.Utils.Graph.AdjacencyMap.Unidirectional as Graph
@@ -31,6 +34,33 @@
 #include "undefined.h"
 import Agda.Utils.Impossible
 
+-- Specification of occurrences -------------------------------------------
+
+-- Operations and instances in Agda.TypeChecking.Positivity.
+
+-- | Description of an occurrence.
+data OccursWhere
+  = Unknown
+    -- ^ an unknown position (treated as negative)
+  | Known Range (DS.Seq Where)
+    -- ^ The elements of the sequence, from left to right, explain how
+    -- to get to the occurrence.
+  deriving (Show, Eq, Ord)
+
+-- | One part of the description of an occurrence.
+data Where
+  = LeftOfArrow
+  | DefArg QName Nat -- ^ in the nth argument of a define constant
+  | UnderInf         -- ^ in the principal argument of built-in ∞
+  | VarArg           -- ^ as an argument to a bound variable
+  | MetaArg          -- ^ as an argument of a metavariable
+  | ConArgType QName -- ^ in the type of a constructor
+  | IndArgType QName -- ^ in a datatype index of a constructor
+  | InClause Nat     -- ^ in the nth clause of a defined function
+  | Matched          -- ^ matched against in a clause of a defined function
+  | InDefOf QName    -- ^ in the definition of a constant
+  deriving (Show, Eq, Ord)
+
 -- | Subterm occurrences for positivity checking.
 --   The constructors are listed in increasing information they provide:
 --   @Mixed <= JustPos <= StrictPos <= GuardPos <= Unused@
@@ -49,15 +79,6 @@
 instance KillRange Occurrence where
   killRange = id
 
-instance Arbitrary Occurrence where
-  arbitrary = elements [minBound .. maxBound]
-
-  shrink Unused = []
-  shrink _      = [Unused]
-
-instance CoArbitrary Occurrence where
-  coarbitrary = coarbitrary . fromEnum
-
 -- | 'Occurrence' is a complete lattice with least element 'Mixed'
 --   and greatest element 'Unused'.
 --
@@ -154,128 +175,3 @@
         Just es@(_ : _) -> Just (foldr1 otimes (map Graph.label es))
         Just []         -> __IMPOSSIBLE__
         Nothing         -> Nothing
-
-------------------------------------------------------------------------
--- Tests
-
-prop_Occurrence_oplus_associative ::
-  Occurrence -> Occurrence -> Occurrence -> Bool
-prop_Occurrence_oplus_associative x y z =
-  oplus x (oplus y z) == oplus (oplus x y) z
-
-prop_Occurrence_oplus_ozero :: Occurrence -> Bool
-prop_Occurrence_oplus_ozero x =
-  oplus ozero x == x
-
-prop_Occurrence_oplus_commutative :: Occurrence -> Occurrence -> Bool
-prop_Occurrence_oplus_commutative x y =
-  oplus x y == oplus y x
-
-prop_Occurrence_otimes_associative ::
-  Occurrence -> Occurrence -> Occurrence -> Bool
-prop_Occurrence_otimes_associative x y z =
-  otimes x (otimes y z) == otimes (otimes x y) z
-
-prop_Occurrence_otimes_oone :: Occurrence -> Bool
-prop_Occurrence_otimes_oone x =
-  otimes oone x == x
-    &&
-  otimes x oone == x
-
-prop_Occurrence_distributive ::
-  Occurrence -> Occurrence -> Occurrence -> Bool
-prop_Occurrence_distributive x y z =
-  otimes x (oplus y z) == oplus (otimes x y) (otimes x z)
-    &&
-  otimes (oplus x y) z == oplus (otimes x z) (otimes y z)
-
-prop_Occurrence_otimes_ozero :: Occurrence -> Bool
-prop_Occurrence_otimes_ozero x =
-  otimes ozero x == ozero
-    &&
-  otimes x ozero == ozero
-
-prop_Occurrence_ostar :: Occurrence -> Bool
-prop_Occurrence_ostar x =
-  ostar x == oplus oone (otimes x (ostar x))
-    &&
-  ostar x == oplus oone (otimes (ostar x) x)
-
--- | Is the given predicate satisfiable?
-
-satisfiable :: (Occurrence -> Bool) -> Bool
-satisfiable p = or [ p o | o <- [minBound .. maxBound] ]
-
--- Some properties that are used in the implementation of
--- prop_boundToEverySome2.
-
-prop_boundToEverySome0 :: Bool
-prop_boundToEverySome0 = and
-  [ length ess >= 1
-      &&
-    all satisfiable ps
-      &&
-    and [ p minBound | p <- ps ]
-      &&
-    all (\p -> satisfiable (not . p)) [ e | (e, _) <- ess ]
-      &&
-    and [ not (p maxBound) | p <- ps, satisfiable (not . p) ]
-  | (_, ess) <- Map.toList boundToEverySome
-  , let ps = concat [ [e, s] | (e, s) <- ess ]
-  ]
-
--- A simple property that does not always generate enough interesting
--- test cases.
-
-prop_boundToEverySome1 :: NonEmptyList Occurrence -> Property
-prop_boundToEverySome1 (NonEmpty w) =
-  forAll (elements $ Map.toList boundToEverySome) $ \(bound, ess) ->
-    (foldr1 otimes w <= bound)
-      ==
-    or [ all every w && any some w | (every, some) <- ess ]
-
--- A more complicated property that does not always generate enough
--- interesting test cases.
-
-prop_boundToEverySome2 :: Property
-prop_boundToEverySome2 =
-  forAll (elements $ Map.toList boundToEverySome) $ \(bound, ess) ->
-    (forAll (oneof [ do os1 <- listOf (arbitrary `suchThat` every)
-                        o   <- arbitrary
-                                 `suchThat` (\o -> every o && some o)
-                        os2 <- listOf (arbitrary `suchThat` every)
-                        return (os1 ++ [o] ++ os2)
-                   | (every, some) <- ess
-                   ]) $ \w ->
-       foldr1 otimes w <= bound)
-      .&&.
-    (forAll (do
-         ess <- mapM (\(e, s) ->
-                         elements
-                           (Left e :
-                            [ Right s | satisfiable (not . s) ])) ess
-         let (es, ss) = partitionEithers ess
-             every    = \o -> and [ not (s o) | s <- ss ]
-             some e   = \o -> every o && not (e o)
-             everyG   = arbitrary `suchThat` every
-             segment  = listOf everyG
-         os <- uniqOn id <$> mapM (\e -> arbitrary `suchThat` some e) es
-         if Prelude.null os
-           then listOf1 everyG
-           else (++) <$> listOf everyG
-                     <*> (concat <$>
-                            mapM (\o -> (o :) <$> listOf everyG) os))
-       (\w -> not (foldr1 otimes w <= bound)))
-
-------------------------------------------------------------------------
-
--- Template Haskell hack to make the following $quickCheckAll work
--- under GHC 7.8.
-return []
-
--- | Tests.
-
-tests :: IO Bool
-tests = do
-  putStrLn "Agda.TypeChecking.Positivity.Occurrence"
-  $quickCheckAll
diff --git a/src/full/Agda/TypeChecking/Positivity/Tests.hs b/src/full/Agda/TypeChecking/Positivity/Tests.hs
deleted file mode 100644
--- a/src/full/Agda/TypeChecking/Positivity/Tests.hs
+++ /dev/null
@@ -1,27 +0,0 @@
-{-# LANGUAGE TemplateHaskell #-}
-
-module Agda.TypeChecking.Positivity.Tests where
-
-import Test.QuickCheck
-
-import Agda.TypeChecking.Positivity
-
-import Agda.Utils.SemiRing
-
--- | The 'oplus' method for 'Occurrence' matches that for 'Edge'.
-
-prop_oplus_Occurrence_Edge :: Edge -> Edge -> Bool
-prop_oplus_Occurrence_Edge e1@(Edge o1 _) e2@(Edge o2 _) =
-  case oplus e1 e2 of
-    Edge o _ -> o == oplus o1 o2
-
--- Template Haskell hack to make the following $quickCheckAll work
--- under GHC 7.8.
-return []
-
--- | Tests.
-
-tests :: IO Bool
-tests = do
-  putStrLn "Agda.TypeChecking.Positivity"
-  $quickCheckAll
diff --git a/src/full/Agda/TypeChecking/Pretty.hs b/src/full/Agda/TypeChecking/Pretty.hs
--- a/src/full/Agda/TypeChecking/Pretty.hs
+++ b/src/full/Agda/TypeChecking/Pretty.hs
@@ -1,9 +1,17 @@
 {-# LANGUAGE CPP                  #-}
-{-# LANGUAGE FlexibleContexts     #-}
-{-# LANGUAGE FlexibleInstances    #-}
-{-# LANGUAGE TupleSections        #-}
 {-# LANGUAGE UndecidableInstances #-}
 
+-- To define <>, we will probably need to add:
+--import Prelude hiding ((<>))
+-- but using that now gives warnings and doesn't silence -Wsemigroup
+#if __GLASGOW_HASKELL__ >= 800
+{-# OPTIONS_GHC -Wno-semigroup    #-}
+#endif
+#if __GLASGOW_HASKELL__ <= 708
+{-# LANGUAGE OverlappingInstances #-}
+#endif
+
+
 module Agda.TypeChecking.Pretty where
 
 import Prelude hiding (null)
@@ -11,6 +19,7 @@
 import Control.Applicative hiding (empty)
 import Control.Monad
 
+import Data.Map (Map)
 import qualified Data.Map as Map
 import Data.Maybe
 
@@ -69,6 +78,9 @@
 text :: String -> TCM Doc
 text s = return $ P.text s
 
+multiLineText :: String -> TCM Doc
+multiLineText s = return $ P.multiLineText s
+
 pwords :: String -> [TCM Doc]
 pwords s = map return $ P.pwords s
 
@@ -82,6 +94,9 @@
 hcat ds = P.hcat <$> sequence ds
 vcat ds = P.vcat <$> sequence ds
 
+hang :: TCM Doc -> Int -> TCM Doc -> TCM Doc
+hang p n q = P.hang <$> p <*> pure n <*> q
+
 ($$), ($+$), (<>), (<+>) :: TCM Doc -> TCM Doc -> TCM Doc
 d1 $$ d2  = (P.$$) <$> d1 <*> d2
 d1 $+$ d2 = (P.$+$) <$> d1 <*> d2
@@ -132,7 +147,11 @@
 instance PrettyTCM a => PrettyTCM (Closure a) where
   prettyTCM cl = enterClosure cl prettyTCM
 
+#if __GLASGOW_HASKELL__ >= 710
+instance {-# OVERLAPPABLE #-} PrettyTCM a => PrettyTCM [a] where
+#else
 instance PrettyTCM a => PrettyTCM [a] where
+#endif
   prettyTCM = prettyList . map prettyTCM
 
 instance (PrettyTCM a, PrettyTCM b) => PrettyTCM (a,b) where
@@ -147,6 +166,7 @@
 instance PrettyTCM Sort         where prettyTCM = prettyA <=< reify
 instance PrettyTCM DisplayTerm  where prettyTCM = prettyA <=< reify
 instance PrettyTCM NamedClause  where prettyTCM = prettyA <=< reify
+instance PrettyTCM (QNamed Clause) where prettyTCM = prettyA <=< reify
 instance PrettyTCM Level        where prettyTCM = prettyA <=< reify . Level
 instance PrettyTCM Permutation  where prettyTCM = text . show
 instance PrettyTCM Polarity     where prettyTCM = text . show
@@ -161,22 +181,14 @@
       (rho1, rho2) = splitS 1 rho
       u            = lookupS rho2 0
 
+instance PrettyTCM ModuleParameters where
+  prettyTCM = prettyTCM . mpSubstitution
+
 instance PrettyTCM Clause where
   prettyTCM cl = do
     x <- qualify_ <$> freshName_ "<unnamedclause>"
     prettyTCM (QNamed x cl)
 
-instance PrettyTCM ClauseBody where
-  prettyTCM b = do
-    (binds, body) <- walk b
-    sep [ brackets (fsep binds), return body ]
-    where
-      walk NoBody = return ([], P.text "()")
-      walk (Body v) = ([],) <$> prettyTCM v
-      walk (Bind b) = do
-        (bs, v) <- underAbstraction_ b walk
-        return (text (argNameToString $ absName b) : bs, v)
-
 instance PrettyTCM a => PrettyTCM (Judgement a) where
   prettyTCM (HasType a t) = prettyTCM a <+> text ":" <+> prettyTCM t
   prettyTCM (IsSort  a t) = text "Sort" <+> prettyTCM a <+> text ":" <+> prettyTCM t
@@ -199,10 +211,21 @@
 instance (Reify a e, ToConcrete e c, P.Pretty c) => PrettyTCM (Dom a) where
   prettyTCM x = prettyA =<< reify x
 
+instance (PrettyTCM k, PrettyTCM v) => PrettyTCM (Map k v) where
+  prettyTCM m = text "Map" <> braces (sep $ punctuate comma
+    [ hang (prettyTCM k <+> text "=") 2 (prettyTCM v) | (k, v) <- Map.toList m ])
+
+#if __GLASGOW_HASKELL__ >= 710
+instance {-# OVERLAPPING #-} PrettyTCM ArgName where
+#else
+instance PrettyTCM ArgName where
+#endif
+  prettyTCM = text . show
+
 -- instance (Reify a e, ToConcrete e c, P.Pretty c, PrettyTCM a) => PrettyTCM (Elim' a) where
 instance PrettyTCM Elim where
   prettyTCM (Apply v) = text "$" <+> prettyTCM v
-  prettyTCM (Proj f)  = text "." <> prettyTCM f
+  prettyTCM (Proj _ f)= text "." <> prettyTCM f
 
 instance PrettyTCM a => PrettyTCM (MaybeReduced a) where
   prettyTCM = prettyTCM . ignoreReduced
@@ -213,6 +236,9 @@
 instance PrettyTCM A.Expr where
   prettyTCM = prettyA
 
+instance PrettyTCM A.TypedBinding where
+  prettyTCM = prettyA
+
 instance PrettyTCM Relevance where
   prettyTCM Irrelevant = text "."
   prettyTCM NonStrict  = text ".."
@@ -221,7 +247,8 @@
   prettyTCM UnusedArg  = empty
 
 instance PrettyTCM ProblemConstraint where
-  prettyTCM (PConstr pid c) = prettyList (map prettyTCM pid) <+> prettyTCM c
+  prettyTCM (PConstr []   c) = prettyTCM c
+  prettyTCM (PConstr pids c) = prettyList (map prettyTCM pids) <+> prettyTCM c
 
 instance PrettyTCM Constraint where
     prettyTCM c = case c of
@@ -269,23 +296,26 @@
                     , nest 2 $ prettyTCM p ]
               Open{}  -> __IMPOSSIBLE__
               OpenIFS{}  -> __IMPOSSIBLE__
-              InstS{} -> __IMPOSSIBLE__
               InstV{} -> __IMPOSSIBLE__
-        FindInScope m mb Nothing -> do
-            t <- getMetaType m
-            sep [ text "Find in scope" <+> pretty m
-                  <+> maybe (text ":") (\ b -> text "blocked on" <+> pretty b <+> text ":") mb
-                , prettyTCM t
-                , text " (no candidate for now)"
-                ]
-        FindInScope m mb (Just cands) -> do
+        FindInScope m mb mcands -> do
             t <- getMetaType m
-            sep [ text "Find in scope" <+> pretty m
-                  <+> maybe (text ":") (\ b -> text "blocked on" <+> pretty b <+> text ":") mb
-                , nest 2 $ prettyTCM t
-                , sep $ flip map cands $ \cand ->
-                           prettyTCM (candidateTerm cand) <+> text ": " <+> prettyTCM (candidateType cand)
+            sep [ hang (text "Resolve instance argument" <+> blk) 2 $
+                  hang (pretty m <+> text ":") 2 $ prettyTCM t
+                , cands
                 ]
+          where
+            blk = case mb of
+                    Nothing -> empty
+                    Just b  -> parens $ text "blocked on" <+> pretty b
+            cands =
+              case mcands of
+                Nothing -> text "No candidates yet"
+                Just cnds ->
+                  hang (text "Candidates") 2 $
+                    vcat [ hang (overlap c <+> prettyTCM (candidateTerm c) <+> text ":") 2 $
+                            prettyTCM (candidateType c) | c <- cnds ]
+              where overlap c | candidateOverlappable c = text "overlap"
+                              | otherwise               = empty
         IsEmpty r t ->
             sep [ text "Is empty:", nest 2 $ prettyTCM t ]
         CheckSizeLtSat t ->
@@ -340,15 +370,7 @@
 newtype PrettyContext = PrettyContext Context
 
 instance PrettyTCM PrettyContext where
-  prettyTCM (PrettyContext ctx) = P.fsep . reverse <$> pr (map ctxEntry ctx)
-    where
-    pr :: [Dom (Name, Type)] -> TCM [P.Doc]
-    pr []                            = return []
-    pr (Dom info (x,t) : ctx) = escapeContext 1 $ do
-      -- TODO guilhem: show colors
-      d <- CP.prettyRelevance info . CP.prettyHiding info P.parens <$> do
-             prettyTCM x <+> text ":" <+> prettyTCM t
-      (d :) <$> pr ctx
+  prettyTCM (PrettyContext ctx) = prettyTCM $ telFromList' nameToArgName $ map ctxEntry $ reverse ctx
 
 instance PrettyTCM Context where
   prettyTCM = prettyTCM . PrettyContext
@@ -356,72 +378,82 @@
 instance PrettyTCM CtxId where
   prettyTCM (CtxId x) = prettyTCM x
 
-instance PrettyTCM Pattern where
-  prettyTCM = showPat' (text . patVarNameToString)
-
-instance PrettyTCM DeBruijnPattern where
-  prettyTCM = showPat' $ \ (i, x) -> prettyTCM $ var i
+instance PrettyTCM DBPatVar where
+  prettyTCM = prettyTCM . var . dbPatVarIndex
 
--- | Show a pattern, given a method how to show pattern variables.
-showPat' :: (a -> TCM Doc) -> Pattern' a -> TCM Doc
-showPat' showVar = showPat
-  where
-      showPat (VarP x)      = showVar x
-      showPat (DotP t)      = text ".(" <> prettyTCM t <> text ")"
-      showPat (ConP c i ps) = (if b then braces else parens) $ prTy $
-        prettyTCM c <+> fsep (map (showPat . namedArg) ps)
+instance PrettyTCM a => PrettyTCM (Pattern' a) where
+  prettyTCM (VarP x)      = prettyTCM x
+  prettyTCM (DotP t)      = text ".(" <> prettyTCM t <> text ")"
+  prettyTCM (ConP c i ps) = (if b then braces else parens) $ prTy $
+        prettyTCM c <+> fsep (map (prettyTCM . namedArg) ps)
         where
-        b = maybe False (/= ConPCon) $ conPRecord i
+        b = maybe False (/= ConOCon) $ conPRecord i
         showRec :: TCM Doc
         showRec = sep
           [ text "record"
           , bracesAndSemicolons <$> zipWithM showField (conFields c) ps
           ]
         showField x p =
-          sep [ prettyTCM (A.qnameName x) <+> text "=" , nest 2 $ showPat $ namedArg p ]
-        showCon = parens $ prTy $ prettyTCM c <+> fsep (map (showPat . namedArg) ps)
+          sep [ prettyTCM (A.qnameName x) <+> text "=" , nest 2 $ prettyTCM $ namedArg p ]
+        showCon = parens $ prTy $ prettyTCM c <+> fsep (map (prettyTCM . namedArg) ps)
         prTy d = d -- caseMaybe (conPType i) d $ \ t -> d  <+> text ":" <+> prettyTCM t
-      showPat (LitP l)      = text (show l)
-      showPat (ProjP q)     = text (show q)
+  prettyTCM (LitP l)      = text (show l)
+  prettyTCM (ProjP _ q)   = text ("." ++ show q)
 
+-- | Proper pretty printing of patterns:
+prettyTCMPatternList :: [NamedArg DeBruijnPattern] -> TCM Doc
+prettyTCMPatternList = prettyList . map prettyA <=< reifyPatterns
+
 instance PrettyTCM (Elim' DisplayTerm) where
   prettyTCM (Apply v) = text "$" <+> prettyTCM (unArg v)
-  prettyTCM (Proj f)  = text "." <> prettyTCM f
+  prettyTCM (Proj _ f)= text "." <> prettyTCM f
 
 raisePatVars :: Int -> NLPat -> NLPat
-raisePatVars k (PVar id x) = PVar id (k+x)
+raisePatVars k (PVar id x bvs) = PVar id (k+x) bvs
 raisePatVars k (PWild)     = PWild
 raisePatVars k (PDef f es) = PDef f $ (fmap . fmap) (raisePatVars k) es
 raisePatVars k (PLam i u)  = PLam i $ fmap (raisePatVars k) u
-raisePatVars k (PPi a b)   = PPi ((fmap . fmap) (raisePatVars k) a) ((fmap . fmap) (raisePatVars k) b)
+raisePatVars k (PPi a b)   =
+  PPi (fmap (raisePatVarsInType k) a) (fmap (raisePatVarsInType k) b)
 raisePatVars k (PBoundVar i es) = PBoundVar i $ (fmap . fmap) (raisePatVars k) es
 raisePatVars k (PTerm t)   = PTerm t
 
+raisePatVarsInType :: Int -> NLPType -> NLPType
+raisePatVarsInType k (NLPType l a) =
+  NLPType (raisePatVars k l) (raisePatVars k a)
+
 instance PrettyTCM NLPat where
-  prettyTCM (PVar id x) = prettyTCM (var x)
+  prettyTCM (PVar id x bvs) = prettyTCM (Var x (map (Apply . fmap var) bvs))
   prettyTCM (PWild)     = text $ "_"
   prettyTCM (PDef f es) = parens $
     prettyTCM f <+> fsep (map prettyTCM es)
-  prettyTCM (PLam i u)  = text ("λ " ++ absName u ++ " →") <+>
-                          (addContext (absName u) $ prettyTCM (raisePatVars 1 $ absBody u))
-  prettyTCM (PPi a b)   = text "Π" <+> prettyTCM (unDom a) <+>
-                          (addContext (absName b) $ prettyTCM (fmap (raisePatVars 1) $ unAbs b))
+  prettyTCM (PLam i u)  = parens $
+    text ("λ " ++ absName u ++ " →") <+>
+    (addContext (absName u) $ prettyTCM (raisePatVars 1 $ absBody u))
+  prettyTCM (PPi a b)   = parens $
+    text ("(" ++ absName b ++ " :") <+> prettyTCM (unDom a) <> text ") →" <+>
+    (addContext (absName b) $ prettyTCM (raisePatVarsInType 1 $ unAbs b))
+  prettyTCM (PBoundVar i []) = prettyTCM (var i)
   prettyTCM (PBoundVar i es) = parens $ prettyTCM (var i) <+> fsep (map prettyTCM es)
   prettyTCM (PTerm t)   = text "." <> parens (prettyTCM t)
 
+instance PrettyTCM NLPType where
+  prettyTCM (NLPType PWild a) = prettyTCM a
+  prettyTCM (NLPType l     a) = text "{" <> prettyTCM l <> text "}" <> prettyTCM a
+
 instance PrettyTCM (Elim' NLPat) where
-  prettyTCM (Apply v) = text "$" <+> prettyTCM (unArg v)
-  prettyTCM (Proj f)  = text "." <> prettyTCM f
+  prettyTCM (Apply v) = prettyTCM (unArg v)
+  prettyTCM (Proj _ f)= text "." <> prettyTCM f
 
 instance PrettyTCM (Type' NLPat) where
   prettyTCM = prettyTCM . unEl
 
 instance PrettyTCM RewriteRule where
-  prettyTCM (RewriteRule q gamma lhs rhs b) = sep
-    [ prettyTCM q <+> text " rule "
+  prettyTCM (RewriteRule q gamma f ps rhs b) = fsep
+    [ prettyTCM q
     , prettyTCM gamma <+> text " |- "
-    , addContext gamma $ hsep
-      [ prettyTCM lhs
+    , addContext gamma $ sep
+      [ prettyTCM (PDef f ps)
       , text " --> "
       , prettyTCM rhs
       , text " : "
diff --git a/src/full/Agda/TypeChecking/Pretty.hs-boot b/src/full/Agda/TypeChecking/Pretty.hs-boot
--- a/src/full/Agda/TypeChecking/Pretty.hs-boot
+++ b/src/full/Agda/TypeChecking/Pretty.hs-boot
@@ -27,3 +27,4 @@
 instance PrettyTCM Type
 instance PrettyTCM Sort
 instance PrettyTCM DisplayTerm
+instance PrettyTCM DBPatVar
diff --git a/src/full/Agda/TypeChecking/Primitive.hs b/src/full/Agda/TypeChecking/Primitive.hs
--- a/src/full/Agda/TypeChecking/Primitive.hs
+++ b/src/full/Agda/TypeChecking/Primitive.hs
@@ -1,5 +1,4 @@
 {-# LANGUAGE CPP                        #-}
-{-# LANGUAGE FlexibleInstances          #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE ScopedTypeVariables        #-}
 {-# LANGUAGE UndecidableInstances       #-}
@@ -19,6 +18,8 @@
 import Data.Traversable (traverse)
 import Data.Monoid (mempty)
 
+import Numeric.IEEE ( IEEE(identicalIEEE) )
+
 import Agda.Interaction.Options
 
 import Agda.Syntax.Position
@@ -27,6 +28,7 @@
 import Agda.Syntax.Internal.Generic (TermLike(..))
 import Agda.Syntax.Literal
 import Agda.Syntax.Concrete.Pretty ()
+import Agda.Syntax.Fixity
 
 import Agda.TypeChecking.Monad hiding (getConstInfo, typeOfConst)
 import qualified Agda.TypeChecking.Monad as TCM
@@ -38,7 +40,6 @@
 import Agda.TypeChecking.Level
 import Agda.TypeChecking.Quote (QuotingKit, quoteTermWithKit, quoteTypeWithKit, quoteClauseWithKit, quotingKit)
 import Agda.TypeChecking.Pretty ()  -- instances only
-import Agda.TypeChecking.MetaVars (allMetas)
 
 import Agda.Utils.Monad
 import Agda.Utils.Pretty (pretty)
@@ -102,6 +103,8 @@
 instance PrimTerm MetaId  where primTerm _ = primAgdaMeta
 instance PrimTerm Type    where primTerm _ = primAgdaTerm
 
+instance PrimTerm Fixity' where primTerm _ = primFixity
+
 instance PrimTerm a => PrimTerm [a] where
   primTerm _ = list (primTerm (undefined :: a))
 
@@ -159,12 +162,12 @@
     ins  <- primInstance
     rel  <- primRelevant
     irr  <- primIrrelevant
-    return $ \ (ArgInfo h r) -> info `applys`
-      [ case h of
+    return $ \ i -> info `applys`
+      [ case getHiding i of
           NotHidden -> vis
           Hidden    -> hid
           Instance  -> ins
-      , case r of
+      , case getRelevance i of
           Relevant   -> rel
           Irrelevant -> irr
           NonStrict  -> rel
@@ -172,6 +175,38 @@
           UnusedArg  -> irr
       ]
 
+instance ToTerm Fixity' where
+  toTerm = (. theFixity) <$> toTerm
+
+instance ToTerm Fixity where
+  toTerm = do
+    lToTm  <- toTerm
+    aToTm  <- toTerm
+    fixity <- primFixityFixity
+    return $ \ Fixity{fixityAssoc = a, fixityLevel = l} ->
+      fixity `apply` [defaultArg (aToTm a), defaultArg (lToTm l)]
+
+instance ToTerm Associativity where
+  toTerm = do
+    lassoc <- primAssocLeft
+    rassoc <- primAssocRight
+    nassoc <- primAssocNon
+    return $ \ a ->
+      case a of
+        NonAssoc   -> nassoc
+        LeftAssoc  -> lassoc
+        RightAssoc -> rassoc
+
+instance ToTerm PrecedenceLevel where
+  toTerm = do
+    (iToTm :: Integer -> Term) <- toTerm
+    related   <- primPrecRelated
+    unrelated <- primPrecUnrelated
+    return $ \ p ->
+      case p of
+        Unrelated -> unrelated
+        Related n -> related `apply` [defaultArg $ iToTm n]
+
 -- | @buildList A ts@ builds a list of type @List A@. Assumes that the terms
 --   @ts@ all have type @A@.
 buildList :: TCM ([Term] -> Term)
@@ -198,22 +233,22 @@
 
 instance FromTerm Integer where
   fromTerm = do
-    Con pos    [] <- ignoreSharing <$> primIntegerPos
-    Con negsuc [] <- ignoreSharing <$> primIntegerNegSuc
+    Con pos _    [] <- ignoreSharing <$> primIntegerPos
+    Con negsuc _ [] <- ignoreSharing <$> primIntegerNegSuc
     toNat         <- fromTerm :: TCM (FromTermFunction Nat)
     return $ \ v -> do
       b <- reduceB' v
       let v'  = ignoreBlocking b
           arg = (<$ v')
       case ignoreSharing $ unArg (ignoreBlocking b) of
-        Con c [u]
+        Con c ci [u]
           | c == pos    ->
             redBind (toNat u)
-              (\ u' -> notReduced $ arg $ Con c [ignoreReduced u']) $ \ n ->
+              (\ u' -> notReduced $ arg $ Con c ci [ignoreReduced u']) $ \ n ->
             redReturn $ fromIntegral n
           | c == negsuc ->
             redBind (toNat u)
-              (\ u' -> notReduced $ arg $ Con c [ignoreReduced u']) $ \ n ->
+              (\ u' -> notReduced $ arg $ Con c ci [ignoreReduced u']) $ \ n ->
             redReturn $ fromIntegral $ -n - 1
         _ -> return $ NoReduction (reduced b)
 
@@ -263,7 +298,7 @@
         where
             a =?= b = ignoreSharing a === ignoreSharing b
             Def x [] === Def y []   = x == y
-            Con x [] === Con y []   = x == y
+            Con x _ [] === Con y _ [] = x == y
             Var n [] === Var m []   = n == m
             _        === _          = False
 
@@ -278,7 +313,7 @@
     return $ mkList nil cons toA fromA
     where
       isCon (Lam _ b)  = isCon $ absBody b
-      isCon (Con c _)  = return c
+      isCon (Con c _ _)= return c
       isCon (Shared p) = isCon (derefPtr p)
       isCon v          = __IMPOSSIBLE__
 
@@ -287,15 +322,15 @@
         let t = ignoreBlocking b
         let arg = (<$ t)
         case ignoreSharing $ unArg t of
-          Con c []
+          Con c ci []
             | c == nil  -> return $ YesReduction NoSimplification []
-          Con c [x,xs]
+          Con c ci [x,xs]
             | c == cons ->
               redBind (toA x)
-                  (\x' -> notReduced $ arg $ Con c [ignoreReduced x',xs]) $ \y ->
+                  (\x' -> notReduced $ arg $ Con c ci [ignoreReduced x',xs]) $ \y ->
               redBind
                   (mkList nil cons toA fromA xs)
-                  (fmap $ \xs' -> arg $ Con c [defaultArg $ fromA y, xs']) $ \ys ->
+                  (fmap $ \xs' -> arg $ Con c ci [defaultArg $ fromA y, xs']) $ \ys ->
               redReturn (y : ys)
           _ -> return $ NoReduction (reduced b)
 
@@ -334,11 +369,11 @@
           hPi "y" (El (varSort 2) <$> varM 1) $
           El (varSort 3) <$>
             primEquality <#> varM 3 <#> varM 2 <@> varM 1 <@> varM 0
-  Con rf [] <- ignoreSharing <$> primRefl
+  Con rf ci [] <- ignoreSharing <$> primRefl
   n         <- conPars . theDef <$> getConInfo rf
   -- Andreas, 2015-02-27  Forced Big vs. Forced Small should not matter here
-  let refl x | n == 2    = Con rf [setRelevance (Forced Small) $ hide $ defaultArg x]
-             | n == 3    = Con rf []
+  let refl x | n == 2    = Con rf ci [setRelevance (Forced Small) $ hide $ defaultArg x]
+             | n == 3    = Con rf ci []
              | otherwise = __IMPOSSIBLE__
   return $ PrimImpl t $ PrimFun __IMPOSSIBLE__ 4 $ \ts ->
       case ts of
@@ -670,21 +705,32 @@
   , "primLevelMax"        |-> mkPrimLevelMax
 
   -- Floating point functions
-  , "primNatToFloat"      |-> mkPrimFun1 (fromIntegral :: Nat -> Double)
-  , "primFloatPlus"       |-> mkPrimFun2 ((+)          :: Op Double)
-  , "primFloatMinus"      |-> mkPrimFun2 ((-)          :: Op Double)
-  , "primFloatTimes"      |-> mkPrimFun2 ((*)          :: Op Double)
-  , "primFloatDiv"        |-> mkPrimFun2 ((/)          :: Op Double)
-  , "primFloatEquality"   |-> mkPrimFun2 (floatEq      :: Rel Double)
-  , "primFloatLess"       |-> mkPrimFun2 (floatLt      :: Rel Double)
-  , "primFloatSqrt"       |-> mkPrimFun1 (sqrt         :: Double -> Double)
-  , "primRound"           |-> mkPrimFun1 (round        :: Double -> Integer)
-  , "primFloor"           |-> mkPrimFun1 (floor        :: Double -> Integer)
-  , "primCeiling"         |-> mkPrimFun1 (ceiling      :: Double -> Integer)
-  , "primExp"             |-> mkPrimFun1 (exp          :: Fun Double)
-  , "primLog"             |-> mkPrimFun1 (log          :: Fun Double)
-  , "primSin"             |-> mkPrimFun1 (sin          :: Fun Double)
-  , "primShowFloat"       |-> mkPrimFun1 (Str . floatShow :: Double -> Str)
+  , "primNatToFloat"      |-> mkPrimFun1 (fromIntegral    :: Nat -> Double)
+  , "primFloatPlus"       |-> mkPrimFun2 ((+)             :: Op Double)
+  , "primFloatMinus"      |-> mkPrimFun2 ((-)             :: Op Double)
+  , "primFloatTimes"      |-> mkPrimFun2 ((*)             :: Op Double)
+  , "primFloatNegate"     |-> mkPrimFun1 (negate          :: Fun Double)
+  , "primFloatDiv"        |-> mkPrimFun2 ((/)             :: Op Double)
+  -- ASR (2016-09-29). We use bitwise equality for comparing Double
+  -- because Haskell's Eq, which equates 0.0 and -0.0, allows to prove
+  -- a contradiction (see Issue #2169).
+  , "primFloatEquality"   |-> mkPrimFun2 (floatEq         :: Rel Double)
+  , "primFloatNumericalEquality" |-> mkPrimFun2 ((==)     :: Rel Double)
+  , "primFloatNumericalLess"     |-> mkPrimFun2 (floatLt  :: Rel Double)
+  , "primFloatSqrt"       |-> mkPrimFun1 (sqrt            :: Double -> Double)
+  , "primRound"           |-> mkPrimFun1 (round           :: Double -> Integer)
+  , "primFloor"           |-> mkPrimFun1 (floor           :: Double -> Integer)
+  , "primCeiling"         |-> mkPrimFun1 (ceiling         :: Double -> Integer)
+  , "primExp"             |-> mkPrimFun1 (exp             :: Fun Double)
+  , "primLog"             |-> mkPrimFun1 (log             :: Fun Double)
+  , "primSin"             |-> mkPrimFun1 (sin             :: Fun Double)
+  , "primCos"             |-> mkPrimFun1 (cos             :: Fun Double)
+  , "primTan"             |-> mkPrimFun1 (tan             :: Fun Double)
+  , "primASin"            |-> mkPrimFun1 (asin            :: Fun Double)
+  , "primACos"            |-> mkPrimFun1 (acos            :: Fun Double)
+  , "primATan"            |-> mkPrimFun1 (atan            :: Fun Double)
+  , "primATan2"           |-> mkPrimFun2 (atan2           :: Double -> Double -> Double)
+  , "primShowFloat"       |-> mkPrimFun1 (Str . show      :: Double -> Str)
 
   -- Character functions
   , "primCharEquality"    |-> mkPrimFun2 ((==) :: Rel Char)
@@ -717,6 +763,7 @@
   , "primQNameEquality"   |-> mkPrimFun2 ((==) :: Rel QName)
   , "primQNameLess"       |-> mkPrimFun2 ((<) :: Rel QName)
   , "primShowQName"       |-> mkPrimFun1 (Str . show :: QName -> Str)
+  , "primQNameFixity"     |-> mkPrimFun1 (nameFixity . qnameName)
   , "primMetaEquality"    |-> mkPrimFun2 ((==) :: Rel MetaId)
   , "primMetaLess"        |-> mkPrimFun2 ((<) :: Rel MetaId)
   , "primShowMeta"        |-> mkPrimFun1 (Str . show . pretty :: MetaId -> Str)
@@ -725,22 +772,26 @@
     (|->) = (,)
 
 floatEq :: Double -> Double -> Bool
-floatEq x y | isNaN x && isNaN y = True
-            | otherwise          = x == y
+floatEq x y = identicalIEEE x y || (isNaN x && isNaN y)
 
 floatLt :: Double -> Double -> Bool
-floatLt x y
-  | isNegInf y = False
-  | isNegInf x = True
-  | isNaN x    = True
-  | otherwise  = x < y
+floatLt x y =
+  case compareFloat x y of
+    LT -> True
+    _  -> False
   where
+    -- Also implemented in the GHC/UHC backends
+    compareFloat :: Double -> Double -> Ordering
+    compareFloat x y
+      | identicalIEEE x y          = EQ
+      | isNegInf x                 = LT
+      | isNegInf y                 = GT
+      | isNaN x && isNaN y         = EQ
+      | isNaN x                    = LT
+      | isNaN y                    = GT
+      | otherwise                  = compare x y
     isNegInf z = z < 0 && isInfinite z
 
-floatShow :: Double -> String
-floatShow x | isNegativeZero x = "0.0"
-            | otherwise        = show x
-
 lookupPrimitiveFunction :: String -> TCM PrimitiveImpl
 lookupPrimitiveFunction x =
   fromMaybe (typeError $ NoSuchPrimitiveFunction x)
@@ -758,7 +809,7 @@
   caseMaybeM (getBuiltin' b) (return Nothing) $ \v -> do
     v <- normalise v
     let getName (Def x _) = x
-        getName (Con x _) = conName x
+        getName (Con x _ _) = conName x
         getName (Lam _ b) = getName $ ignoreSharing $ unAbs b
         getName _         = __IMPOSSIBLE__
     return $ Just $ getName (ignoreSharing v)
diff --git a/src/full/Agda/TypeChecking/ProjectionLike.hs b/src/full/Agda/TypeChecking/ProjectionLike.hs
--- a/src/full/Agda/TypeChecking/ProjectionLike.hs
+++ b/src/full/Agda/TypeChecking/ProjectionLike.hs
@@ -1,16 +1,11 @@
 {-# LANGUAGE CPP               #-}
-{-# LANGUAGE FlexibleInstances #-}
-{-# LANGUAGE PatternGuards     #-}
 
-#if __GLASGOW_HASKELL__ >= 710
-{-# LANGUAGE FlexibleContexts #-}
-#endif
-
 module Agda.TypeChecking.ProjectionLike where
 
 import Control.Monad
 
 import qualified Data.Map as Map
+import Data.Monoid (Any(..), getAny)
 
 import Agda.Syntax.Abstract.Name
 import Agda.Syntax.Common
@@ -18,7 +13,7 @@
 import Agda.Syntax.Internal.Pattern
 
 import Agda.TypeChecking.Monad
-import Agda.TypeChecking.Free (isBinderUsed)
+import Agda.TypeChecking.Free (runFree, IgnoreSorts(..))
 import Agda.TypeChecking.Substitute
 import Agda.TypeChecking.Positivity
 import Agda.TypeChecking.Pretty
@@ -111,9 +106,9 @@
   case pv of
     NoProjection{}        -> return v
     LoneProjectionLike f ai
-      | loneProjToLambda  -> return $ Lam ai $ Abs "r" $ Var 0 [Proj f]
+      | loneProjToLambda  -> return $ Lam ai $ Abs "r" $ Var 0 [Proj ProjPrefix f]
       | otherwise         -> return v
-    ProjectionView f a es -> (`applyE` (Proj f : es)) <$> elimView loneProjToLambda (unArg a)
+    ProjectionView f a es -> (`applyE` (Proj ProjPrefix f : es)) <$> elimView loneProjToLambda (unArg a)
 
 -- | Which @Def@types are eligible for the principle argument
 --   of a projection-like function?
@@ -124,11 +119,18 @@
     Datatype{} -> True
     Record{}   -> True
     Axiom{}    -> True
-    _          -> False
+    Function{}    -> False
+    Primitive{}   -> False
+    Constructor{} -> __IMPOSSIBLE__
+    AbstractDefn  -> False
+      -- Andreas, 2016-10-11 AIM XXIV
+      -- Projection-like at abstract types violates the parameter reconstructibility property.
+      -- See test/Fail/AbstractTypeProjectionLike.
 
 -- | Turn a definition into a projection if it looks like a projection.
 makeProjection :: QName -> TCM ()
-makeProjection x = inTopContext $ do
+makeProjection x = -- if True then return () else do
+ inTopContext $ do
   -- reportSLn "tc.proj.like" 30 $ "Considering " ++ show x ++ " for projection likeness"
   defn <- getConstInfo x
   let t = defType defn
@@ -138,7 +140,7 @@
     ]
   case theDef defn of
     Function{funClauses = cls}
-      | any (isNothing . getBodyUnraised) cls ->
+      | any (isNothing . clauseBody) cls ->
         reportSLn "tc.proj.like" 30 $ "  projection-like functions cannot have absurd clauses"
     -- Constructor-headed functions can't be projection-like (at the moment). The reason
     -- for this is that invoking constructor-headedness will circumvent the inference of
@@ -177,17 +179,15 @@
               reportSLn "tc.proj.like" 60 $ "  rewrote clauses to\n    " ++ show cc
 
               -- Andreas, 2013-10-20 build parameter dropping function
-              let (ptel, Dom ai _ : _) = splitAt n $ telToList $ theTel $ telView' t
-                  -- leading lambdas are to ignore parameter applications
-                  proj = teleNoAbs ptel $ Def x []
-                  -- proj = foldr (\ (Dom ai (y, _)) -> Lam ai . NoAbs y) (Def x []) ptel
-
+              let pIndex = n + 1
+                  tel = take pIndex $ telToList $ theTel $ telView' t
+              unless (length tel == pIndex) __IMPOSSIBLE__
               let projection = Projection
-                    { projProper   = Nothing
+                    { projProper   = False
+                    , projOrig     = x
                     , projFromType = d
-                    , projIndex    = n + 1
-                    , projDropPars = proj
-                    , projArgInfo  = ai
+                    , projIndex    = pIndex
+                    , projLams     = ProjLams $ map (\ (Dom ai (y, _)) -> Arg ai y) tel
                     }
               let newDef = def
                            { funProjection     = Just projection
@@ -210,9 +210,9 @@
   where
     -- @validProj (d,n)@ checks whether the head @d@ of the type of the
     -- @n@th argument is injective in all args (i.d. being name of data/record/axiom).
-    validProj :: (QName, Int) -> TCM Bool
+    validProj :: (Arg QName, Int) -> TCM Bool
     validProj (_, 0) = return False
-    validProj (d, _) = eligibleForProjectionLike d
+    validProj (d, _) = eligibleForProjectionLike (unArg d)
 
     -- NOTE: If the following definition turns out to be slow, then
     -- one could perhaps reuse information computed by the termination
@@ -231,11 +231,12 @@
           , onlyMatch n ps  -- projection-like functions are only allowed to match on the eliminatee
                             -- otherwise we may end up projecting from constructor applications, in
                             -- which case we can't reconstruct the dropped parameters
-          , checkBody n b ]
+          , checkBody m n b ]
       where
-        Perm _ p = clausePerm cl
+        Perm _ p = fromMaybe __IMPOSSIBLE__ $ clausePerm cl
         ps       = namedClausePats cl
-        b        = clauseBody cl
+        b        = compiledClauseBody cl
+        m        = size $ concatMap patternVars $ clausePats cl
 
 
     onlyMatch n ps = all (shallowMatch . namedArg) (take 1 ps1) &&
@@ -251,10 +252,8 @@
         noMatch VarP{} = True
         noMatch DotP{} = True
 
-    checkBody 0 _          = True
-    checkBody _ NoBody     = __IMPOSSIBLE__ -- we check this earlier
-    checkBody n (Bind b)   = not (isBinderUsed b) && checkBody (n - 1) (unAbs b)
-    checkBody _ Body{}     = __IMPOSSIBLE__
+    checkBody m n b = not . getAny $ runFree badVar IgnoreNot b
+      where badVar (x,_) = Any $ m-1-n < x && x < m
 
     -- @candidateArgs [var 0,...,var(n-1)] t@ adds @(n,d)@ to the output,
     -- if @t@ is a function-type with domain @t 0 .. (n-1)@
@@ -267,13 +266,13 @@
     -- E.g. f : {x : _}(y : _){z : _} -> D x y z -> ...
     -- will return (D,3) as a candidate (amongst maybe others).
     --
-    candidateArgs :: [Term] -> Type -> [(QName,Int)]
+    candidateArgs :: [Term] -> Type -> [(Arg QName, Int)]
     candidateArgs vs t =
       case ignoreSharing $ unEl t of
         Pi a b
           | Def d es <- ignoreSharing $ unEl $ unDom a,
             Just us  <- allApplyElims es,
-            vs == map unArg us -> (d, length vs) : candidateRec b
+            vs == map unArg us -> (d <$ argFromDom a, length vs) : candidateRec b
           | otherwise          -> candidateRec b
         _                      -> []
       where
diff --git a/src/full/Agda/TypeChecking/Quote.hs b/src/full/Agda/TypeChecking/Quote.hs
--- a/src/full/Agda/TypeChecking/Quote.hs
+++ b/src/full/Agda/TypeChecking/Quote.hs
@@ -1,7 +1,4 @@
 {-# LANGUAGE CPP #-}
-{-# LANGUAGE FlexibleInstances #-}
-{-# LANGUAGE PatternGuards #-}
-{-# LANGUAGE RankNTypes #-}
 
 module Agda.TypeChecking.Quote where
 
@@ -17,6 +14,7 @@
 
 import Agda.Syntax.Common
 import Agda.Syntax.Internal as I
+import Agda.Syntax.Internal.Pattern ( dbPatPerm' )
 import Agda.Syntax.Literal
 import Agda.Syntax.Position
 import Agda.Syntax.Translation.InternalToAbstract
@@ -38,7 +36,7 @@
 import Agda.Utils.Except
 import Agda.Utils.Impossible
 import Agda.Utils.Monad ( ifM )
-import Agda.Utils.Permutation ( Permutation(Perm), compactP )
+import Agda.Utils.Permutation ( Permutation(Perm), compactP, reverseP )
 import Agda.Utils.String ( Str(Str), unStr )
 import Agda.Utils.VarSet (VarSet)
 import qualified Agda.Utils.VarSet as Set
@@ -97,8 +95,8 @@
   sucLevel        <- primLevelSuc
   lub             <- primLevelMax
   lkit            <- requireLevels
-  Con z _         <- ignoreSharing <$> primZero
-  Con s _         <- ignoreSharing <$> primSuc
+  Con z _ _       <- ignoreSharing <$> primZero
+  Con s _ _       <- ignoreSharing <$> primSuc
   unsupported     <- primAgdaTermUnsupported
 
   agdaDefinitionFunDef          <- primAgdaDefinitionFunDef
@@ -130,16 +128,15 @@
       quoteRelevance UnusedArg  = pure relevant
 
       quoteArgInfo :: ArgInfo -> ReduceM Term
-      quoteArgInfo (ArgInfo h r) = arginfo !@ quoteHiding h
-                                           @@ quoteRelevance r
+      quoteArgInfo (ArgInfo h r _ _) = arginfo !@ quoteHiding h @@ quoteRelevance r
 
       quoteLit :: Literal -> ReduceM Term
-      quoteLit l@LitNat{}    = lit !@ (litNat    !@! Lit l)
-      quoteLit l@LitFloat{}  = lit !@ (litFloat  !@! Lit l)
-      quoteLit l@LitChar{}   = lit !@ (litChar   !@! Lit l)
-      quoteLit l@LitString{} = lit !@ (litString !@! Lit l)
-      quoteLit l@LitQName{}  = lit !@ (litQName  !@! Lit l)
-      quoteLit l@LitMeta {}  = lit !@ (litMeta   !@! Lit l)
+      quoteLit l@LitNat{}    = litNat    !@! Lit l
+      quoteLit l@LitFloat{}  = litFloat  !@! Lit l
+      quoteLit l@LitChar{}   = litChar   !@! Lit l
+      quoteLit l@LitString{} = litString !@! Lit l
+      quoteLit l@LitQName{}  = litQName  !@! Lit l
+      quoteLit l@LitMeta {}  = litMeta   !@! Lit l
 
       -- We keep no ranges in the quoted term, so the equality on terms
       -- is only on the structure.
@@ -165,23 +162,21 @@
       quotePats ps = list $ map (quoteArg quotePat . fmap namedThing) ps
 
       quotePat :: DeBruijnPattern -> ReduceM Term
-      quotePat (VarP (_,"()"))   = pure absurdP
-      quotePat (VarP (_,x))      = varP !@! quoteString x
+      quotePat (VarP x) | isAbsurdPatternName (dbPatVarName x) = pure absurdP
+      quotePat (VarP x)          = varP !@! quoteString (dbPatVarName x)
       quotePat (DotP _)          = pure dotP
       quotePat (ConP c _ ps)     = conP !@ quoteQName (conName c) @@ quotePats ps
-      quotePat (LitP l)          = litP !@! Lit l
-      quotePat (ProjP x)         = projP !@ quoteQName x
-
-      quoteBody :: I.ClauseBody -> Maybe (ReduceM Term)
-      quoteBody (Body a) = Just (quoteTerm a)
-      quoteBody (Bind b) = quoteBody (absBody b)
-      quoteBody NoBody   = Nothing
+      quotePat (LitP l)          = litP !@ quoteLit l
+      quotePat (ProjP _ x)       = projP !@ quoteQName x
 
       quoteClause :: Clause -> ReduceM Term
-      quoteClause Clause{namedClausePats = ps, clauseBody = body} =
-        case quoteBody body of
+      quoteClause cl@Clause{namedClausePats = ps, clauseBody = body} =
+        case body of
           Nothing -> absurdClause !@ quotePats ps
-          Just b  -> normalClause !@ quotePats ps @@ b
+          Just b  ->
+            let perm = fromMaybe __IMPOSSIBLE__ $ dbPatPerm' False ps -- Dot patterns don't count (#2203)
+                v    = applySubst (renamingR perm) b
+            in normalClause !@ quotePats ps @@ quoteTerm v
 
       list :: [ReduceM Term] -> ReduceM Term
       list []       = pure nil
@@ -211,32 +206,44 @@
              in  var !@! Lit (LitNat noRange $ fromIntegral n) @@ quoteArgs ts
           Lam info t -> lam !@ quoteHiding (getHiding info) @@ quoteAbs quoteTerm t
           Def x es   -> do
-            d <- theDef <$> getConstInfo x
+            def <- getConstInfo x
+            let d = theDef def
             n <- getDefFreeVars x
-            qx d @@ quoteArgs (drop n ts)
+            -- #2220: remember to restore dropped parameters
+            qx d @@ list (drop n $ defParameters def ++ map (quoteArg quoteTerm) ts)
             where
               ts = fromMaybe __IMPOSSIBLE__ $ allApplyElims es
               qx Function{ funExtLam = Just (ExtLamInfo h nh), funClauses = cs } =
                     extlam !@ list (map (quoteClause . dropArgs (h + nh)) cs)
               qx Function{ funCompiled = Just Fail, funClauses = [cl] } =
-                    extlam !@ list [quoteClause $ dropArgs (length (clausePats cl) - 1) cl]
+                    extlam !@ list [quoteClause $ dropArgs (length (namedClausePats cl) - 1) cl]
               qx _ = def !@! quoteName x
-          Con x ts   -> do
-            Constructor{conPars = np} <- theDef <$> getConstInfo (conName x)
-            let par  = arg !@ (arginfo !@ pure hidden @@ pure relevant) @@ pure unsupported
-                pars = replicate np $ par
-                args = list $ pars ++ map (quoteArg quoteTerm) ts
+          Con x ci ts -> do
+            cDef <- getConstInfo (conName x)
+            n    <- getDefFreeVars (conName x)
+            let args = list $ drop n $ defParameters cDef ++ map (quoteArg quoteTerm) ts
             con !@! quoteConName x @@ args
           Pi t u     -> pi !@  quoteDom quoteType t
                             @@ quoteAbs quoteType u
           Level l    -> quoteTerm (unlevelWithKit lkit l)
-          Lit lit    -> quoteLit lit
+          Lit l      -> lit !@ quoteLit l
           Sort s     -> sort !@ quoteSort s
           Shared p   -> quoteTerm $ derefPtr p
           MetaV x es -> meta !@! quoteMeta currentFile x @@ quoteArgs vs
             where vs = fromMaybe __IMPOSSIBLE__ $ allApplyElims es
           DontCare{} -> pure unsupported -- could be exposed at some point but we have to take care
 
+      defParameters :: Definition -> [ReduceM Term]
+      defParameters def = map par hiding
+        where
+          np = case theDef def of
+                 Constructor{ conPars = np }        -> np
+                 Function{ funProjection = Just p } -> projIndex p - 1
+                 _                                  -> 0
+          TelV tel _ = telView' (defType def)
+          hiding     = map getHiding $ take np $ telToList tel
+          par h      = arg !@ (arginfo !@ quoteHiding h @@ pure relevant) @@ pure unsupported
+
       quoteDefn :: Definition -> ReduceM Term
       quoteDefn def =
         case theDef def of
@@ -247,6 +254,7 @@
           Record{recConHead = c} ->
             agdaDefinitionRecordDef !@! quoteName (conName c)
           Axiom{}       -> pure agdaDefinitionPostulate
+          AbstractDefn{}-> pure agdaDefinitionPostulate
           Primitive{primClauses = cs} | not $ null cs ->
             agdaDefinitionFunDef !@ quoteList quoteClause cs
           Primitive{}   -> pure agdaDefinitionPrimitive
@@ -296,4 +304,3 @@
 quoteList xs = do
   kit <- quotingKit
   runReduceM (quoteListWithKit kit pure xs)
-
diff --git a/src/full/Agda/TypeChecking/ReconstructParameters.hs b/src/full/Agda/TypeChecking/ReconstructParameters.hs
--- a/src/full/Agda/TypeChecking/ReconstructParameters.hs
+++ b/src/full/Agda/TypeChecking/ReconstructParameters.hs
@@ -54,7 +54,7 @@
   where
     reconstruct a v = do
       case ignoreSharing v of
-        Con h vs -> do
+        Con h ci vs -> do
           TelV tel a <- telView a
           let under = size tel  -- under-applied when under > 0
           reportSDoc "tc.with.reconstruct" 50 $
@@ -67,7 +67,7 @@
               let Just ps = applySubst (strengthenS __IMPOSSIBLE__ under) . take n <$> allApplyElims es
               reportSLn "tc.with.reconstruct" 50 $ show n ++ " parameters"
               -- TODO: the reconstructed parameters are not reconstructed recursively!
-              return $ Con h (ps ++ vs)
+              return $ Con h ci (ps ++ vs)
             _ -> __IMPOSSIBLE__
         _        -> return v
 
@@ -76,8 +76,8 @@
   where
     dropPars v =
       case ignoreSharing v of
-        Con c vs -> do
+        Con c ci vs -> do
           Constructor{ conData = d } <- theDef <$> getConstInfo (conName c)
           Just n <- defParameters <$> getConstInfo d
-          return $ Con c $ drop n vs
+          return $ Con c ci $ drop n vs
         _        -> return v
diff --git a/src/full/Agda/TypeChecking/RecordPatterns.hs b/src/full/Agda/TypeChecking/RecordPatterns.hs
--- a/src/full/Agda/TypeChecking/RecordPatterns.hs
+++ b/src/full/Agda/TypeChecking/RecordPatterns.hs
@@ -1,8 +1,5 @@
 {-# LANGUAGE CPP                        #-}
-{-# LANGUAGE FlexibleInstances          #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
-{-# LANGUAGE PatternGuards              #-}
-{-# LANGUAGE TupleSections              #-}
 
 -- | Code which replaces pattern matching on record constructors with
 -- uses of projection functions.
@@ -61,7 +58,7 @@
 --   E.g. for @(x , (y , z))@ we return @[ fst, fst . snd, snd . snd ]@.
 --
 --   If it is not a record pattern, error 'ShouldBeRecordPattern' is raised.
-recordPatternToProjections :: Pattern -> TCM [Term -> Term]
+recordPatternToProjections :: DeBruijnPattern -> TCM [Term -> Term]
 recordPatternToProjections p =
   case p of
     VarP{}       -> return [ \ x -> x ]
@@ -75,8 +72,8 @@
       concat <$> zipWithM comb (map proj fields) (map namedArg ps)
     ProjP{}      -> __IMPOSSIBLE__ -- copattern cannot appear here
   where
-    proj p = (`applyE` [Proj $ unArg p])
-    comb :: (Term -> Term) -> Pattern -> TCM [Term -> Term]
+    proj p = (`applyE` [Proj ProjSystem $ unArg p])
+    comb :: (Term -> Term) -> DeBruijnPattern -> TCM [Term -> Term]
     comb prj p = map (\ f -> f . prj) <$> recordPatternToProjections p
 
 
@@ -249,7 +246,7 @@
                     | otherwise = map unArg xs1
               x                 = Arg ai $ foldr1 appendArgNames names
               xs'               = xs0 ++ x : xs2
-              us                = map (\ p -> Var 0 [Proj p]) (reverse projs)
+              us                = map (\ p -> Var 0 [Proj ProjSystem p]) (reverse projs)
               -- go from level (i + n - 1) to index (subtract from |xs|-1)
               index             = length xs - (i + n)
           in  Done xs' $ applySubst (liftS (length xs2) $ us ++# raiseS 1) v
@@ -455,7 +452,8 @@
 
       -- Substitution used to convert terms in the old telescope's
       -- context to terms in the new RHS's context.
-      rhsSubst' = mkSub $ permute (reverseP $ clausePerm clause) s'
+      perm = fromMaybe __IMPOSSIBLE__ $ clausePerm clause
+      rhsSubst' = mkSub $ permute (reverseP perm) s'
       -- TODO: Is it OK to replace the definition above with the
       -- following one?
       --
@@ -465,7 +463,7 @@
       -- order (i.e. the type signature for the variable which occurs
       -- first in the list of patterns comes first).
       flattenedOldTel =
-        permute (invertP __IMPOSSIBLE__ $ compactP $ clausePerm clause) $
+        permute (invertP __IMPOSSIBLE__ $ compactP perm) $
         zip (teleNames $ clauseTel clause) $
         flattenTel $
         clauseTel clause
@@ -495,7 +493,7 @@
 
       -- Substitution used to convert terms in the new RHS's context
       -- to terms in the new telescope's context.
-      lhsSubst' = renaming (reverseP newPerm)
+      lhsSubst' = {-'-} renaming __IMPOSSIBLE__ (reverseP newPerm)
 
       -- Substitution used to convert terms in the old telescope's
       -- context to terms in the new telescope's context.
@@ -512,8 +510,8 @@
       -- New clause.
       c = clause
             { clauseTel       = newTel
-            , namedClausePats = numberPatVars newPerm $ applySubst lhsSubst ps
-            , clauseBody      = translateBody cs rhsSubst $ clauseBody clause
+            , namedClausePats = numberPatVars __IMPOSSIBLE__ newPerm $ applySubst lhsSubst ps
+            , clauseBody      = applySubst lhsSubst $ clauseBody clause
             }
 
   reportSDoc "tc.lhs.recpat" 20 $ vcat
@@ -546,7 +544,7 @@
         [ text "delta =" <+> prettyTCM (clauseTel c)
         , text "ps    =" <+> text (show $ clausePats c)
         , text "body  =" <+> text (show $ clauseBody c)
-        , text "body  =" <+> prettyTCM (clauseBody c)
+        , text "body  =" <+> addContext (clauseTel c) (maybe (text "_|_") prettyTCM (clauseBody c))
         ]
       ]
 
@@ -584,7 +582,7 @@
   n <- lift get
   lift $ put $ succ n
   noVars <- lift ask
-  return (VarP "r", var $ noVars - n - 1)
+  return (varP "r", var $ noVars - n - 1)
 
 ------------------------------------------------------------------------
 -- Types used to record changes to a clause
@@ -689,7 +687,7 @@
 translatePattern :: Pattern -> RecPatM (Pattern, [Term], Changes)
 translatePattern p@(ConP c ci ps)
   -- Andreas, 2015-05-28 only translate implicit record patterns
-  | Just ConPImplicit <- conPRecord ci = do
+  | Just ConOSystem <- conPRecord ci = do
       r <- recordTree p
       case r of
         Left  r -> r
@@ -725,7 +723,7 @@
   Pattern ->
   RecPatM (Either (RecPatM (Pattern, [Term], Changes)) RecordTree)
 -- Andreas, 2015-05-28 only translate implicit record patterns
-recordTree (ConP c ci ps) | Just ConPImplicit <- conPRecord ci = do
+recordTree (ConP c ci ps) | Just ConOSystem <- conPRecord ci = do
   let t = fromMaybe __IMPOSSIBLE__ $ conPType ci
   rs <- mapM (recordTree . namedArg) ps
   case allRight rs of
@@ -738,7 +736,7 @@
       t <- reduce t
       fields <- getRecordTypeFields (unArg t)
 --      let proj p = \x -> Def (unArg p) [defaultArg x]
-      let proj p = (`applyE` [Proj $ unArg p])
+      let proj p = (`applyE` [Proj ProjSystem $ unArg p])
       return $ Right $ RecCon t $ zip (map proj fields) ts
 recordTree p@(ConP _ ci _) = return $ Left $ translatePattern p
 recordTree p@VarP{} = return (Right (Leaf p))
@@ -769,27 +767,3 @@
 translateTel []              []           = []
 translateTel (Left _ : _)    []           = __IMPOSSIBLE__
 translateTel []              (_ : _)      = __IMPOSSIBLE__
-
--- | Translates the clause body. The substitution should take things
--- in the context of the old RHS to the new RHS's context.
-
-translateBody :: Changes -> Substitution -> ClauseBody -> ClauseBody
-translateBody _                        s NoBody = NoBody
-translateBody (Right (n, x, _) : rest) s b      =
-  Bind $ Abs x $ translateBody rest s $ dropBinds n' b
-  where n' = sum $ map n [VarPat, DotPat]
-translateBody (Left _ : rest) s (Bind b)   = Bind $ fmap (translateBody rest s) b
-translateBody []              s (Body t)   = Body $ applySubst s t
-translateBody _               _ _          = __IMPOSSIBLE__
-
-------------------------------------------------------------------------
--- Helper functions
-
--- | @dropBinds n b@ drops the initial @n@ occurrences of 'Bind' from @b@.
---
--- Precondition: @b@ has to start with @n@ occurrences of 'Bind'.
-
-dropBinds :: Nat -> ClauseBody -> ClauseBody
-dropBinds n b          | n == 0 = b
-dropBinds n (Bind b)   | n > 0  = dropBinds (pred n) (absBody b)
-dropBinds _ _                   = __IMPOSSIBLE__
diff --git a/src/full/Agda/TypeChecking/Records.hs b/src/full/Agda/TypeChecking/Records.hs
--- a/src/full/Agda/TypeChecking/Records.hs
+++ b/src/full/Agda/TypeChecking/Records.hs
@@ -1,6 +1,5 @@
-{-# LANGUAGE CPP           #-}
-{-# LANGUAGE PatternGuards #-}
-{-# LANGUAGE TupleSections #-}
+{-# LANGUAGE CPP                      #-}
+{-# LANGUAGE NondecreasingIndentation #-}
 
 module Agda.TypeChecking.Records where
 
@@ -11,6 +10,7 @@
 import Data.List
 import Data.Maybe
 import qualified Data.Set as Set
+import Data.Traversable (traverse)
 
 import Agda.Syntax.Common
 import qualified Agda.Syntax.Concrete.Name as C
@@ -83,7 +83,7 @@
       givenFields = [ (x, Just $ arg x e) | FieldAssignment x e <- fs ]
   -- Compute a list of p[aceholders for the missing visible fields.
   let missingExplicits =
-       [ (x, Just $ unnamed . placeholder <$> a)
+       [ (x, Just $ setOrigin Inserted $ unnamed . placeholder <$> a)
        | a <- filter notHidden axs
        , let x = unArg a
        , x `notElem` map (view nameFieldA) fs
@@ -109,8 +109,9 @@
 
 -- | Get the record name belonging to a field name.
 getRecordOfField :: QName -> TCM (Maybe QName)
-getRecordOfField d = maybe Nothing fromP <$> isProjection d
-  where fromP Projection{ projProper = mp, projFromType = r} = mp $> r
+getRecordOfField d = caseMaybeM (isProjection d) (return Nothing) $
+  \ Projection{ projProper = proper, projFromType = r} ->
+    return $ if proper then Just (unArg r) else Nothing
 
 -- | Get the field names of a record.
 getRecordFieldNames :: QName -> TCM [Arg C.Name]
@@ -122,13 +123,18 @@
 -- | Find all records with at least the given fields.
 findPossibleRecords :: [C.Name] -> TCM [QName]
 findPossibleRecords fields = do
-  defs <- (HMap.union `on` (^. sigDefinitions)) <$> getSignature <*> getImportedSignature
-  let possible def = case theDef def of
-        Record{ recFields = fs } -> Set.isSubsetOf given inrecord
-          where inrecord = Set.fromList $ map (nameConcrete . qnameName . unArg) fs
-        _ -> False
-  return [ defName d | d <- HMap.elems defs, possible d ]
+  defs  <- HMap.elems <$> use (stSignature . sigDefinitions)
+  idefs <- HMap.elems <$> use (stImports   . sigDefinitions)
+  return $ cands defs ++ cands idefs
   where
+    cands defs = [ defName d | d <- defs, possible d ]
+    possible def =
+      -- Check whether the given fields are contained
+      -- in the fields of record @def@ (if it is a record).
+      case theDef def of
+        Record{ recFields = fs } -> Set.isSubsetOf given $
+          Set.fromList $ map (nameConcrete . qnameName . unArg) fs
+        _ -> False
     given = Set.fromList fields
 
 -- | Get the field types of a record.
@@ -146,17 +152,6 @@
         _ -> __IMPOSSIBLE__
     _ -> __IMPOSSIBLE__
 
--- | Get the original name of the projection
---   (the current one could be from a module application).
-getOriginalProjection :: QName -> TCM QName
-getOriginalProjection q = do
-  proj <- fromMaybe __IMPOSSIBLE__ <$> isProjection q
-  return $ fromMaybe __IMPOSSIBLE__ $ projProper proj
-
--- | Get the type of the record constructor.
-getRecordConstructorType :: QName -> TCM Type
-getRecordConstructorType r = recConType <$> getRecordDef r
-
 -- | Returns the given record type's constructor name (with an empty
 -- range).
 getRecordConstructor :: QName -> TCM ConHead
@@ -192,6 +187,19 @@
       caseMaybeM (isRecord r) no $ \ def -> return $ Right (r,vs,def)
     _ -> no
 
+-- | Get the original projection info for name.
+{-# SPECIALIZE origProjection :: QName -> TCM (QName, Definition, Maybe Projection) #-}
+origProjection ::  HasConstInfo m => QName -> m (QName, Definition, Maybe Projection)
+origProjection f = do
+  def <- getConstInfo f
+  let proj     = isProjection_ $ theDef def
+      fallback = return (f, def, proj)
+  caseMaybe proj fallback $
+    \ p@Projection{ projProper = proper, projOrig = f' } ->
+      if not proper || f == f' then fallback else do
+        def <- getConstInfo f'
+        return (f', def, isProjection_ $ theDef def)
+
 -- | @getDefType f t@ computes the type of (possibly projection-(like))
 --   function @f@ whose first argument has type @t@.
 --   The `parameters' for @f@ are extracted from @t@.
@@ -203,15 +211,27 @@
 --   See also: 'Agda.TypeChecking.Datatypes.getConType'
 getDefType :: QName -> Type -> TCM (Maybe Type)
 getDefType f t = do
-  def <- getConstInfo f
+  -- Andreas, Issue #1973: we need to take the original projection
+  -- since the parameters from the reduced type t are correct for
+  -- the original projection only.
+  -- Due to module application, the given (non-original) projection f
+  -- may expect less parameters, those corresponding to a unreduced
+  -- version of t (which we cannot obtain here).
+  (f, def, mp) <- origProjection f
   let a = defType def
   -- if @f@ is not a projection (like) function, @a@ is the correct type
       fallback = return $ Just a
-  caseMaybe (isProjection_ $ theDef def) fallback $
+  reportSDoc "tc.deftype" 20 $ vcat
+    [ text "definition f = " <> prettyTCM f <+> text ("raw: " ++ show f)
+    , text "has type   a = " <> prettyTCM a
+    , text "principal  t = " <> prettyTCM t
+    ]
+  caseMaybe mp fallback $
     \ (Projection{ projIndex = n }) -> if n <= 0 then fallback else do
       -- otherwise, we have to instantiate @a@ to the "parameters" of @f@
       let npars | n == 0    = __IMPOSSIBLE__
                 | otherwise = n - 1
+      reportSLn "tc.deftype" 20 $ "projIndex    = " ++ show n
       -- we get the parameters from type @t@
       case ignoreSharing $ unEl t of
         Def d es -> do
@@ -223,7 +243,13 @@
           ifNotM (eligibleForProjectionLike d) failNotElig $ {- else -} do
             -- now we know it is reduced, we can safely take the parameters
             let pars = fromMaybe __IMPOSSIBLE__ $ allApplyElims $ take npars es
-            Just <$> a `piApplyM` pars
+            reportSDoc "tc.deftype" 20 $ vcat
+              [ text $ "head d     = " ++ show d
+              , text "parameters =" <+> sep (map prettyTCM pars)
+              ]
+            reportSLn "tc.deftype" 60 $ "parameters = " ++ show pars
+            if length pars < npars then failure "does not supply enough parameters"
+            else Just <$> a `piApplyM` pars
         _ -> failNotDef
   where
     failNotElig = failure "is not eligible for projection-likeness"
@@ -239,15 +265,17 @@
 
 -- | The analogue of 'piApply'.  If @v@ is a value of record type @t@
 --   with field @f@, then @projectTyped v t f@ returns the type of @f v@.
+--   And also the record type (as first result).
 --
 --   Works also for projection-like definitions @f@.
+--   In this case, the first result is not a record type.
 --
 --   Precondition: @t@ is reduced.
-projectTyped :: Term -> Type -> QName -> TCM (Maybe (Term, Type))
-projectTyped v t f = caseMaybeM (getDefType f t) (return Nothing) $ \ tf -> do
-  (dom, b) <- mustBePi tf
-  u <- f `applyDef` (argFromDom dom $> v)
-  return $ Just (u, b `absApp` v)
+projectTyped :: Term -> Type -> ProjOrigin -> QName -> TCM (Maybe (Dom Type, Term, Type))
+projectTyped v t o f = caseMaybeM (getDefType f t) (return Nothing) $ \ tf -> do
+  ifNotPiType tf (const $ return Nothing) {- else -} $ \ dom b -> do
+  u <- applyDef o f (argFromDom dom $> v)
+  return $ Just (dom, u, b `absApp` v)
 
 -- | Check if a name refers to an eta expandable record.
 {-# SPECIALIZE isEtaRecord :: QName -> TCM Bool #-}
@@ -276,8 +304,8 @@
 
 -- | Check if a name refers to a record constructor.
 --   If yes, return record definition.
-isRecordConstructor :: MonadTCM tcm => QName -> tcm (Maybe (QName, Defn))
-isRecordConstructor c = liftTCM $ do
+isRecordConstructor :: HasConstInfo m => QName -> m (Maybe (QName, Defn))
+isRecordConstructor c = do
   def <- theDef <$> getConstInfo c
   case def of
     Constructor{ conData = r } -> fmap (r,) <$> isRecord r
@@ -298,17 +326,35 @@
 -- | Mark record type as unguarded.
 --   No eta-expansion.  Projections do not preserve guardedness.
 unguardedRecord :: QName -> TCM ()
-unguardedRecord q = modifySignature $ updateDefinition q $ updateTheDef $ updateRecord
-  where updateRecord r@Record{} = r { recEtaEquality' = setEtaEquality (recEtaEquality' r) False, recRecursive = True }
-        updateRecord _          = __IMPOSSIBLE__
+unguardedRecord q = modifySignature $ updateDefinition q $ updateTheDef $ \case
+  r@Record{} -> r { recEtaEquality' = setEtaEquality (recEtaEquality' r) False, recRecursive = True }
+  _ -> __IMPOSSIBLE__
 
 -- | Mark record type as recursive.
 --   Projections do not preserve guardedness.
 recursiveRecord :: QName -> TCM ()
-recursiveRecord q = modifySignature $ updateDefinition q $ updateTheDef $ updateRecord
-  where updateRecord r@Record{} = r { recRecursive = True }
-        updateRecord _          = __IMPOSSIBLE__
+recursiveRecord q = do
+  ok <- etaEnabled
+  modifySignature $ updateDefinition q $ updateTheDef $ \case
+    r@Record{ recInduction = ind, recEtaEquality' = eta } ->
+      r { recRecursive = True, recEtaEquality' = eta' }
+      where
+      eta' | ok, eta == Inferred False, ind /= Just CoInductive = Inferred True
+           | otherwise = eta
+    _ -> __IMPOSSIBLE__
 
+-- | Turn on eta for non-recursive record, unless user declared otherwise.
+nonRecursiveRecord :: QName -> TCM ()
+nonRecursiveRecord q = whenM etaEnabled $ do
+  -- Do nothing if eta is disabled by option.
+  modifySignature $ updateDefinition q $ updateTheDef $ \case
+    r@Record{ recInduction = ind, recEtaEquality' = Inferred False }
+      | ind /= Just CoInductive ->
+      r { recEtaEquality' = Inferred True }
+    r@Record{} -> r
+    _          -> __IMPOSSIBLE__
+
+
 -- | Check whether record type is marked as recursive.
 --
 --   Precondition: record type identifier exists in signature.
@@ -365,14 +411,14 @@
           fs  = recFields def
       -- Construct the record pattern @Γ₁, Γ' ⊢ u := c ys@.
           ys  = zipWith (\ f i -> f $> var i) fs $ downFrom m
-          u   = Con (recConHead def) ys
+          u   = Con (recConHead def) ConOSystem ys
       -- @Γ₁, Γ' ⊢ τ₀ : Γ₁, x:_@
           tau0 = consS u $ raiseS m
       -- @Γ₁, Γ', Γ₂ ⊢ τ₀ : Γ₁, x:_, Γ₂@
           tau  = liftS (size gamma2) tau0
 
       --  Fields are in order first-first.
-          zs  = for fs $ fmap $ \ f -> Var 0 [Proj f]
+          zs  = for fs $ fmap $ \ f -> Var 0 [Proj ProjSystem f]
       --  We need to reverse the field sequence to build the substitution.
       -- @Γ₁, x:_ ⊢ σ₀ : Γ₁, Γ'@
           sigma0 = reverse (map unArg zs) ++# raiseS 1
@@ -427,14 +473,14 @@
           m   = size tel
           fs  = recFields def
           ys  = zipWith (\ f i -> f $> var i) fs $ downFrom m
-          u   = Con (recConHead def) ys
+          u   = Con (recConHead def) ConOSystem ys
           b'  = raise m b `absApp` u
           t'  = gamma `telePi` (tel `telePi` b')
           gammai = map domInfo $ telToList gamma
           xs  = reverse $ zipWith (\ ai i -> Arg ai $ var i) gammai [m..]
           curry v = teleLam gamma $ teleLam tel $
                       raise (n+m) v `apply` (xs ++ [Arg ai u])
-          zs  = for fs $ fmap $ \ f -> Var 0 [Proj f]
+          zs  = for fs $ fmap $ \ f -> Var 0 [Proj ProjSystem f]
           atel = sgTel $ Dom ai (absName b, a)
           uncurry v = teleLam gamma $ teleLam atel $
                         raise (n + 1) v `apply` (xs ++ zs)
@@ -444,7 +490,8 @@
 {-| @etaExpand r pars u@ computes the eta expansion of record value @u@
     at record type @r pars@.
 
-    The first argument @r@ should be the name of a record type. Given
+    The first argument @r@ should be the name of an eta-expandable record type.
+    Given
 
       @record R : Set where field x : A; y : B; .z : C@
 
@@ -455,30 +502,48 @@
     where @tel@ is the record telescope instantiated at the parameters @pars@.
 -}
 etaExpandRecord :: QName -> Args -> Term -> TCM (Telescope, Args)
-etaExpandRecord r pars u = do
+etaExpandRecord = etaExpandRecord' False
+
+-- | Eta expand a record regardless of whether it's an eta-record or not.
+forceEtaExpandRecord :: QName -> Args -> Term -> TCM (Telescope, Args)
+forceEtaExpandRecord = etaExpandRecord' True
+
+etaExpandRecord' :: Bool -> QName -> Args -> Term -> TCM (Telescope, Args)
+etaExpandRecord' forceEta r pars u = do
   def <- getRecordDef r
-  (tel, _, args) <- etaExpandRecord_ r pars def u
+  (tel, _, _, args) <- etaExpandRecord'_ forceEta r pars def u
   return (tel, args)
 
-etaExpandRecord_ :: QName -> Args -> Defn -> Term -> TCM (Telescope, ConHead, Args)
-etaExpandRecord_ r pars def u = do
+etaExpandRecord_ :: QName -> Args -> Defn -> Term -> TCM (Telescope, ConHead, ConInfo, Args)
+etaExpandRecord_ = etaExpandRecord'_ False
+
+etaExpandRecord'_ :: Bool -> QName -> Args -> Defn -> Term -> TCM (Telescope, ConHead, ConInfo, Args)
+etaExpandRecord'_ forceEta r pars def u = do
   let Record{ recConHead     = con
             , recFields      = xs
             , recTel         = tel
             } = def
       eta = recEtaEquality def
       tel' = apply tel pars
-  unless eta __IMPOSSIBLE__ -- make sure we do not expand non-eta records
+  unless (eta || forceEta) __IMPOSSIBLE__ -- make sure we do not expand non-eta records (unless forced to)
   case ignoreSharing u of
+
     -- Already expanded.
-    Con con_ args -> do
-      when (con /= con_) __IMPOSSIBLE__
-      return (tel', con, args)
+    Con con_ ci args -> do
+      when (con /= con_) $ do
+        reportSDoc "impossible" 10 $ vcat
+          [ text "etaExpandRecord_: the following two constructors should be identical"
+          , nest 2 $ text $ "con  = " ++ show con
+          , nest 2 $ text $ "con_ = " ++ show con_
+          ]
+        __IMPOSSIBLE__
+      return (tel', con, ci, args)
+
     -- Not yet expanded.
-    _             -> do
+    _ -> do
       -- Andreas, < 2016-01-18: Note: recFields are always the original projections,
       -- thus, we can use them in Proj directly.
-      let xs' = for xs $ fmap $ \ x -> u `applyE` [Proj x]
+      let xs' = for xs $ fmap $ \ x -> u `applyE` [Proj ProjSystem x]
       reportSDoc "tc.record.eta" 20 $ vcat
         [ text "eta expanding" <+> prettyTCM u <+> text ":" <+> prettyTCM r
         , nest 2 $ vcat
@@ -486,13 +551,13 @@
           , text "args =" <+> prettyTCM xs'
           ]
         ]
-      return (tel', con, xs')
+      return (tel', con, ConOSystem, xs')
 
 etaExpandAtRecordType :: Type -> Term -> TCM (Telescope, Term)
 etaExpandAtRecordType t u = do
   (r, pars, def) <- fromMaybe __IMPOSSIBLE__ <$> isRecordType t
-  (tel, con, args) <- etaExpandRecord_ r pars def u
-  return (tel, Con con args)
+  (tel, con, ci, args) <- etaExpandRecord_ r pars def u
+  return (tel, Con con ci args)
 
 -- | The fields should be eta contracted already.
 --
@@ -502,10 +567,10 @@
 --
 --   TODO: this can be moved out of TCM (but only if ConHead
 --   stores also the Arg-decoration of the record fields.
-{-# SPECIALIZE etaContractRecord :: QName -> ConHead -> Args -> TCM Term #-}
-{-# SPECIALIZE etaContractRecord :: QName -> ConHead -> Args -> ReduceM Term #-}
-etaContractRecord :: HasConstInfo m => QName -> ConHead -> Args -> m Term
-etaContractRecord r c args = do
+{-# SPECIALIZE etaContractRecord :: QName -> ConHead -> ConInfo -> Args -> TCM Term #-}
+{-# SPECIALIZE etaContractRecord :: QName -> ConHead -> ConInfo -> Args -> ReduceM Term #-}
+etaContractRecord :: HasConstInfo m => QName -> ConHead -> ConInfo -> Args -> m Term
+etaContractRecord r c ci args = do
   Just Record{ recFields = xs } <- isRecord r
   let check :: Arg Term -> Arg QName -> Maybe (Maybe Term)
       check a ax = do
@@ -516,10 +581,10 @@
           -- if @a@ is the record field name applied to a single argument
           -- then it passes the check
           (_, Just (_, [])) -> Nothing  -- not a projection
-          (_, Just (h, es)) | Proj f <- last es, unArg ax == f
+          (_, Just (h, es)) | Proj _o f <- last es, unArg ax == f
                             -> Just $ Just $ h $ init es
           _                 -> Nothing
-      fallBack = return (Con c args)
+      fallBack = return (Con c ci args)
   case compare (length args) (length xs) of
     LT -> fallBack       -- Not fully applied
     GT -> __IMPOSSIBLE__ -- Too many arguments. Impossible.
@@ -551,7 +616,7 @@
 isSingletonRecord' regardIrrelevance r ps = do
   reportSLn "tc.meta.eta" 30 $ "Is " ++ show r ++ " a singleton record type?"
   def <- getRecordDef r
-  emap (Con $ recConHead def) <$> check (recTel def `apply` ps)
+  emap (Con (recConHead def) ConOSystem) <$> check (recTel def `apply` ps)
   where
   check :: Telescope -> TCM (Either MetaId (Maybe [Arg Term]))
   check tel = do
@@ -597,3 +662,27 @@
 -- | Auxiliary function.
 emap :: (a -> b) -> Either c (Maybe a) -> Either c (Maybe b)
 emap = mapRight . fmap
+
+class NormaliseProjP a where
+  normaliseProjP :: HasConstInfo m => a -> m a
+
+instance NormaliseProjP Clause where
+  normaliseProjP cl = do
+    ps <- normaliseProjP $ namedClausePats cl
+    return $ cl { namedClausePats = ps }
+
+instance NormaliseProjP a => NormaliseProjP [a] where
+  normaliseProjP = traverse normaliseProjP
+
+instance NormaliseProjP a => NormaliseProjP (Arg a) where
+  normaliseProjP = traverse normaliseProjP
+
+instance NormaliseProjP a => NormaliseProjP (Named_ a) where
+  normaliseProjP = traverse normaliseProjP
+
+instance NormaliseProjP (Pattern' x) where
+  normaliseProjP p@VarP{}        = return p
+  normaliseProjP p@DotP{}        = return p
+  normaliseProjP (ConP c cpi ps) = ConP c cpi <$> normaliseProjP ps
+  normaliseProjP p@LitP{}        = return p
+  normaliseProjP (ProjP o d0)    = ProjP o <$> getOriginalProjection d0
diff --git a/src/full/Agda/TypeChecking/Records.hs-boot b/src/full/Agda/TypeChecking/Records.hs-boot
--- a/src/full/Agda/TypeChecking/Records.hs-boot
+++ b/src/full/Agda/TypeChecking/Records.hs-boot
@@ -9,6 +9,6 @@
 isRecord :: HasConstInfo m => QName -> m (Maybe Defn)
 isEtaRecord :: HasConstInfo m => QName -> m Bool
 getRecordFieldNames :: QName -> TCM [Arg C.Name]
-etaContractRecord :: HasConstInfo m => QName -> ConHead -> Args -> m Term
+etaContractRecord :: HasConstInfo m => QName -> ConHead -> ConInfo -> Args -> m Term
 isGeneratedRecordConstructor :: QName -> TCM Bool
-isRecordConstructor :: MonadTCM tcm => QName -> tcm (Maybe (QName, Defn))
+isRecordConstructor :: HasConstInfo m => QName -> m (Maybe (QName, Defn))
diff --git a/src/full/Agda/TypeChecking/Reduce.hs b/src/full/Agda/TypeChecking/Reduce.hs
--- a/src/full/Agda/TypeChecking/Reduce.hs
+++ b/src/full/Agda/TypeChecking/Reduce.hs
@@ -1,12 +1,6 @@
-{-# LANGUAGE CPP                  #-}
-{-# LANGUAGE FlexibleInstances    #-}
-{-# LANGUAGE PatternGuards        #-}
-{-# LANGUAGE TupleSections        #-}
-{-# LANGUAGE UndecidableInstances #-}
-
-#if __GLASGOW_HASKELL__ >= 710
-{-# LANGUAGE FlexibleContexts #-}
-#endif
+{-# LANGUAGE CPP                      #-}
+{-# LANGUAGE NondecreasingIndentation #-}
+{-# LANGUAGE UndecidableInstances     #-}
 
 module Agda.TypeChecking.Reduce where
 
@@ -20,6 +14,8 @@
 import Data.Traversable
 import Data.Hashable
 
+import Agda.Interaction.Options
+
 import Agda.Syntax.Position
 import Agda.Syntax.Common
 import Agda.Syntax.Internal
@@ -42,11 +38,13 @@
 import {-# SOURCE #-} Agda.TypeChecking.Patterns.Match
 import {-# SOURCE #-} Agda.TypeChecking.Pretty
 import {-# SOURCE #-} Agda.TypeChecking.Rewriting
+import {-# SOURCE #-} Agda.TypeChecking.Reduce.Fast
 
 import Agda.Utils.Function
 import Agda.Utils.Functor
 import Agda.Utils.Monad
 import Agda.Utils.HashMap (HashMap)
+import Agda.Utils.Size
 import Agda.Utils.Tuple
 
 #include "undefined.h"
@@ -70,6 +68,14 @@
 simplify :: Simplify a => a -> TCM a
 simplify = runReduceM . simplify'
 
+-- | Meaning no metas left in the instantiation.
+isFullyInstantiatedMeta :: MetaId -> TCM Bool
+isFullyInstantiatedMeta m = do
+  mv <- TCM.lookupMeta m
+  case mvInstantiation mv of
+    InstV sub v -> null . allMetas <$> instantiateFull (sub, v)
+    _ -> return False
+
 -- | Instantiate something.
 --   Results in an open meta variable or a non meta.
 --   Doesn't do any reduction, and preserves blocking tags (when blocking meta
@@ -98,7 +104,6 @@
       OpenIFS                          -> return t
       BlockedConst _                   -> return t
       PostponedTypeCheckingProblem _ _ -> return t
-      InstS _                          -> __IMPOSSIBLE__
   instantiate' (Level l) = levelTm <$> instantiate' l
   instantiate' (Sort s) = sortTm <$> instantiate' s
   instantiate' v@Shared{} =
@@ -132,7 +137,6 @@
       OpenIFS                        -> return v
       BlockedConst{}                 -> return v
       PostponedTypeCheckingProblem{} -> return v
-      InstS{}                        -> __IMPOSSIBLE__
 
 instance Instantiate Type where
     instantiate' (El s t) = El <$> instantiate' s <*> instantiate' t
@@ -144,7 +148,7 @@
 
 instance Instantiate Elim where
   instantiate' (Apply v) = Apply <$> instantiate' v
-  instantiate' (Proj f)  = pure $ Proj f
+  instantiate' (Proj o f)= pure $ Proj o f
 
 instance Instantiate t => Instantiate (Abs t) where
   instantiate' = traverse instantiate'
@@ -195,7 +199,7 @@
     instantiate' = traverse instantiate'
 
 instance Instantiate Candidate where
-  instantiate' (Candidate u t eti) = Candidate <$> instantiate' u <*> instantiate' t <*> return eti
+  instantiate' (Candidate u t eti ov) = Candidate <$> instantiate' u <*> instantiate' t <*> pure eti <*> pure ov
 
 instance Instantiate EqualityView where
   instantiate' (OtherType t)            = OtherType
@@ -257,7 +261,7 @@
 
 instance Reduce Elim where
   reduce' (Apply v) = Apply <$> reduce' v
-  reduce' (Proj f)  = pure $ Proj f
+  reduce' (Proj o f)= pure $ Proj o f
 
 instance Reduce Level where
   reduce'  (Max as) = levelMax <$> mapM reduce' as
@@ -311,7 +315,23 @@
     reduce' (x,y,z) = (,,) <$> reduce' x <*> reduce' y <*> reduce' z
 
 instance Reduce Term where
-  reduceB' = {-# SCC "reduce'<Term>" #-} rewriteAfter $ \ v -> do
+  reduceB' = {-# SCC "reduce'<Term>" #-} maybeFastReduceTerm
+
+maybeFastReduceTerm :: Term -> ReduceM (Blocked Term)
+maybeFastReduceTerm v = do
+  let tryFast = case v of
+                  Def{} -> True
+                  Con{} -> True
+                  _     -> False
+  if not tryFast then slowReduceTerm v
+                 else do
+    s <- optSharing   <$> commandLineOptions
+    allowed <- asks envAllowedReductions
+    let notAll = delete NonTerminatingReductions allowed /= allReductions
+    if s || notAll then slowReduceTerm v else fastReduce (elem NonTerminatingReductions allowed) v
+
+slowReduceTerm :: Term -> ReduceM (Blocked Term)
+slowReduceTerm v = do
     v <- instantiate' v
     let done = return $ notBlocked v
     case v of
@@ -320,10 +340,10 @@
 --      MetaV x args -> notBlocked . MetaV x <$> reduce' args
       MetaV x es -> done
       Def f es   -> unfoldDefinitionE False reduceB' (Def f []) f es
-      Con c args -> do
+      Con c ci args -> do
           -- Constructors can reduce' when they come from an
           -- instantiated module.
-          v <- unfoldDefinition False reduceB' (Con c []) (conName c) args
+          v <- unfoldDefinition False reduceB' (Con c ci []) (conName c) args
           traverse reduceNat v
       Sort s   -> fmap sortTm <$> reduceB' s
       Level l  -> ifM (elem LevelReductions <$> asks envAllowedReductions)
@@ -338,64 +358,71 @@
     where
       -- NOTE: reduceNat can traverse the entire term.
       reduceNat v@Shared{} = updateSharedTerm reduceNat v
-      reduceNat v@(Con c []) = do
+      reduceNat v@(Con c ci []) = do
         mz  <- getBuiltin' builtinZero
         case v of
           _ | Just v == mz  -> return $ Lit $ LitNat (getRange c) 0
           _                 -> return v
-      reduceNat v@(Con c [a]) | notHidden a && isRelevant a = do
+      reduceNat v@(Con c ci [a]) | notHidden a && isRelevant a = do
         ms  <- fmap ignoreSharing <$> getBuiltin' builtinSuc
         case v of
-          _ | Just (Con c []) == ms -> inc <$> reduce' (unArg a)
+          _ | Just (Con c ci []) == ms -> inc <$> reduce' (unArg a)
           _                         -> return v
           where
             inc w = case ignoreSharing w of
               Lit (LitNat r n) -> Lit (LitNat (fuseRange c r) $ n + 1)
-              _                -> Con c [defaultArg w]
+              _                -> Con c ci [defaultArg w]
       reduceNat v = return v
 
-rewriteAfter :: (Term -> ReduceM (Blocked Term)) -> Term -> ReduceM (Blocked Term)
-rewriteAfter f = trampolineM $ rewrite <=< f
-
 -- Andreas, 2013-03-20 recursive invokations of unfoldCorecursion
 -- need also to instantiate metas, see Issue 826.
 unfoldCorecursionE :: Elim -> ReduceM (Blocked Elim)
-unfoldCorecursionE e@(Proj f)           = return $ notBlocked e
+unfoldCorecursionE (Proj o p)           = notBlocked . Proj o <$> getOriginalProjection p
 unfoldCorecursionE (Apply (Arg info v)) = fmap (Apply . Arg info) <$>
   unfoldCorecursion v
 
 unfoldCorecursion :: Term -> ReduceM (Blocked Term)
-unfoldCorecursion = rewriteAfter $ \ v -> do
+unfoldCorecursion v = do
   v <- instantiate' v
   case compressPointerChain v of
     Def f es -> unfoldDefinitionE True unfoldCorecursion (Def f []) f es
     v@(Shared p) ->
       case derefPtr p of
         Def{} -> updateSharedFM unfoldCorecursion v
-        _     -> reduceB' v
-    _ -> reduceB' v
+        _     -> slowReduceTerm v
+    _ -> slowReduceTerm v
 
 -- | If the first argument is 'True', then a single delayed clause may
 -- be unfolded.
 unfoldDefinition ::
   Bool -> (Term -> ReduceM (Blocked Term)) ->
   Term -> QName -> Args -> ReduceM (Blocked Term)
-unfoldDefinition b keepGoing v f args = snd <$> do
-  unfoldDefinition' b (\ t -> (NoSimplification,) <$> keepGoing t) v f $
-    map Apply args
+unfoldDefinition unfoldDelayed keepGoing v f args =
+  unfoldDefinitionE unfoldDelayed keepGoing v f (map Apply args)
 
 unfoldDefinitionE ::
   Bool -> (Term -> ReduceM (Blocked Term)) ->
   Term -> QName -> Elims -> ReduceM (Blocked Term)
-unfoldDefinitionE b keepGoing v f es = snd <$>
-  unfoldDefinition' b (\ t -> (NoSimplification,) <$> keepGoing t) v f es
+unfoldDefinitionE unfoldDelayed keepGoing v f es = do
+  r <- unfoldDefinitionStep unfoldDelayed v f es
+  case r of
+    NoReduction v    -> return v
+    YesReduction _ v -> keepGoing v
 
 unfoldDefinition' ::
-  Bool -> (Term -> ReduceM (Simplification, Blocked Term)) ->
+  Bool -> (Simplification -> Term -> ReduceM (Simplification, Blocked Term)) ->
   Term -> QName -> Elims -> ReduceM (Simplification, Blocked Term)
-unfoldDefinition' unfoldDelayed keepGoing v0 f es =
+unfoldDefinition' unfoldDelayed keepGoing v0 f es = do
+  r <- unfoldDefinitionStep unfoldDelayed v0 f es
+  case r of
+    NoReduction v       -> return (NoSimplification, v)
+    YesReduction simp v -> keepGoing simp v
+
+unfoldDefinitionStep :: Bool -> Term -> QName -> Elims -> ReduceM (Reduced (Blocked Term) Term)
+unfoldDefinitionStep unfoldDelayed v0 f es =
   {-# SCC "reduceDef" #-} do
   info <- getConstInfo f
+  rewr <- getRewriteRulesFor f
   allowed <- asks envAllowedReductions
   let def = theDef info
       v   = v0 `applyE` es
@@ -412,30 +439,29 @@
           _                             -> False
   case def of
     Constructor{conSrcCon = c} ->
-      retSimpl $ notBlocked $ Con (c `withRangeOf` f) [] `applyE` es
+      noReduction $ notBlocked $ Con (c `withRangeOf` f) ConOSystem [] `applyE` es
     Primitive{primAbstr = ConcreteDef, primName = x, primClauses = cls} -> do
       pf <- fromMaybe __IMPOSSIBLE__ <$> getPrimitive' x
       if FunctionReductions `elem` allowed
         then reducePrimitive x v0 f es pf dontUnfold
-                             cls (defCompiled info)
-        else retSimpl $ notBlocked v
+                             cls (defCompiled info) rewr
+        else noReduction $ notBlocked v
     _  -> do
       if FunctionReductions `elem` allowed ||
          (isJust (isProjection_ def) && ProjectionReductions `elem` allowed) || -- includes projection-like
          (isInlineFun def && InlineReductions `elem` allowed) ||
          (copatterns && CopatternReductions `elem` allowed)
         then
-          reduceNormalE keepGoing v0 f (map notReduced es)
-                       dontUnfold
-                       (defClauses info) (defCompiled info)
-        else retSimpl $ notBlocked v  -- Andrea(s), 2014-12-05 OK?
+          reduceNormalE v0 f (map notReduced es) dontUnfold
+                       (defClauses info) (defCompiled info) rewr
+        else noReduction $ notBlocked v  -- Andrea(s), 2014-12-05 OK?
 
   where
-    retSimpl v = (,v) <$> getSimplification
-
-    reducePrimitive x v0 f es pf dontUnfold cls mcc
+    noReduction    = return . NoReduction
+    yesReduction s = return . YesReduction s
+    reducePrimitive x v0 f es pf dontUnfold cls mcc rewr
       | genericLength es < ar
-                  = retSimpl $ NotBlocked Underapplied $ v0 `applyE` es -- not fully applied
+                  = noReduction $ NotBlocked Underapplied $ v0 `applyE` es -- not fully applied
       | otherwise = {-# SCC "reducePrimitive" #-} do
           let (es1,es2) = genericSplitAt ar es
               args1     = fromMaybe __IMPOSSIBLE__ $ mapM isApplyElim es1
@@ -444,63 +470,46 @@
             NoReduction args1' -> do
               let es1' = map (fmap Apply) args1'
               if null cls then do
-                retSimpl $ applyE (Def f []) <$> do
+                noReduction $ applyE (Def f []) <$> do
                   traverse id $
                     map mredToBlocked es1' ++ map notBlocked es2
                else
-                reduceNormalE keepGoing v0 f
-                             (es1' ++ map notReduced es2)
-                             dontUnfold cls mcc
-            YesReduction simpl v -> performedSimplification' simpl $
-              keepGoing $ v `applyE` es2
+                reduceNormalE v0 f (es1' ++ map notReduced es2) dontUnfold cls mcc rewr
+            YesReduction simpl v -> yesReduction simpl $ v `applyE` es2
       where
           ar  = primFunArity pf
           mredToBlocked :: MaybeReduced a -> Blocked a
           mredToBlocked (MaybeRed NotReduced  x) = notBlocked x
           mredToBlocked (MaybeRed (Reduced b) x) = x <$ b
 
-    reduceNormalE :: (Term -> ReduceM (Simplification, Blocked Term)) -> Term -> QName -> [MaybeReduced Elim] -> Bool -> [Clause] -> Maybe CompiledClauses -> ReduceM (Simplification, Blocked Term)
-    reduceNormalE keepGoing v0 f es dontUnfold def mcc = {-# SCC "reduceNormal" #-} do
-      case def of
+    reduceNormalE :: Term -> QName -> [MaybeReduced Elim] -> Bool -> [Clause] -> Maybe CompiledClauses -> RewriteRules -> ReduceM (Reduced (Blocked Term) Term)
+    reduceNormalE v0 f es dontUnfold def mcc rewr = {-# SCC "reduceNormal" #-} do
+      case (def,rewr) of
         _ | dontUnfold -> defaultResult -- non-terminating or delayed
-        [] -> defaultResult -- no definition for head
-        cls -> do
-            ev <- appDefE_ f v0 cls mcc es
-            case ev of
-              NoReduction v -> do
-                traceSDoc "tc.reduce'" 90 (vcat
-                  [ text "*** tried to reduce' " <+> prettyTCM f
-                  , text "    es =  " <+> sep (map (prettyTCM . ignoreReduced) es)
---                  [ text "*** tried to reduce' " <+> prettyTCM vfull
-                  , text "    stuck on" <+> prettyTCM (ignoreBlocking v) ]) $ do
-                  retSimpl v
-              YesReduction simpl v -> performedSimplification' simpl $ do
-                traceSDoc "tc.reduce'"  90 (text "*** reduced definition: " <+> prettyTCM f) $ do
-                  traceSDoc "tc.reduce'"  95 (text "    result" <+> prettyTCM v) $ do
-                    traceSDoc "tc.reduce'" 100 (text "    raw   " <+> text (show v)) $ do
-                      keepGoing v
-      where defaultResult = retSimpl $ NotBlocked AbsurdMatch vfull
+        ([],[])        -> defaultResult -- no definition for head
+        (cls,rewr)     -> appDefE_ f v0 cls mcc rewr es
+      where defaultResult = noReduction $ NotBlocked AbsurdMatch vfull
             vfull         = v0 `applyE` map ignoreReduced es
 
 -- | Reduce a non-primitive definition if it is a copy linking to another def.
-reduceDefCopy :: QName -> Args -> TCM (Reduced () Term)
-reduceDefCopy f vs = do
+reduceDefCopy :: QName -> Elims -> TCM (Reduced () Term)
+reduceDefCopy f es = do
   info <- TCM.getConstInfo f
-  if (defCopy info) then reduceDef_ info f vs else return $ NoReduction ()
+  rewr <- TCM.getRewriteRulesFor f
+  if (defCopy info) then reduceDef_ info rewr f es else return $ NoReduction ()
   where
-    reduceDef_ :: Definition -> QName -> Args -> TCM (Reduced () Term)
-    reduceDef_ info f vs = do
+    reduceDef_ :: Definition -> RewriteRules -> QName -> Elims -> TCM (Reduced () Term)
+    reduceDef_ info rewr f es = do
       let v0   = Def f []
-          args = map notReduced vs
           cls  = (defClauses info)
           mcc  = (defCompiled info)
       if (defDelayed info == Delayed) || (defNonterminating info)
        then return $ NoReduction ()
        else do
-          ev <- runReduceM $ appDef_ f v0 cls mcc args
+          ev <- runReduceM $ appDefE_ f v0 cls mcc rewr $ map notReduced es
           case ev of
             YesReduction simpl t -> return $ YesReduction simpl t
-            NoReduction args'    -> return $ NoReduction ()
+            NoReduction{}        -> return $ NoReduction ()
 
 -- | Reduce simple (single clause) definitions.
 reduceHead :: Term -> TCM (Blocked Term)
@@ -542,38 +551,37 @@
 
 -- | Apply a definition using the compiled clauses, or fall back to
 --   ordinary clauses if no compiled clauses exist.
-appDef_ :: QName -> Term -> [Clause] -> Maybe CompiledClauses -> MaybeReducedArgs -> ReduceM (Reduced (Blocked Term) Term)
-appDef_ f v0 cls mcc args = appDefE_ f v0 cls mcc $ map (fmap Apply) args
+appDef_ :: QName -> Term -> [Clause] -> Maybe CompiledClauses -> RewriteRules -> MaybeReducedArgs -> ReduceM (Reduced (Blocked Term) Term)
+appDef_ f v0 cls mcc rewr args = appDefE_ f v0 cls mcc rewr $ map (fmap Apply) args
 
-appDefE_ :: QName -> Term -> [Clause] -> Maybe CompiledClauses -> MaybeReducedElims -> ReduceM (Reduced (Blocked Term) Term)
-appDefE_ f v0 cls mcc args =
+appDefE_ :: QName -> Term -> [Clause] -> Maybe CompiledClauses -> RewriteRules -> MaybeReducedElims -> ReduceM (Reduced (Blocked Term) Term)
+appDefE_ f v0 cls mcc rewr args =
   local (\ e -> e { envAppDef = Just f }) $
-  maybe (appDefE' v0 cls args)
-        (\cc -> appDefE v0 cc args) mcc
+  maybe (appDefE' v0 cls rewr args)
+        (\cc -> appDefE v0 cc rewr args) mcc
 
 
 -- | Apply a defined function to it's arguments, using the compiled clauses.
 --   The original term is the first argument applied to the third.
-appDef :: Term -> CompiledClauses -> MaybeReducedArgs -> ReduceM (Reduced (Blocked Term) Term)
-appDef v cc args = appDefE v cc $ map (fmap Apply) args
+appDef :: Term -> CompiledClauses -> RewriteRules -> MaybeReducedArgs -> ReduceM (Reduced (Blocked Term) Term)
+appDef v cc rewr args = appDefE v cc rewr $ map (fmap Apply) args
 
-appDefE :: Term -> CompiledClauses -> MaybeReducedElims -> ReduceM (Reduced (Blocked Term) Term)
-appDefE v cc es = do
+appDefE :: Term -> CompiledClauses -> RewriteRules -> MaybeReducedElims -> ReduceM (Reduced (Blocked Term) Term)
+appDefE v cc rewr es = do
   r <- matchCompiledE cc es
   case r of
     YesReduction simpl t -> return $ YesReduction simpl t
-    NoReduction es'      -> return $ NoReduction $ applyE v <$> es'
+    NoReduction es'      -> rewrite (void es') v rewr (ignoreBlocking es')
 
 -- | Apply a defined function to it's arguments, using the original clauses.
-appDef' :: Term -> [Clause] -> MaybeReducedArgs -> ReduceM (Reduced (Blocked Term) Term)
-appDef' v cls args = appDefE' v cls $ map (fmap Apply) args
+appDef' :: Term -> [Clause] -> RewriteRules -> MaybeReducedArgs -> ReduceM (Reduced (Blocked Term) Term)
+appDef' v cls rewr args = appDefE' v cls rewr $ map (fmap Apply) args
 
-appDefE' :: Term -> [Clause] -> MaybeReducedElims -> ReduceM (Reduced (Blocked Term) Term)
-appDefE' v cls es = goCls cls $ map ignoreReduced es
+appDefE' :: Term -> [Clause] -> RewriteRules -> MaybeReducedElims -> ReduceM (Reduced (Blocked Term) Term)
+appDefE' v cls rewr es = goCls cls $ map ignoreReduced es
   where
     goCls :: [Clause] -> [Elim] -> ReduceM (Reduced (Blocked Term) Term)
     goCls cl es = do
-      traceSLn "tc.reduce'" 95 ("Reduce.goCls tries reduction, #clauses = " ++ show (length cl)) $ do
       case cl of
         -- Andreas, 2013-10-26  In case of an incomplete match,
         -- we just do not reduce.  This allows adding single function
@@ -581,43 +589,28 @@
         -- the remaining clauses (see Issue 907).
         -- Andrea(s), 2014-12-05:  We return 'MissingClauses' here, since this
         -- is the most conservative reason.
-        [] -> return $ NoReduction $ NotBlocked MissingClauses $ v `applyE` es
-        Clause{ namedClausePats = pats, clauseBody = body } : cls -> do
-          let n = length pats
+        [] -> rewrite (NotBlocked MissingClauses ()) v rewr es
+        cl : cls -> do
+          let pats = namedClausePats cl
+              body = clauseBody cl
+              npats = length pats
+              nvars = size $ clauseTel cl
           -- if clause is underapplied, skip to next clause
-          if length es < n then goCls cls es else do
-            let (es0, es1) = splitAt n es
-            (m, es0) <- matchCopatterns (unnumberPatVars pats) es0
+          if length es < npats then goCls cls es else do
+            let (es0, es1) = splitAt npats es
+            (m, es0) <- matchCopatterns pats es0
             es <- return $ es0 ++ es1
             case m of
               No         -> goCls cls es
-              DontKnow b -> return $ NoReduction $ b $> v `applyE` es
+              DontKnow b -> rewrite b v rewr es
               Yes simpl vs -- vs is the subst. for the variables bound in body
-                | isJust (getBodyUnraised body)  -- clause has body?
-                                -> return $ YesReduction simpl $
+                | Just w <- body -> do -- clause has body?
                     -- TODO: let matchPatterns also return the reduced forms
                     -- of the original arguments!
                     -- Andreas, 2013-05-19 isn't this done now?
-                    app vs body EmptyS `applyE` es1
-                | otherwise     -> return $ NoReduction $ NotBlocked AbsurdMatch $ v `applyE` es
-
-    -- Build an explicit substitution from arguments
-    -- and execute it using parallel substitution.
-    -- Calculating the de Bruijn indices: ;-) for the Bind case
-    --   Simply-typed version
-    --   (we are not interested in types, only in de Bruijn indices here)
-    --   Γ ⊢ σ : Δ
-    --   Γ ⊢ v : A
-    --   Γ ⊢ (σ,v) : Δ.A
-    --   Δ ⊢ λ b : A → B
-    --   Δ.A ⊢ b : B
-    app :: [Term] -> ClauseBody -> Substitution -> Term
-    app []       (Body v)           sigma = applySubst sigma v
-    app (v : vs) (Bind (Abs   _ b)) sigma = app vs b $ consS v sigma -- CBN
-    app (v : vs) (Bind (NoAbs _ b)) sigma = app vs b sigma
-    app  _        NoBody            sigma = __IMPOSSIBLE__
-    app (_ : _)  (Body _)           sigma = __IMPOSSIBLE__
-    app []       (Bind _)           sigma = __IMPOSSIBLE__
+                    let sigma = buildSubstitution __IMPOSSIBLE__ nvars vs
+                    return $ YesReduction simpl $ applySubst sigma w `applyE` es1
+                | otherwise     -> rewrite (NotBlocked AbsurdMatch ()) v rewr es
 
 instance Reduce a => Reduce (Closure a) where
     reduce' cl = do
@@ -648,7 +641,7 @@
     reduce' = traverse reduce'
 
 instance Reduce Candidate where
-  reduce' (Candidate u t eti) = Candidate <$> reduce' u <*> reduce' t <*> return eti
+  reduce' (Candidate u t eti ov) = Candidate <$> reduce' u <*> reduce' t <*> pure eti <*> pure ov
 
 instance Reduce EqualityView where
   reduce' (OtherType t)            = OtherType
@@ -675,7 +668,7 @@
     v <- instantiate' v
     case v of
       Def f vs   -> do
-        let keepGoing v = (,notBlocked v) <$> getSimplification  -- Andrea(s), 2014-12-05 OK?
+        let keepGoing simp v = return (simp, notBlocked v)
         (simpl, v) <- unfoldDefinition' False keepGoing (Def f []) f vs
         traceSDoc "tc.simplify'" 20 (
           text ("simplify': unfolding definition returns " ++ show simpl)
@@ -684,7 +677,7 @@
           YesSimplification -> simplifyBlocked' v -- Dangerous, but if @simpl@ then @v /= Def f vs@
           NoSimplification  -> Def f <$> simplify' vs
       MetaV x vs -> MetaV x  <$> simplify' vs
-      Con c vs   -> Con c    <$> simplify' vs
+      Con c ci vs-> Con c ci <$> simplify' vs
       Sort s     -> sortTm   <$> simplify' s
       Level l    -> levelTm  <$> simplify' l
       Pi a b     -> Pi       <$> simplify' a <*> simplify' b
@@ -703,7 +696,7 @@
 
 instance Simplify Elim where
   simplify' (Apply v) = Apply <$> simplify' v
-  simplify' (Proj f)  = pure $ Proj f
+  simplify' (Proj o f)= pure $ Proj o f
 
 instance Simplify Sort where
     simplify' s = do
@@ -804,16 +797,11 @@
 --     DotP v       -> DotP <$> simplify' v
 --     ProjP _      -> return p
 
-instance Simplify ClauseBody where
-    simplify' (Body   t) = Body   <$> simplify' t
-    simplify' (Bind   b) = Bind   <$> simplify' b
-    simplify'  NoBody   = return NoBody
-
 instance Simplify DisplayForm where
   simplify' (Display n ps v) = Display n <$> simplify' ps <*> return v
 
 instance Simplify Candidate where
-  simplify' (Candidate u t eti) = Candidate <$> simplify' u <*> simplify' t <*> return eti
+  simplify' (Candidate u t eti ov) = Candidate <$> simplify' u <*> simplify' t <*> pure eti <*> pure ov
 
 instance Simplify EqualityView where
   simplify' (OtherType t)            = OtherType
@@ -847,12 +835,12 @@
     normalise' (El s t) = El <$> normalise' s <*> normalise' t
 
 instance Normalise Term where
-    normalise' = ignoreBlocking <.> rewriteAfter (reduceB' >=> traverse normaliseArgs)
+    normalise' = ignoreBlocking <.> (reduceB' >=> traverse normaliseArgs)
       where
         normaliseArgs :: Term -> ReduceM Term
         normaliseArgs v = case v of
                 Var n vs    -> Var n <$> normalise' vs
-                Con c vs    -> Con c <$> normalise' vs
+                Con c ci vs -> Con c ci <$> normalise' vs
                 Def f vs    -> Def f <$> normalise' vs
                 MetaV x vs  -> MetaV x <$> normalise' vs
                 Lit _       -> return v
@@ -865,7 +853,7 @@
 
 instance Normalise Elim where
   normalise' (Apply v) = Apply <$> normalise' v
-  normalise' (Proj f)  = pure $ Proj f
+  normalise' (Proj o f)= pure $ Proj o f
 
 instance Normalise Level where
   normalise' (Max as) = levelMax <$> normalise' as
@@ -883,11 +871,6 @@
       NeutralLevel r v -> NeutralLevel r <$> normalise' v
       UnreducedLevel{} -> __IMPOSSIBLE__    -- I hope
 
-instance Normalise ClauseBody where
-    normalise' (Body   t) = Body   <$> normalise' t
-    normalise' (Bind   b) = Bind   <$> normalise' b
-    normalise'  NoBody   = return NoBody
-
 instance (Subst t a, Normalise a) => Normalise (Abs a) where
     normalise' a@(Abs x _) = Abs x <$> underAbstraction_ a normalise'
     normalise' (NoAbs x v) = NoAbs x <$> normalise' v
@@ -953,13 +936,16 @@
 instance Normalise ConPatternInfo where
   normalise' (ConPatternInfo mr mt) = ConPatternInfo mr <$> normalise' mt
 
+instance Normalise DBPatVar where
+  normalise' = return
+
 instance Normalise a => Normalise (Pattern' a) where
   normalise' p = case p of
     VarP x       -> VarP <$> normalise' x
     LitP _       -> return p
     ConP c mt ps -> ConP c <$> normalise' mt <*> normalise' ps
     DotP v       -> DotP <$> normalise' v
-    ProjP _      -> return p
+    ProjP{}      -> return p
 
 instance Normalise DisplayForm where
   normalise' (Display n ps v) = Display n <$> normalise' ps <*> return v
@@ -971,7 +957,7 @@
     normalise' = traverse normalise'
 
 instance Normalise Candidate where
-  normalise' (Candidate u t eti) = Candidate <$> normalise' u <*> normalise' t <*> return eti
+  normalise' (Candidate u t eti ov) = Candidate <$> normalise' u <*> normalise' t <*> pure eti <*> pure ov
 
 instance Normalise EqualityView where
   normalise' (OtherType t)            = OtherType
@@ -1019,7 +1005,7 @@
       v <- instantiate' v
       case v of
           Var n vs    -> Var n <$> instantiateFull' vs
-          Con c vs    -> Con c <$> instantiateFull' vs
+          Con c ci vs -> Con c ci <$> instantiateFull' vs
           Def f vs    -> Def f <$> instantiateFull' vs
           MetaV x vs  -> MetaV x <$> instantiateFull' vs
           Lit _       -> return v
@@ -1071,6 +1057,9 @@
 instance InstantiateFull ConPatternInfo where
   instantiateFull' (ConPatternInfo mr mt) = ConPatternInfo mr <$> instantiateFull' mt
 
+instance InstantiateFull DBPatVar where
+    instantiateFull' = return
+
 instance InstantiateFull a => InstantiateFull (Pattern' a) where
     instantiateFull' (VarP x)       = VarP <$> instantiateFull' x
     instantiateFull' (DotP t)       = DotP <$> instantiateFull' t
@@ -1078,11 +1067,6 @@
     instantiateFull' l@LitP{}       = return l
     instantiateFull' p@ProjP{}      = return p
 
-instance InstantiateFull ClauseBody where
-    instantiateFull' (Body   t) = Body   <$> instantiateFull' t
-    instantiateFull' (Bind   b) = Bind   <$> instantiateFull' b
-    instantiateFull'  NoBody    = return NoBody
-
 instance (Subst t a, InstantiateFull a) => InstantiateFull (Abs a) where
     instantiateFull' a@(Abs x _) = Abs x <$> underAbstraction_ a instantiateFull'
     instantiateFull' (NoAbs x a) = NoAbs x <$> instantiateFull' a
@@ -1134,7 +1118,7 @@
 
 instance (InstantiateFull a) => InstantiateFull (Elim' a) where
   instantiateFull' (Apply v) = Apply <$> instantiateFull' v
-  instantiateFull' (Proj f)  = pure $ Proj f
+  instantiateFull' (Proj o f)= pure $ Proj o f
 
 instance InstantiateFull e => InstantiateFull (Map k e) where
     instantiateFull' = traverse instantiateFull'
@@ -1162,12 +1146,12 @@
     instantiateFull' = return
 
 instance InstantiateFull Definition where
-    instantiateFull' (Defn rel x t pol occ df i c inst copy d) = do
+    instantiateFull' (Defn rel x t pol occ df i c inst copy ma d) = do
       (t, df, d) <- instantiateFull' (t, df, d)
-      return $ Defn rel x t pol occ df i c inst copy d
+      return $ Defn rel x t pol occ df i c inst copy ma d
 
 instance InstantiateFull NLPat where
-  instantiateFull' (PVar x y) = return $ PVar x y
+  instantiateFull' (PVar x y z) = return $ PVar x y z
   instantiateFull' (PWild)    = return PWild
   instantiateFull' (PDef x y) = PDef <$> instantiateFull' x <*> instantiateFull' y
   instantiateFull' (PLam x y) = PLam x <$> instantiateFull' y
@@ -1175,30 +1159,40 @@
   instantiateFull' (PBoundVar x y) = PBoundVar x <$> instantiateFull' y
   instantiateFull' (PTerm x)  = PTerm <$> instantiateFull' x
 
+instance InstantiateFull NLPType where
+  instantiateFull' (NLPType l a) = NLPType
+    <$> instantiateFull' l
+    <*> instantiateFull' a
+
 instance InstantiateFull RewriteRule where
-  instantiateFull' (RewriteRule q gamma lhs rhs t) =
+  instantiateFull' (RewriteRule q gamma f ps rhs t) =
     RewriteRule q
       <$> instantiateFull' gamma
-      <*> instantiateFull' lhs
+      <*> pure f
+      <*> instantiateFull' ps
       <*> instantiateFull' rhs
       <*> instantiateFull' t
 
 instance InstantiateFull a => InstantiateFull (Open a) where
   instantiateFull' (OpenThing n a) = OpenThing n <$> instantiateFull' a
 
+instance InstantiateFull a => InstantiateFull (Local a) where
+  instantiateFull' = traverseF instantiateFull'
+
 instance InstantiateFull DisplayForm where
   instantiateFull' (Display n ps v) = uncurry (Display n) <$> instantiateFull' (ps, v)
 
 instance InstantiateFull DisplayTerm where
   instantiateFull' (DTerm v)       = DTerm <$> instantiateFull' v
   instantiateFull' (DDot  v)       = DDot  <$> instantiateFull' v
-  instantiateFull' (DCon c vs)     = DCon c <$> instantiateFull' vs
+  instantiateFull' (DCon c ci vs)  = DCon c ci <$> instantiateFull' vs
   instantiateFull' (DDef c es)     = DDef c <$> instantiateFull' es
   instantiateFull' (DWithApp v vs ws) = uncurry3 DWithApp <$> instantiateFull' (v, vs, ws)
 
 instance InstantiateFull Defn where
     instantiateFull' d = case d of
       Axiom{} -> return d
+      AbstractDefn -> return d
       Function{ funClauses = cs, funCompiled = cc, funInv = inv } -> do
         (cs, cc, inv) <- instantiateFull' (cs, cc, inv)
         return $ d { funClauses = cs, funCompiled = cc, funInv = inv }
@@ -1206,11 +1200,10 @@
         s  <- instantiateFull' s
         cl <- instantiateFull' cl
         return $ d { dataSort = s, dataClause = cl }
-      Record{ recConType = t, recClause = cl, recTel = tel } -> do
-        t   <- instantiateFull' t
+      Record{ recClause = cl, recTel = tel } -> do
         cl  <- instantiateFull' cl
         tel <- instantiateFull' tel
-        return $ d { recConType = t, recClause = cl, recTel = tel }
+        return $ d { recClause = cl, recTel = tel }
       Constructor{} -> return d
       Primitive{ primClauses = cs } -> do
         cs <- instantiateFull' cs
@@ -1268,7 +1261,8 @@
   instantiateFull' = mapM instantiateFull'
 
 instance InstantiateFull Candidate where
-  instantiateFull' (Candidate u t eti) = Candidate <$> instantiateFull' u <*> instantiateFull' t <*> return eti
+  instantiateFull' (Candidate u t eti ov) =
+    Candidate <$> instantiateFull' u <*> instantiateFull' t <*> pure eti <*> pure ov
 
 instance InstantiateFull EqualityView where
   instantiateFull' (OtherType t)            = OtherType
diff --git a/src/full/Agda/TypeChecking/Reduce/Fast.hs b/src/full/Agda/TypeChecking/Reduce/Fast.hs
new file mode 100644
--- /dev/null
+++ b/src/full/Agda/TypeChecking/Reduce/Fast.hs
@@ -0,0 +1,534 @@
+{-# LANGUAGE CPP                 #-}
+{-# LANGUAGE ScopedTypeVariables #-}
+{-# LANGUAGE PatternGuards       #-}
+{-# LANGUAGE BangPatterns        #-}
+
+{-|
+
+This module contains an optimised implementation of the reduction algorithm
+from 'Agda.TypeChecking.Reduce' and 'Agda.TypeChecking.CompiledClause.Match'.
+It runs roughly an order of magnitude faster than the original implementation.
+
+The differences are the following:
+
+- Only applies when we don't have --sharing and when all reductions are
+  allowed.
+
+  This means we can skip a number of checks that would otherwise be performed
+  at each reduction step.
+
+- Does not track whether simplifications were made.
+
+  This information is only used when trying to simplify terms, so the
+  simplifier runs the slow implementation.
+
+- Precomputes primZero and primSuc.
+
+  Since all the functions involved in reduction are implemented in this module
+  in a single where block, we can look up zero and suc once instead of once for
+  each reduction step.
+
+- Run outside ReduceM
+
+  ReduceM is already just a plain reader monad, but pulling out the environment
+  and doing all reduction non-monadically saves a significant amount of time.
+
+- Memoise getConstInfo.
+
+  A big chunk of the time during reduction is spent looking up definitions in
+  the signature. Any long-running reduction will use only a handful definitions
+  though, so memoising getConstInfo is a big win.
+
+- Optimised case trees.
+
+  Since we memoise getConstInfo we can do some preprocessing of the
+  definitions, returning a 'CompactDef' instead of a 'Definition'. In
+  particular we streamline the case trees used for matching in a few ways:
+
+    - Drop constructor arity information.
+    - Use NameId instead of QName as map keys.
+    - Special branch for natural number successor.
+
+  None of these changes would make sense to incorporate into the actual case
+  trees. The first two loses information that we need in other places and the
+  third would complicate a lot of code working with case trees.
+
+- Optimised parallel substitution.
+
+  When substituting arguments into function bodies we always have a complete
+  (a term for every free variable) parallel substitution. We run an specialised
+  substitution for this case that falls back to normal substitution when it
+  hits a binder.
+
+-}
+module Agda.TypeChecking.Reduce.Fast
+  ( fastReduce ) where
+
+import Control.Applicative
+import Control.Monad.Reader
+
+import Data.List
+import Data.Map (Map)
+import qualified Data.Map as Map
+import Data.Traversable (traverse)
+
+import System.IO.Unsafe
+import Data.IORef
+
+import Agda.Syntax.Internal
+import Agda.Syntax.Common
+import Agda.Syntax.Position
+import Agda.Syntax.Literal
+
+import Agda.TypeChecking.CompiledClause
+import Agda.TypeChecking.Monad
+import Agda.TypeChecking.Pretty
+import Agda.TypeChecking.Reduce as R
+import Agda.TypeChecking.Rewriting (rewrite)
+import Agda.TypeChecking.Reduce.Monad as RedM
+import Agda.TypeChecking.Substitute
+import Agda.TypeChecking.Monad.Builtin hiding (constructorForm)
+import Agda.TypeChecking.CompiledClause.Match
+
+import Agda.Interaction.Options
+
+import Agda.Utils.Maybe
+import Agda.Utils.Memo
+import Agda.Utils.Function
+import Agda.Utils.Functor
+
+#include "undefined.h"
+import Agda.Utils.Impossible
+
+-- Compact definitions ----------------------------------------------------
+
+-- This is what the memoised getConstInfo returns. We essentially pick out only the
+-- information needed for fast reduction from the definition.
+
+data CompactDef =
+  CompactDef { cdefDelayed        :: Bool
+             , cdefNonterminating :: Bool
+             , cdefDef            :: CompactDefn
+             , cdefRewriteRules   :: RewriteRules
+             }
+
+data CompactDefn
+  = CFun  { cfunCompiled  :: FastCompiledClauses, cfunProjection :: Maybe QName }
+  | CCon  { cconSrcCon    :: ConHead }
+  | CForce  -- ^ primForce
+  | CTyCon  -- ^ Datatype or record type. Need to know this for primForce.
+  | COther  -- ^ In this case we fall back to slow reduction
+
+compactDef :: Maybe ConHead -> Maybe ConHead -> Maybe QName -> Definition -> RewriteRules -> ReduceM CompactDef
+compactDef z s pf def rewr = do
+  cdefn <-
+    case theDef def of
+      _ | Just (defName def) == pf -> pure CForce
+      Constructor{conSrcCon = c} -> pure CCon{cconSrcCon = c}
+      Function{funCompiled = Just cc, funClauses = _:_, funProjection = proj} ->
+        pure CFun{ cfunCompiled   = fastCompiledClauses z s cc
+                 , cfunProjection = projOrig <$> proj }
+      Datatype{dataClause = Nothing} -> pure CTyCon
+      Record{recClause = Nothing} -> pure CTyCon
+      _ -> pure COther
+  return $
+    CompactDef { cdefDelayed        = defDelayed def == Delayed
+               , cdefNonterminating = defNonterminating def
+               , cdefDef            = cdefn
+               , cdefRewriteRules   = rewr
+               }
+
+-- Faster case trees ------------------------------------------------------
+
+data FastCase c = FBranches
+  { fprojPatterns   :: Bool
+    -- ^ We are constructing a record here (copatterns).
+    --   'conBranches' lists projections.
+  , fconBranches    :: Map NameId c
+    -- ^ Map from constructor (or projection) names to their arity
+    --   and the case subtree.  (Projections have arity 0.)
+  , fsucBranch      :: Maybe c
+  , flitBranches    :: Map Literal c
+    -- ^ Map from literal to case subtree.
+  , fcatchAllBranch :: Maybe c
+    -- ^ (Possibly additional) catch-all clause.
+  }
+
+-- | Case tree with bodies.
+
+data FastCompiledClauses
+  = FCase Int (FastCase FastCompiledClauses)
+    -- ^ @Case n bs@ stands for a match on the @n@-th argument
+    -- (counting from zero) with @bs@ as the case branches.
+    -- If the @n@-th argument is a projection, we have only 'conBranches'
+    -- with arity 0.
+  | FDone [Arg ArgName] Term
+    -- ^ @Done xs b@ stands for the body @b@ where the @xs@ contains hiding
+    --   and name suggestions for the free variables. This is needed to build
+    --   lambdas on the right hand side for partial applications which can
+    --   still reduce.
+  | FFail
+    -- ^ Absurd case.
+
+type FastStack = [(FastCompiledClauses, MaybeReducedElims, Elims -> Elims)]
+
+fastCompiledClauses :: Maybe ConHead -> Maybe ConHead -> CompiledClauses -> FastCompiledClauses
+fastCompiledClauses z s cc =
+  case cc of
+    Fail              -> FFail
+    Done xs b         -> FDone xs b
+    Case (Arg _ n) bs -> FCase n (fastCase z s bs)
+
+fastCase :: Maybe ConHead -> Maybe ConHead -> Case CompiledClauses -> FastCase FastCompiledClauses
+fastCase z s (Branches proj con lit wild) =
+  FBranches
+    { fprojPatterns   = proj
+    , fconBranches    = Map.mapKeysMonotonic (nameId . qnameName) $ fmap (fastCompiledClauses z s . content) con
+    , fsucBranch      = fmap (fastCompiledClauses z s . content) $ flip Map.lookup con . conName =<< s
+    , flitBranches    = fmap (fastCompiledClauses z s) lit
+    , fcatchAllBranch = fmap (fastCompiledClauses z s) wild }
+
+{-# INLINE lookupCon #-}
+lookupCon :: QName -> FastCase c -> Maybe c
+lookupCon c (FBranches _ cons _ _ _) = Map.lookup (nameId $ qnameName c) cons
+
+-- QName memo -------------------------------------------------------------
+
+{-# NOINLINE memoQName #-}
+memoQName :: (QName -> a) -> (QName -> a)
+memoQName f = unsafePerformIO $ do
+  tbl <- newIORef Map.empty
+  return (unsafePerformIO . f' tbl)
+  where
+    f' tbl x = do
+      let i = nameId (qnameName x)
+      m <- readIORef tbl
+      case Map.lookup i m of
+        Just y  -> return y
+        Nothing -> do
+          let y = f x
+          writeIORef tbl (Map.insert i y m)
+          return y
+
+-- Faster substitution ----------------------------------------------------
+
+-- Precondition: All free variables of the term are assigned values in the
+-- list.
+-- Reverts to normal substitution if it hits a binder or other icky stuff (like
+-- levels). It's strict in the shape of the result to avoid creating huge
+-- thunks for accumulator arguments.
+strictSubst :: Bool -> [Term] -> Term -> Term
+strictSubst strict us
+  | not strict = applySubst rho
+  | otherwise  = go 0
+  where
+    rho = parallelS us
+    go k v =
+      case v of
+        Var x es
+          | x < k     -> Var x $! map' (goE k) es
+          | otherwise -> applyE (raise k $ us !! (x - k)) $! map' (goE k) es
+        Def f es -> defApp f [] $! map' (goE k) es
+        Con c ci vs -> Con c ci $! map' (mapArg' $ go k) vs
+        Lam i b  -> Lam i $! goAbs k b
+        Lit{}    -> v
+        _        -> applySubst (liftS k rho) v
+
+    goE k (Apply v) = Apply $! mapArg' (go k) v
+    goE _ p         = p
+
+    goAbs k (Abs   x v) = Abs   x $! go (k + 1) v
+    goAbs k (NoAbs x v) = NoAbs x $! go k v
+
+map' :: (a -> b) -> [a] -> [b]
+map' f []       = []
+map' f (x : xs) = ((:) $! f x) $! map' f xs
+
+mapArg' :: (a -> b) -> Arg a -> Arg b
+mapArg' f (Arg i x) = Arg i $! f x
+
+
+-- Fast reduction ---------------------------------------------------------
+
+-- | First argument: allow non-terminating reductions.
+fastReduce :: Bool -> Term -> ReduceM (Blocked Term)
+fastReduce allowNonTerminating v = do
+  let name (Con c _ _) = c
+      name _         = __IMPOSSIBLE__
+  z  <- fmap name <$> getBuiltin' builtinZero
+  s  <- fmap name <$> getBuiltin' builtinSuc
+  pf <- fmap primFunName <$> getPrimitive' "primForce"
+  rwr <- optRewriting <$> pragmaOptions
+  constInfo <- unKleisli $ \f -> do
+    info <- getConstInfo f
+    rewr <- getRewriteRulesFor f
+    compactDef z s pf info rewr
+  ReduceM $ \ env -> reduceTm env (memoQName constInfo) allowNonTerminating rwr z s v
+
+unKleisli :: (a -> ReduceM b) -> ReduceM (a -> b)
+unKleisli f = ReduceM $ \ env x -> unReduceM (f x) env
+
+reduceTm :: ReduceEnv -> (QName -> CompactDef) -> Bool -> Bool -> Maybe ConHead -> Maybe ConHead -> Term -> Blocked Term
+reduceTm env !constInfo allowNonTerminating hasRewriting zero suc = reduceB' 0
+  where
+    -- Force substitutions every nth step to avoid memory leaks. Doing it in
+    -- every is too expensive (issue 2215).
+    strictEveryNth = 1000
+
+    runReduce m = unReduceM m env
+    conNameId = nameId . qnameName . conName
+    isZero =
+      case zero of
+        Nothing -> const False
+        Just z  -> (conNameId z ==) . conNameId
+
+    isSuc  =
+      case suc of
+        Nothing -> const False
+        Just s  -> (conNameId s ==) . conNameId
+
+    reduceB' steps v =
+      case v of
+        Def f es -> unfoldDefinitionE steps False reduceB' (Def f []) f es
+        Con c ci vs ->
+          -- Constructors can reduce' when they come from an
+          -- instantiated module.
+          case unfoldDefinition steps False reduceB' (Con c ci []) (conName c) vs of
+            NotBlocked r v -> NotBlocked r $ reduceNat v
+            b              -> b
+        Lit{} -> done
+        Var{} -> done
+        _     -> runReduce (slowReduceTerm v)
+      where
+        done = notBlocked v
+
+        reduceNat v@(Con c ci [])
+          | isZero c = Lit $ LitNat (getRange c) 0
+        reduceNat v@(Con c ci [a])
+          | isSuc c  = inc . ignoreBlocking $ reduceB' 0 (unArg a)
+          where
+            inc (Lit (LitNat r n)) = Lit (LitNat noRange $ n + 1)
+            inc w                  = Con c ci [defaultArg w]
+        reduceNat v = v
+
+    originalProjection :: QName -> QName
+    originalProjection q =
+      case cdefDef $ constInfo q of
+        CFun{ cfunProjection = Just p } -> p
+        _                               -> __IMPOSSIBLE__
+
+    -- Andreas, 2013-03-20 recursive invokations of unfoldCorecursion
+    -- need also to instantiate metas, see Issue 826.
+    unfoldCorecursionE :: Elim -> Blocked Elim
+    unfoldCorecursionE (Proj o p)           = notBlocked $ Proj o $ originalProjection p
+    unfoldCorecursionE (Apply (Arg info v)) = fmap (Apply . Arg info) $
+      unfoldCorecursion 0 v
+
+    unfoldCorecursion :: Int -> Term -> Blocked Term
+    unfoldCorecursion steps (Def f es) = unfoldDefinitionE steps True unfoldCorecursion (Def f []) f es
+    unfoldCorecursion steps v          = reduceB' steps v
+
+    -- | If the first argument is 'True', then a single delayed clause may
+    -- be unfolded.
+    unfoldDefinition ::
+      Int -> Bool -> (Int -> Term -> Blocked Term) ->
+      Term -> QName -> Args -> Blocked Term
+    unfoldDefinition steps unfoldDelayed keepGoing v f args =
+      unfoldDefinitionE steps unfoldDelayed keepGoing v f (map Apply args)
+
+    unfoldDefinitionE ::
+      Int -> Bool -> (Int -> Term -> Blocked Term) ->
+      Term -> QName -> Elims -> Blocked Term
+    unfoldDefinitionE steps unfoldDelayed keepGoing v f es =
+      case unfoldDefinitionStep steps unfoldDelayed (constInfo f) v f es of
+        NoReduction v    -> v
+        YesReduction _ v -> (keepGoing $! steps + 1) v
+
+    unfoldDefinitionStep :: Int -> Bool -> CompactDef -> Term -> QName -> Elims -> Reduced (Blocked Term) Term
+    unfoldDefinitionStep steps unfoldDelayed CompactDef{cdefDelayed = delayed, cdefNonterminating = nonterm, cdefDef = def, cdefRewriteRules = rewr} v0 f es =
+      let v = v0 `applyE` es
+          -- Non-terminating functions
+          -- (i.e., those that failed the termination check)
+          -- and delayed definitions
+          -- are not unfolded unless explicitely permitted.
+          dontUnfold =
+               (not allowNonTerminating && nonterm)
+            || (not unfoldDelayed       && delayed)
+      in case def of
+        CCon{cconSrcCon = c} ->
+          if hasRewriting then
+            runReduce $ rewrite (notBlocked ()) (Con c ConOSystem []) rewr es
+          else
+            NoReduction $ notBlocked $ Con c ConOSystem [] `applyE` es
+        CFun{cfunCompiled = cc} ->
+          reduceNormalE steps v0 f (map notReduced es) dontUnfold cc
+        CForce -> reduceForce unfoldDelayed v0 f es
+        CTyCon -> if hasRewriting then
+                    runReduce $ rewrite (notBlocked ()) v0 rewr es
+                  else
+                    NoReduction $ notBlocked v
+        COther -> runReduce $ R.unfoldDefinitionStep unfoldDelayed v0 f es
+      where
+        yesReduction = YesReduction NoSimplification
+
+        reduceForce :: Bool -> Term -> QName -> Elims -> Reduced (Blocked Term) Term
+        reduceForce unfoldDelayed v0 pf (Apply a : Apply b : Apply s : Apply t : Apply u : Apply f : es) =
+          case reduceB' 0 (unArg u) of
+            ub@Blocked{}        -> noGo ub
+            ub@(NotBlocked _ u)
+              | isWHNF u  -> yesReduction $ unArg f `applyE` (Apply (defaultArg u) : es)
+              | otherwise -> noGo ub
+          where
+            noGo ub = NoReduction $ ub <&> \ u -> Def pf (Apply a : Apply b : Apply s : Apply t : Apply (defaultArg u) : Apply f : es)
+
+            isWHNF u = case u of
+              Lit{}      -> True
+              Con{}      -> True
+              Lam{}      -> True
+              Pi{}       -> True
+              Sort{}     -> True
+              Level{}    -> True
+              DontCare{} -> True
+              MetaV{}    -> False
+              Var{}      -> False
+              Def q _    -> isTyCon q
+              Shared{}   -> __IMPOSSIBLE__
+
+            isTyCon q =
+              case cdefDef $ constInfo q of
+                CTyCon -> True
+                _      -> False
+
+        -- TODO: partially applied to u
+        reduceForce unfoldDelayed v0 pf es = runReduce $ R.unfoldDefinitionStep unfoldDelayed v0 f es
+
+        reduceNormalE :: Int -> Term -> QName -> [MaybeReduced Elim] -> Bool -> FastCompiledClauses -> Reduced (Blocked Term) Term
+        reduceNormalE steps v0 f es dontUnfold cc
+          | dontUnfold = defaultResult  -- non-terminating or delayed
+          | otherwise  =
+            case match' steps f [(cc, es, id)] of
+              YesReduction s u -> YesReduction s u
+              NoReduction es'  -> if hasRewriting then
+                                    runReduce $ rewrite (void es') v0 rewr (ignoreBlocking es')
+                                  else
+                                    NoReduction $ applyE v0 <$> es'
+          where defaultResult = if hasRewriting then
+                                  runReduce $ rewrite (NotBlocked AbsurdMatch ()) v0 rewr (map ignoreReduced es)
+                                else
+                                  NoReduction $ NotBlocked AbsurdMatch vfull
+                vfull         = v0 `applyE` map ignoreReduced es
+
+        match' :: Int -> QName -> FastStack -> Reduced (Blocked Elims) Term
+        match' steps f ((c, es, patch) : stack) =
+          let no blocking es = NoReduction $ blocking $ patch $ map ignoreReduced es
+              yes t          = yesReduction t
+
+          in case c of
+
+            -- impossible case
+            FFail -> no (NotBlocked AbsurdMatch) es
+
+            -- done matching
+            FDone xs t
+              -- common case: exact number of arguments
+              | m == n    -> {-# SCC match'Done #-} yes $ doSubst es t
+              -- if the function was partially applied, return a lambda
+              | m < n     -> yes $ doSubst es $ foldr lam t (drop m xs)
+              -- otherwise, just apply instantiation to body
+              -- apply the result to any extra arguments
+              | otherwise -> yes $ doSubst es0 t `applyE` map ignoreReduced es1
+              where
+                n = length xs
+                m = length es
+                useStrictSubst = rem steps strictEveryNth == 0
+                doSubst es t = strictSubst useStrictSubst (reverse $ map (unArg . argFromElim . ignoreReduced) es) t
+                (es0, es1) = splitAt n es
+                lam x t    = Lam (argInfo x) (Abs (unArg x) t)
+
+            -- splitting on the @n@th elimination
+            FCase n bs -> {-# SCC "match'Case" #-}
+              case splitAt n es of
+                -- if the @n@th elimination is not supplied, no match
+                (_, []) -> no (NotBlocked Underapplied) es
+                -- if the @n@th elimination is @e0@
+                (es0, MaybeRed red e0 : es1) ->
+                  -- get the reduced form of @e0@
+                  let eb = case red of
+                             Reduced b  -> e0 <$ b
+                             NotReduced -> unfoldCorecursionE e0
+                      e = ignoreBlocking eb
+                      -- replace the @n@th argument by its reduced form
+                      es' = es0 ++ [MaybeRed (Reduced $ () <$ eb) e] ++ es1
+                      -- if a catch-all clause exists, put it on the stack
+                      catchAllFrame stack = maybe stack (\c -> (c, es', patch) : stack) (fcatchAllBranch bs)
+                      -- If our argument is @Lit l@, we push @litFrame l@ onto the stack.
+                      litFrame l stack =
+                        case Map.lookup l (flitBranches bs) of
+                          Nothing -> stack
+                          Just cc -> (cc, es0 ++ es1, patchLit) : stack
+                      -- If our argument (or its constructor form) is @Con c ci vs@
+                      -- we push @conFrame c ci vs@ onto the stack.
+                      conFrame c ci vs stack =
+                        case lookupCon (conName c) bs of
+                          Nothing -> stack
+                          Just cc -> ( cc
+                                     , es0 ++ map (MaybeRed NotReduced . Apply) vs ++ es1
+                                     , patchCon c ci (length vs)
+                                     ) : stack
+
+                      sucFrame n stack =
+                        case fsucBranch bs of
+                          Nothing -> stack
+                          Just cc -> (cc, es0 ++ [v] ++ es1, patchCon (fromJust suc) ConOSystem 1)
+                                     : stack
+                        where v = MaybeRed (Reduced $ notBlocked ()) $ Apply $ defaultArg $ Lit $ LitNat noRange n
+
+                      -- If our argument is @Proj p@, we push @projFrame p@ onto the stack.
+                      projFrame p stack =
+                        case lookupCon p bs of
+                          Nothing -> stack
+                          Just cc -> (cc, es0 ++ es1, patchLit) : stack
+                      -- The new patch function restores the @n@th argument to @v@:
+                      -- In case we matched a literal, just put @v@ back.
+                      patchLit es = patch (es0 ++ [e] ++ es1)
+                        where (es0, es1) = splitAt n es
+                      -- In case we matched constructor @c@ with @m@ arguments,
+                      -- contract these @m@ arguments @vs@ to @Con c ci vs@.
+                      patchCon c ci m es = patch (es0 ++ [Con c ci vs <$ e] ++ es2)
+                        where (es0, rest) = splitAt n es
+                              (es1, es2)  = splitAt m rest
+                              vs          = map argFromElim es1
+                  -- Now do the matching on the @n@ths argument:
+                  in case eb of
+                    Blocked x _       -> no (Blocked x) es'
+                    NotBlocked blk elim ->
+                      case elim of
+                        Apply (Arg info v) ->
+                          case v of
+                            MetaV x _ -> no (Blocked x) es'
+
+                            -- In case of a natural number literal, try also its constructor form
+                            Lit l@(LitNat r n) ->
+                              let cFrame stack
+                                    | n > 0                  = sucFrame (n - 1) stack
+                                    | n == 0, Just z <- zero = conFrame z ConOSystem [] stack
+                                    | otherwise              = stack
+                              in match' steps f $ litFrame l $ cFrame $ catchAllFrame stack
+
+                            Lit l    -> match' steps f $ litFrame l    $ catchAllFrame stack
+                            Con c ci vs -> match' steps f $ conFrame c ci vs $ catchAllFrame $ stack
+
+                            -- Otherwise, we are stuck.  If we were stuck before,
+                            -- we keep the old reason, otherwise we give reason StuckOn here.
+                            _ -> no (NotBlocked $ stuckOn elim blk) es'
+
+                        -- In case of a projection, push the projFrame
+                        Proj _ p -> match' steps f $ projFrame p stack
+
+
+        -- If we reach the empty stack, then pattern matching was incomplete
+        match' _ f [] = {- new line here since __IMPOSSIBLE__ does not like the ' in match' -}
+          runReduce $
+            traceSLn "impossible" 10
+              ("Incomplete pattern matching when applying " ++ show f)
+              __IMPOSSIBLE__
diff --git a/src/full/Agda/TypeChecking/Reduce/Fast.hs-boot b/src/full/Agda/TypeChecking/Reduce/Fast.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/full/Agda/TypeChecking/Reduce/Fast.hs-boot
@@ -0,0 +1,8 @@
+
+module Agda.TypeChecking.Reduce.Fast where
+
+import Agda.Syntax.Internal
+import Agda.TypeChecking.Monad.Base
+
+fastReduce :: Bool -> Term -> ReduceM (Blocked Term)
+
diff --git a/src/full/Agda/TypeChecking/Reduce/Monad.hs b/src/full/Agda/TypeChecking/Reduce/Monad.hs
--- a/src/full/Agda/TypeChecking/Reduce/Monad.hs
+++ b/src/full/Agda/TypeChecking/Reduce/Monad.hs
@@ -1,7 +1,4 @@
 {-# LANGUAGE CPP              #-}
-{-# LANGUAGE FlexibleContexts #-}
-{-# LANGUAGE RankNTypes       #-}
-{-# LANGUAGE TupleSections    #-}
 
 {-# OPTIONS_GHC -fno-warn-orphans #-}
 
@@ -12,7 +9,6 @@
   , getConstInfo
   , isInstantiatedMeta
   , lookupMeta
-  , reportSDoc, reportSLn
   , traceSLn, traceSDoc
   , askR, applyWhenVerboseS
   ) where
@@ -79,10 +75,12 @@
   return $ fromMaybe v $ constructorForm' mz ms v
 
 enterClosure :: Closure a -> (a -> ReduceM b) -> ReduceM b
-enterClosure (Closure sig env scope x) f = localR (mapRedEnvSt inEnv inState) (f x)
+enterClosure (Closure sig env scope pars x) f = localR (mapRedEnvSt inEnv inState) (f x)
   where
     inEnv   e = env { envAllowDestructiveUpdate = envAllowDestructiveUpdate e }
-    inState s = set stScope scope s   -- TODO: use the signature here? would that fix parts of issue 118?
+    inState s =
+      -- TODO: use the signature here? would that fix parts of issue 118?
+      set stScope scope $ set stModuleParameters pars s
 
 withFreshR :: HasFresh i => (i -> ReduceM a) -> ReduceM a
 withFreshR f = do
@@ -127,7 +125,6 @@
   mv <- lookupMeta i
   return $ case mvInstantiation mv of
     InstV{} -> True
-    InstS{} -> True
     _       -> False
 
 -- | Run a computation if a certain verbosity level is activated.
@@ -135,12 +132,6 @@
 --   Precondition: The level must be non-negative.
 verboseS :: VerboseKey -> Int -> ReduceM () -> ReduceM ()
 verboseS k n action = whenM (hasVerbosity k n) action
-
-reportSDoc :: VerboseKey -> Int -> TCM Doc -> ReduceM ()
-reportSDoc k n doc = return () -- Cannot implement this!
-
-reportSLn :: VerboseKey -> Int -> String -> ReduceM ()
-reportSLn k n s = return () -- Cannot implement this!
 
 -- | Apply a function if a certain verbosity level is activated.
 --
diff --git a/src/full/Agda/TypeChecking/Rewriting.hs b/src/full/Agda/TypeChecking/Rewriting.hs
--- a/src/full/Agda/TypeChecking/Rewriting.hs
+++ b/src/full/Agda/TypeChecking/Rewriting.hs
@@ -1,7 +1,7 @@
 {-# LANGUAGE CPP               #-}
-{-# LANGUAGE FlexibleInstances #-}
-{-# LANGUAGE PatternGuards     #-}
 
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+
 -- | Rewriting with arbitrary rules.
 --
 --   The user specifies a relation symbol by the pragma
@@ -47,7 +47,7 @@
 
 import Control.Applicative hiding (empty)
 import Control.Monad
-import Control.Monad.Reader (local)
+import Control.Monad.Reader (local, asks)
 
 import Data.Foldable ( Foldable, foldMap )
 import Data.IntSet (IntSet)
@@ -64,6 +64,7 @@
 import Agda.TypeChecking.Monad.Builtin
 import Agda.TypeChecking.EtaContract
 import Agda.TypeChecking.Free
+import Agda.TypeChecking.Free.Lazy
 import Agda.TypeChecking.MetaVars
 import Agda.TypeChecking.Conversion
 import Agda.TypeChecking.Pretty
@@ -74,11 +75,16 @@
 import qualified Agda.TypeChecking.Reduce.Monad as Red
 
 import Agda.Utils.Functor
+import qualified Agda.Utils.HashMap as HMap
+import Agda.Utils.Lens
+import Agda.Utils.List
 import Agda.Utils.Maybe
 import Agda.Utils.Monad
 import Agda.Utils.Null
 import Agda.Utils.Singleton
 import Agda.Utils.Size
+import Agda.Utils.Lens
+import qualified Agda.Utils.HashMap as HMap
 
 #include "undefined.h"
 import Agda.Utils.Impossible
@@ -89,7 +95,7 @@
 
 -- | Check that the name given to the BUILTIN REWRITE is actually
 --   a relation symbol.
---   I.e., its type should be of the form @Δ → (lhs rhs : A) → Set ℓ@.
+--   I.e., its type should be of the form @Δ → (lhs : A) (rhs : B) → Set ℓ@.
 --   Note: we do not care about hiding/non-hiding of lhs and rhs.
 verifyBuiltinRewrite :: Term -> Type -> TCM ()
 verifyBuiltinRewrite v t = do
@@ -101,13 +107,9 @@
   caseMaybeM (relView t)
     (failure $ text "because it should accept at least two arguments") $
     \ (RelView tel delta a b core) -> do
+    unless (visible a && visible b) $ failure $ text "because its two final arguments are not both visible."
     case ignoreSharing (unEl core) of
-      Sort{} -> do
-        -- Check that the types of the last two arguments are equal.
-        unlessM (tryConversion $
-                   inTopContext $ addContext tel $ escapeContext 1 $
-                     equalType (raise 1 a) b) $
-          failure $ text $ "because the types of the last two arguments are different"
+      Sort{}   -> return ()
       Con{}    -> __IMPOSSIBLE__
       Level{}  -> __IMPOSSIBLE__
       Lam{}    -> __IMPOSSIBLE__
@@ -120,8 +122,8 @@
 data RelView = RelView
   { relViewTel   :: Telescope  -- ^ The whole telescope @Δ, t, t'@.
   , relViewDelta :: ListTel    -- ^ @Δ@.
-  , relViewType  :: Type       -- ^ @t@.
-  , relViewType' :: Type       -- ^ @t'@.
+  , relViewType  :: Dom Type   -- ^ @t@.
+  , relViewType' :: Dom Type   -- ^ @t'@.
   , relViewCore  :: Type       -- ^ @core@.
   }
 
@@ -133,7 +135,7 @@
   let n                = size tel
       (delta, lastTwo) = splitAt (n - 2) $ telToList tel
   if size lastTwo < 2 then return Nothing else do
-    let [a, b] = snd . unDom <$> lastTwo
+    let [a, b] = fmap snd <$> lastTwo
     return $ Just $ RelView tel delta a b core
 
 -- | Add @q : Γ → rel us lhs rhs@ as rewrite rule
@@ -178,8 +180,6 @@
         [ prettyTCM q , text " is not a legal rewrite rule, since the left-hand side is neither a defined symbol nor a constructor" ]
   let failureFreeVars xs = typeError . GenericDocError =<< hsep
         [ prettyTCM q , text " is not a legal rewrite rule, since the following variables are not bound by the left hand side: " , prettyList_ (map (prettyTCM . var) $ IntSet.toList xs) ]
-  let failureLhsReduction lhs = typeError . GenericDocError =<< hsep
-        [ prettyTCM q , text " is not a legal rewrite rule, since the left-hand side " , prettyTCM lhs , text " has top-level reductions" ]
   let failureIllegalRule = typeError . GenericDocError =<< hsep
         [ prettyTCM q , text " is not a legal rewrite rule" ]
 
@@ -198,28 +198,44 @@
       gamma1 <- instantiateFull gamma1
       let gamma = gamma0 `abstract` gamma1
 
-      unless (null $ allMetas (telToList gamma1)) failureMetas
+      unless (null $ allMetas (telToList gamma1)) $ do
+        reportSDoc "rewriting" 30 $ text "metas in gamma1: " <+> text (show $ allMetas $ telToList gamma1)
+        failureMetas
 
-      -- Find head symbol f of the lhs.
-      f <- case ignoreSharing lhs of
-        Def f es -> return f
-        Con c vs -> return $ conName c
+      -- Find head symbol f of the lhs and its arguments.
+      (f , hd , es) <- case ignoreSharing lhs of
+        Def f es -> return (f , Def f , es)
+        Con c ci vs -> do
+          let hd = Con c ci . fromMaybe __IMPOSSIBLE__ . allApplyElims
+          return (conName c , hd  , map Apply vs)
         _        -> failureNotDefOrCon
 
       rew <- addContext gamma1 $ do
-        -- Normalize lhs: we do not want to match redexes.
-        lhs <- normaliseArgs lhs
-        unlessM (isNormal lhs) $ failureLhsReduction lhs
+        -- Normalize lhs args: we do not want to match redexes.
+        es <- etaContract =<< normalise es
+        checkNoLhsReduction f (hd es)
 
         -- Normalize rhs: might be more efficient.
         rhs <- etaContract =<< normalise rhs
-        unless (null $ allMetas (lhs, rhs, b)) failureMetas
-        pat <- patternFrom 0 lhs
+        unless (null $ allMetas (es, rhs, b)) $ do
+          reportSDoc "rewriting" 30 $ text "metas in lhs: " <+> text (show $ allMetas es)
+          reportSDoc "rewriting" 30 $ text "metas in rhs: " <+> text (show $ allMetas rhs)
+          reportSDoc "rewriting" 30 $ text "metas in b  : " <+> text (show $ allMetas b)
+          failureMetas
+        ps <- patternFrom Relevant 0 es
+        reportSDoc "rewriting" 30 $
+          text "Pattern generated from lhs: " <+> prettyTCM (PDef f ps)
 
         -- check that FV(rhs) ⊆ nlPatVars(lhs)
-        unlessNull (allFreeVars rhs IntSet.\\ nlPatVars pat) failureFreeVars
+        let freeVars  = usedArgs gamma1 `IntSet.union` allFreeVars (ps,rhs)
+            boundVars = nlPatVars ps
+        reportSDoc "rewriting" 40 $
+          text "variables bound by the pattern: " <+> text (show boundVars)
+        reportSDoc "rewriting" 40 $
+          text "variables free in the rewrite rule: " <+> text (show freeVars)
+        unlessNull (freeVars IntSet.\\ boundVars) failureFreeVars
 
-        return $ RewriteRule q gamma pat rhs b
+        return $ RewriteRule q gamma f ps rhs (unDom b)
 
       reportSDoc "rewriting" 10 $
         text "considering rewrite rule " <+> prettyTCM rew
@@ -238,43 +254,83 @@
 
     _ -> failureWrongTarget
   where
-    normaliseArgs :: Term -> TCM Term
-    normaliseArgs v = case ignoreSharing v of
-      Def f es -> Def f <$> do etaContract =<< normalise es
-      Con c vs -> Con c <$> do etaContract =<< normalise vs
-      _ -> __IMPOSSIBLE__
-
-    isNormal :: Term -> TCM Bool
-    isNormal v = do
+    checkNoLhsReduction :: QName -> Term -> TCM ()
+    checkNoLhsReduction f v = do
       v' <- normalise v
-      return $ v == v'
+      unless (v == v') $ do
+        reportSDoc "rewriting" 20 $ text "v  = " <+> text (show v)
+        reportSDoc "rewriting" 20 $ text "v' = " <+> text (show v')
+        -- Andreas, 2016-06-01, issue 1997
+        -- A reason for a reduction of the lhs could be that
+        -- the rewrite rule has already been added.
+        -- In this case, we want a nicer error message.
+        checkNotAlreadyAdded f
+        typeError . GenericDocError =<< fsep
+          [ prettyTCM q <+> text " is not a legal rewrite rule, since the left-hand side "
+          , prettyTCM v <+> text " reduces to " <+> prettyTCM v' ]
 
+    checkNotAlreadyAdded :: QName -> TCM ()
+    checkNotAlreadyAdded f = do
+      rews <- getRewriteRulesFor f
+      -- check if q is already an added rewrite rule
+      when (any ((q ==) . rewName) rews) $
+        typeError . GenericDocError =<< do
+          text "Rewrite rule " <+> prettyTCM q <+> text " has already been added"
+
+    usedArgs :: Telescope -> IntSet
+    usedArgs tel = IntSet.fromList $ map unDom $ usedIxs
+      where
+        n = size tel
+        allIxs = zipWith ($>) (flattenTel tel) (downFrom n)
+        usedIxs = filter (not . unused . getRelevance) allIxs
+        unused UnusedArg{} = True
+        unused _           = False
+
 -- | Append rewrite rules to a definition.
 addRewriteRules :: QName -> RewriteRules -> TCM ()
 addRewriteRules f rews = do
   reportSDoc "rewriting" 10 $ text "rewrite rule ok, adding it to the definition of " <+> prettyTCM f
-  modifySignature $ addRewriteRulesFor f rews
+  let matchables = getMatchables rews
+  reportSDoc "rewriting" 30 $ text "matchable symbols: " <+> prettyTCM matchables
+  modifySignature $ addRewriteRulesFor f rews matchables
   --rules <- getRewriteRulesFor f
   --reportSDoc "rewriting" 20 $ vcat
   --  [ text "rewrite rules for " <+> prettyTCM f <+> text ":"
   --  , vcat (map prettyTCM rules)
   --  ]
 
--- | @rewriteWith t v rew@
---   tries to rewrite @v : t@ with @rew@, returning the reduct if successful.
-rewriteWith :: Maybe Type -> Term -> RewriteRule -> ReduceM (Either (Blocked Term) Term)
-rewriteWith mt v rew@(RewriteRule q gamma lhs rhs b) = do
+-- | Sledgehammer approach to local rewrite rules. Rebind them after each
+--   left-hand side (which scrambles the context).
+rebindLocalRewriteRules :: TCM ()
+rebindLocalRewriteRules = do
+  current <- currentModule
+  ruleMap <- use $ stSignature . sigRewriteRules
+  let isLocal r = m == current || m `isSubModuleOf` current
+        where m = qnameModule $ rewName r
+      ruleMap' = HMap.map (filter (not . isLocal)) ruleMap
+      locals = map rewName $ filter isLocal $ concat $ map reverse $ HMap.elems ruleMap
+  stSignature . sigRewriteRules .= ruleMap'
+  mapM_ addRewriteRule locals
+
+-- | @rewriteWith t f es rew@
+--   tries to rewrite @f es : t@ with @rew@, returning the reduct if successful.
+rewriteWith :: Maybe Type
+            -> Term
+            -> RewriteRule
+            -> Elims
+            -> ReduceM (Either (Blocked Term) Term)
+rewriteWith mt v rew@(RewriteRule q gamma _ ps rhs b) es = do
   Red.traceSDoc "rewriting" 75 (sep
-    [ text "attempting to rewrite term " <+> prettyTCM v
+    [ text "attempting to rewrite term " <+> prettyTCM (v `applyE` es)
     , text " with rule " <+> prettyTCM rew
     ]) $ do
-    result <- nonLinMatch gamma lhs v
+    result <- nonLinMatch gamma ps es
     case result of
-      Left block -> return $ Left $ const v <$> block
+      Left block -> return $ Left $ block $> v `applyE` es -- TODO: remember reductions
       Right sub  -> do
         let v' = applySubst sub rhs
         Red.traceSDoc "rewriting" 70 (sep
-          [ text "rewrote " <+> prettyTCM v
+          [ text "rewrote " <+> prettyTCM (v `applyE` es)
           , text " to " <+> prettyTCM v'
           ]) $ return $ Right v'
 
@@ -304,39 +360,29 @@
     unfreezeMetas' (`elem` ms)
     return res-}
 
--- | @rewrite t@ tries to rewrite a reduced term.
-rewrite :: Blocked Term -> ReduceM (Either (Blocked Term) Term)
-rewrite bv = ifNotM (optRewriting <$> pragmaOptions) (return $ Left bv) $ {- else -} do
-  let v     = ignoreBlocking bv
-  case ignoreSharing v of
-    -- We only rewrite @Def@s and @Con@s.
-    Def f es -> rew f (Def f) es
-    Con c vs -> rew (conName c) hd (Apply <$> vs)
-      where hd es = Con c $ fromMaybe __IMPOSSIBLE__ $ allApplyElims es
-    _ -> return $ Left bv
+-- | @rewrite b v rules es@ tries to rewrite @v@ applied to @es@ with the
+--   rewrite rules @rules@. @b@ is the default blocking tag.
+rewrite :: Blocked_ -> Term -> RewriteRules -> Elims -> ReduceM (Reduced (Blocked Term) Term)
+rewrite block v rules es = do
+  rewritingAllowed <- optRewriting <$> pragmaOptions
+  if (rewritingAllowed && not (null rules)) then
+    loop block rules =<< instantiateFull' es
+  else
+    return $ NoReduction (block $> v `applyE` es)
   where
-    -- Try all rewrite rules for f.
-    rew :: QName -> (Elims -> Term) -> Elims -> ReduceM (Either (Blocked Term) Term)
-    rew f hd es = do
-      rules <- getRewriteRulesFor f
-      case rules of
-        [] -> return $ Left $ bv $> hd es
-        _  -> do
-          es <- instantiateFull' es
-          loop (void bv) es rules
-      where
-      loop :: Blocked_ -> Elims -> RewriteRules -> ReduceM (Either (Blocked Term) Term)
-      loop block es [] = return $ Left $ block $> hd es
-      loop block es (rew:rews)
-       | let n = rewArity rew, length es >= n = do
-            let (es1, es2) = List.genericSplitAt n es
-            result <- rewriteWith Nothing (hd es1) rew
-            case result of
-              Left (Blocked m u)    -> loop (block `mappend` Blocked m ()) es rews
-              Left (NotBlocked _ _) -> loop block es rews
-              Right w               -> return $ Right $ w `applyE` es2
-       | otherwise = loop (block `mappend` NotBlocked Underapplied ()) es rews
+    loop :: Blocked_ -> RewriteRules -> Elims -> ReduceM (Reduced (Blocked Term) Term)
+    loop block [] es = return $ NoReduction $ block $> v `applyE` es
+    loop block (rew:rews) es
+     | let n = rewArity rew, length es >= n = do
+          let (es1, es2) = List.genericSplitAt n es
+          result <- rewriteWith Nothing v rew es1
+          case result of
+            Left (Blocked m u)    -> loop (block `mappend` Blocked m ()) rews es
+            Left (NotBlocked _ _) -> loop block rews es
+            Right w               -> return $ YesReduction YesSimplification $ w `applyE` es2
+     | otherwise = loop (block `mappend` NotBlocked Underapplied ()) rews es
 
+
 ------------------------------------------------------------------------
 -- * Auxiliary functions
 ------------------------------------------------------------------------
@@ -347,10 +393,13 @@
 instance (Foldable f, NLPatVars a) => NLPatVars (f a) where
   nlPatVars = foldMap nlPatVars
 
+instance NLPatVars NLPType where
+  nlPatVars (NLPType l a) = nlPatVars l `IntSet.union` nlPatVars a
+
 instance NLPatVars NLPat where
   nlPatVars p =
     case p of
-      PVar _ i  -> singleton i
+      PVar _ i _ -> singleton i
       PDef _ es -> nlPatVars es
       PWild     -> empty
       PLam _ p' -> nlPatVars $ unAbs p'
@@ -359,9 +408,7 @@
       PTerm{}   -> empty
 
 rewArity :: RewriteRule -> Int
-rewArity rew = case rewLHS rew of
-  PDef _f es -> length es
-  _          -> __IMPOSSIBLE__
+rewArity = length . rewPats
 
 -- | Erase the CtxId's of rewrite rules
 class KillCtxId a where
@@ -371,14 +418,55 @@
   killCtxId = fmap killCtxId
 
 instance KillCtxId RewriteRule where
-  killCtxId rule@RewriteRule{ rewLHS = lhs } = rule{ rewLHS = killCtxId lhs }
+  killCtxId rule@RewriteRule{ rewPats = ps } = rule{ rewPats = killCtxId ps }
 
+instance KillCtxId NLPType where
+  killCtxId (NLPType l a) = NLPType (killCtxId l) (killCtxId a)
+
 instance KillCtxId NLPat where
   killCtxId p = case p of
-    PVar _ i       -> PVar Nothing i
+    PVar _ i bvs   -> PVar Nothing i bvs
     PWild          -> p
     PDef f es      -> PDef f $ killCtxId es
     PLam i x       -> PLam i $ killCtxId x
     PPi a b        -> PPi (killCtxId a) (killCtxId b)
     PBoundVar i es -> PBoundVar i $ killCtxId es
     PTerm _        -> p
+
+-- | Get all symbols that a rewrite rule matches against
+class GetMatchables a where
+  getMatchables :: a -> [QName]
+
+instance (Foldable f, GetMatchables a) => GetMatchables (f a) where
+  getMatchables = foldMap getMatchables
+
+instance GetMatchables NLPat where
+  getMatchables p =
+    case p of
+      PVar _ _ _     -> empty
+      PWild          -> empty
+      PDef f _       -> singleton f
+      PLam _ x       -> empty
+      PPi a b        -> empty
+      PBoundVar i es -> empty
+      PTerm _        -> empty -- should be safe (I hope)
+
+instance GetMatchables RewriteRule where
+  getMatchables = getMatchables . rewPats
+
+-- Only computes free variables that are not bound (i.e. those in a PTerm)
+instance Free' NLPat c where
+  freeVars' p = case p of
+    PVar _ _ _ -> mempty
+    PWild -> mempty
+    PDef _ es -> freeVars' es
+    PLam _ u -> freeVars' u
+    PPi a b -> freeVars' (a,b)
+    PBoundVar _ es -> freeVars' es
+    PTerm t -> freeVars' t
+
+instance Free' NLPType c where
+  freeVars' (NLPType l a) =
+    ifM ((IgnoreNot ==) <$> asks feIgnoreSorts)
+      {- then -} (freeVars' (l, a))
+      {- else -} (freeVars' a)
diff --git a/src/full/Agda/TypeChecking/Rewriting.hs-boot b/src/full/Agda/TypeChecking/Rewriting.hs-boot
--- a/src/full/Agda/TypeChecking/Rewriting.hs-boot
+++ b/src/full/Agda/TypeChecking/Rewriting.hs-boot
@@ -4,4 +4,4 @@
 import Agda.TypeChecking.Monad.Base
 
 verifyBuiltinRewrite :: Term -> Type -> TCM ()
-rewrite :: Blocked Term -> ReduceM (Either (Blocked Term) Term)
+rewrite :: Blocked_ -> Term -> RewriteRules -> Elims -> ReduceM (Reduced (Blocked Term) Term)
diff --git a/src/full/Agda/TypeChecking/Rewriting/NonLinMatch.hs b/src/full/Agda/TypeChecking/Rewriting/NonLinMatch.hs
--- a/src/full/Agda/TypeChecking/Rewriting/NonLinMatch.hs
+++ b/src/full/Agda/TypeChecking/Rewriting/NonLinMatch.hs
@@ -1,9 +1,6 @@
-{-# LANGUAGE CPP                   #-}
-{-# LANGUAGE FlexibleContexts      #-}
-{-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE PatternGuards         #-}
-{-# LANGUAGE UndecidableInstances  #-}
+{-# LANGUAGE CPP                      #-}
+{-# LANGUAGE NondecreasingIndentation #-}
+{-# LANGUAGE UndecidableInstances     #-}
 
 {- |  Non-linear matching of the lhs of a rewrite rule against a
       neutral term.
@@ -38,13 +35,13 @@
 #endif
 
 import Data.Maybe
-import Data.Functor
-import Data.Traversable hiding (for)
+import Data.Traversable (Traversable,traverse)
 import Data.IntMap (IntMap)
 import qualified Data.IntMap as IntMap
 import Data.IntSet (IntSet)
 import qualified Data.IntSet as IntSet
 import Data.List (elemIndex)
+import Data.Monoid
 
 import Agda.Syntax.Common
 import qualified Agda.Syntax.Common as C
@@ -52,18 +49,25 @@
 
 import Agda.TypeChecking.EtaContract
 import Agda.TypeChecking.Free
+import Agda.TypeChecking.Level (levelView', unLevel, reallyUnLevelView, subLevel)
 import Agda.TypeChecking.Monad
+import Agda.TypeChecking.Monad.Builtin (primLevelSuc, primLevelMax)
 import Agda.TypeChecking.Pretty
+import Agda.TypeChecking.Records (isRecordConstructor)
 import Agda.TypeChecking.Reduce
 import Agda.TypeChecking.Reduce.Monad
 import Agda.TypeChecking.Substitute
+import Agda.TypeChecking.Telescope (permuteTel)
 
 import Agda.Utils.Either
 import Agda.Utils.Except
 import Agda.Utils.Functor
+import Agda.Utils.Lens
+import Agda.Utils.List
 import Agda.Utils.Maybe
 import Agda.Utils.Monad
 import Agda.Utils.Null
+import Agda.Utils.Permutation
 import Agda.Utils.Singleton
 import Agda.Utils.Size
 
@@ -72,61 +76,120 @@
 
 -- | Turn a term into a non-linear pattern, treating the
 --   free variables as pattern variables.
---   The first argument is the number of bound variables (from pattern lambdas).
+--   The first argument indicates the relevance we are working under: if this
+--   is Irrelevant, then we construct a pattern that never fails to match.
+--   The second argument is the number of bound variables (from pattern lambdas).
 
 class PatternFrom a b where
-  patternFrom :: Int -> a -> TCM b
+  patternFrom :: Relevance -> Int -> a -> TCM b
 
 instance (PatternFrom a b) => PatternFrom [a] [b] where
-  patternFrom k = traverse $ patternFrom k
+  patternFrom r k = traverse $ patternFrom r k
 
 instance (PatternFrom a b) => PatternFrom (Arg a) (Arg b) where
-  patternFrom k = traverse $ patternFrom k
+  patternFrom r k u = let r' = r `composeRelevance` getRelevance u
+                      in  traverse (patternFrom r' k) u
 
-instance (PatternFrom a b) => PatternFrom (Elim' a) (Elim' b) where
-  patternFrom k = traverse $ patternFrom k
+instance (PatternFrom a NLPat) => PatternFrom (Elim' a) (Elim' NLPat) where
+  patternFrom r k (Apply u) = let r' = r `composeRelevance` getRelevance u
+                              in  Apply <$> traverse (patternFrom r' k) u
+  patternFrom r k (Proj o f) = return $ Proj o f
 
 instance (PatternFrom a b) => PatternFrom (Dom a) (Dom b) where
-  patternFrom k = traverse $ patternFrom k
+  patternFrom r k = traverse $ patternFrom r k
 
-instance (PatternFrom a b) => PatternFrom (Type' a) (Type' b) where
-  patternFrom k = traverse $ patternFrom k
+instance PatternFrom Type NLPType where
+  patternFrom r k a = NLPType <$> patternFrom r k (getSort a)
+                              <*> patternFrom r k (unEl a)
 
+instance PatternFrom Sort NLPat where
+  patternFrom r k s = do
+    s <- reduce s
+    let done = return PWild
+    case s of
+      Type l   -> patternFrom Irrelevant k (Level l)
+      Prop     -> done
+      Inf      -> done
+      SizeUniv -> done
+      DLub _ _ -> done
+
 instance PatternFrom Term NLPat where
-  patternFrom k v = do
-    v <- reduce v
-    let done = return $ PTerm v
+  patternFrom r k v = do
+    v <- unLevel =<< reduce v
+    let done = if isIrrelevant r then
+                 return PWild
+               else
+                 return $ PTerm v
     case ignoreSharing v of
       Var i es
-       | i < k     -> PBoundVar i <$> patternFrom k es
-       | null es   -> do
-           let i' = i-k
-           -- Pattern variables are labeled with their context id, because they
-           -- can only be instantiated once they're no longer bound by the
-           -- context (see Issue 1652).
-           id <- (!! i') <$> getContextId
-           return $ PVar (Just id) i'
-       | otherwise -> done
-      Lam i t  -> PLam i <$> patternFrom k t
+       | i < k     -> PBoundVar i <$> patternFrom r k es
+       | otherwise -> do
+         -- The arguments of `var i` should be distinct bound variables
+         -- in order to build a Miller pattern
+         let mbvs = mfilter fastDistinct $ forM es $ \e -> do
+                      e <- isApplyElim e
+                      case ignoreSharing $ unArg e of
+                        Var j [] | j < k -> Just $ e $> j
+                        _                -> Nothing
+         case mbvs of
+           Just bvs -> do
+             let i' = i-k
+                 allBoundVars = IntSet.fromList (downFrom k)
+                 ok = not (isIrrelevant r) ||
+                      IntSet.fromList (map unArg bvs) == allBoundVars
+             -- Pattern variables are labeled with their context id, because they
+             -- can only be instantiated once they're no longer bound by the
+             -- context (see Issue 1652).
+             id <- (!! i') <$> getContextId
+             if ok then return (PVar (Just id) i' bvs) else done
+           Nothing -> done
+      Lam i t  -> PLam i <$> patternFrom r k t
       Lit{}    -> done
-      Def f es -> PDef f <$> patternFrom k es
-      Con c vs -> PDef (conName c) <$> patternFrom k (Apply <$> vs)
-      Pi a b   -> PPi <$> patternFrom k a <*> patternFrom k b
-      Sort{}   -> done
-      Level{}  -> return PWild   -- TODO: unLevel and continue
+      Def f es | isIrrelevant r -> done
+      Def f es -> do
+        Def lsuc [] <- ignoreSharing <$> primLevelSuc
+        Def lmax [] <- ignoreSharing <$> primLevelMax
+        case es of
+          [x]     | f == lsuc -> done
+          [x , y] | f == lmax -> done
+          _                   -> PDef f <$> patternFrom r k es
+      Con c ci vs | isIrrelevant r -> do
+        mr <- isRecordConstructor (conName c)
+        case mr of
+          Just (_, def) | recEtaEquality def ->
+            PDef (conName c) <$> patternFrom r k (Apply <$> vs)
+          _ -> done
+      Con c ci vs -> PDef (conName c) <$> patternFrom r k (Apply <$> vs)
+      Pi a b | isIrrelevant r -> done
+      Pi a b   -> PPi <$> patternFrom r k a <*> patternFrom r k b
+      Sort s   -> done
+      Level l  -> __IMPOSSIBLE__
       DontCare{} -> return PWild
       MetaV{}    -> __IMPOSSIBLE__
       Shared{}   -> __IMPOSSIBLE__
 
 instance (PatternFrom a b) => PatternFrom (Abs a) (Abs b) where
-  patternFrom k (Abs name x)   = Abs name   <$> patternFrom (k+1) x
-  patternFrom k (NoAbs name x) = NoAbs name <$> patternFrom k x
+  patternFrom r k (Abs name x)   = Abs name   <$> patternFrom r (k+1) x
+  patternFrom r k (NoAbs name x) = NoAbs name <$> patternFrom r k x
 
 -- | Monad for non-linear matching.
 type NLM = ExceptT Blocked_ (StateT NLMState ReduceM)
 
-type NLMState = (Sub, PostponedEquations)
+data NLMState = NLMState
+  { _nlmSub   :: Sub
+  , _nlmEqs   :: PostponedEquations
+  }
 
+instance Null NLMState where
+  empty  = NLMState { _nlmSub = empty , _nlmEqs = empty }
+  null s = null (s^.nlmSub) && null (s^.nlmEqs)
+
+nlmSub :: Lens' Sub NLMState
+nlmSub f s = f (_nlmSub s) <&> \x -> s {_nlmSub = x}
+
+nlmEqs :: Lens' PostponedEquations NLMState
+nlmEqs f s = f (_nlmEqs s) <&> \x -> s {_nlmEqs = x}
+
 liftRed :: ReduceM a -> NLM a
 liftRed = lift . lift
 
@@ -150,19 +213,24 @@
 matchingBlocked = throwError
 
 -- | Add substitution @i |-> v@ to result of matching.
-tellSub :: Int -> Term -> NLM ()
-tellSub i v = do
-  caseMaybeM (IntMap.lookup i <$> gets fst) (modify $ first $ IntMap.insert i v) $ \v' -> do
-    unlessM (liftRed $ equal v v') $ matchingBlocked $ NotBlocked ReallyNotBlocked () -- lies!
+tellSub :: Relevance -> Int -> Term -> NLM ()
+tellSub r i v = do
+  old <- IntMap.lookup i <$> use nlmSub
+  case old of
+    Nothing -> nlmSub %= IntMap.insert i (r,v)
+    Just (r',v')
+      | isIrrelevant r  -> return ()
+      | isIrrelevant r' -> nlmSub %= IntMap.insert i (r,v)
+      | otherwise       -> whenJustM (liftRed $ equal v v') matchingBlocked
 
 tellEq :: Telescope -> Telescope -> Term -> Term -> NLM ()
 tellEq gamma k u v =
   traceSDocNLM "rewriting" 60 (sep
                [ text "adding equality between" <+> addContext (gamma `abstract` k) (prettyTCM u)
                , text " and " <+> addContext k (prettyTCM v) ]) $ do
-  modify $ second $ (PostponedEquation k u v:)
+  nlmEqs %= (PostponedEquation k u v:)
 
-type Sub = IntMap Term
+type Sub = IntMap (Relevance, Term)
 
 -- | Matching against a term produces a constraint
 --   which we have to verify after applying
@@ -178,25 +246,28 @@
 --   returning a substitution.
 
 class Match a b where
-  match :: Telescope  -- ^ The telescope of pattern variables
+  match :: Relevance  -- ^ Are we currently matching in an irrelevant context?
+        -> Telescope  -- ^ The telescope of pattern variables
         -> Telescope  -- ^ The telescope of lambda-bound variables
         -> a          -- ^ The pattern to match
         -> b          -- ^ The term to be matched against the pattern
         -> NLM ()
 
 instance Match a b => Match [a] [b] where
-  match gamma k ps vs
-    | length ps == length vs = zipWithM_ (match gamma k) ps vs
+  match r gamma k ps vs
+    | length ps == length vs = zipWithM_ (match r gamma k) ps vs
     | otherwise              = matchingBlocked $ NotBlocked ReallyNotBlocked ()
 
 instance Match a b => Match (Arg a) (Arg b) where
-  match gamma k p v = match gamma k (unArg p) (unArg v)
+  match r gamma k p v = let r' = r `composeRelevance` getRelevance p
+                        in  match r' gamma k (unArg p) (unArg v)
 
 instance Match a b => Match (Elim' a) (Elim' b) where
-  match gamma k p v =
+  match r gamma k p v =
    case (p, v) of
-     (Apply p, Apply v) -> match gamma k p v
-     (Proj x , Proj y ) -> if x == y then return () else
+     (Apply p, Apply v) -> let r' = r `composeRelevance` getRelevance p
+                           in  match r' gamma k p v
+     (Proj _ x, Proj _ y) -> if x == y then return () else
                              traceSDocNLM "rewriting" 80 (sep
                                [ text "mismatch between projections " <+> prettyTCM x
                                , text " and " <+> prettyTCM y ]) mzero
@@ -204,32 +275,50 @@
      (Proj{} , Apply{}) -> __IMPOSSIBLE__
 
 instance Match a b => Match (Dom a) (Dom b) where
-  match gamma k p v = match gamma k (C.unDom p) (C.unDom v)
+  match r gamma k p v = match r gamma k (C.unDom p) (C.unDom v)
 
-instance Match a b => Match (Type' a) (Type' b) where
-  match gamma k p v = match gamma k (unEl p) (unEl v)
+instance Match NLPType Type where
+  match r gamma k (NLPType lp p) (El s a) = match r gamma k lp s >> match r gamma k p a
 
-instance (Match a b, Subst t1 a, Subst t2 b) => Match (Abs a) (Abs b) where
-  match gamma k (Abs n p) (Abs _ v) = match gamma (ExtendTel dummyDom (Abs n k)) p v
-  match gamma k (Abs n p) (NoAbs _ v) = match gamma (ExtendTel dummyDom (Abs n k)) p (raise 1 v)
-  match gamma k (NoAbs n p) (Abs _ v) = match gamma (ExtendTel dummyDom (Abs n k)) (raise 1 p) v
-  match gamma k (NoAbs _ p) (NoAbs _ v) = match gamma k p v
+instance Match NLPat Sort where
+  match r gamma k p s = case (p , s) of
+    (PWild , _     ) -> return ()
+    (p     , Type l) -> match Irrelevant gamma k p l
+    _                -> matchingBlocked $ NotBlocked ReallyNotBlocked ()
 
+instance (Match a b, RaiseNLP a, Subst t2 b) => Match (Abs a) (Abs b) where
+  match r gamma k (Abs n p) (Abs _ v) = match r gamma (ExtendTel dummyDom (Abs n k)) p v
+  match r gamma k (Abs n p) (NoAbs _ v) = match r gamma (ExtendTel dummyDom (Abs n k)) p (raise 1 v)
+  match r gamma k (NoAbs n p) (Abs _ v) = match r gamma (ExtendTel dummyDom (Abs n k)) (raiseNLP 1 p) v
+  match r gamma k (NoAbs _ p) (NoAbs _ v) = match r gamma k p v
+
+instance Match NLPat Level where
+  match r gamma k p l = match r gamma k p =<< liftRed (reallyUnLevelView l)
+
 instance Match NLPat Term where
-  match gamma k p v = do
+  match r gamma k p v = do
+    vb <- liftRed $ reduceB' v
     let n = size k
+        b = void vb
+        v = ignoreBlocking vb
+        prettyPat  = addContext (gamma `abstract` k) (prettyTCM (raisePatVars n p))
+        prettyTerm = addContext k (prettyTCM v)
     traceSDocNLM "rewriting" 100 (sep
-      [ text "matching" <+> addContext (gamma `abstract` k) (prettyTCM (raisePatVars n p))
-      , text "with" <+> addContext k (prettyTCM v)]) $ do
+      [ text "matching" <+> prettyPat
+      , text "with" <+> prettyTerm]) $ do
     let yes = return ()
         no msg =
           traceSDocNLM "rewriting" 80 (sep
-            [ text "mismatch between" <+> addContext (gamma `abstract` k) (prettyTCM (raisePatVars n p))
-            , text " and " <+> addContext k (prettyTCM v)
-            , msg ]) mzero
+            [ text "mismatch between" <+> prettyPat
+            , text " and " <+> prettyTerm
+            , msg ]) $ matchingBlocked b
+        block b' =
+          traceSDocNLM "rewriting" 80 (sep
+            [ text "matching blocked on meta"
+            , text (show b) ]) $ matchingBlocked (b `mappend` b')
     case p of
       PWild  -> yes
-      PVar id i -> do
+      PVar id i bvs -> do
         -- If the variable is still bound by the current context, we cannot
         -- instantiate it so it has to match on the nose (see Issue 1652).
         ctx <- zip <$> getContextNames <*> getContextId
@@ -237,59 +326,118 @@
         cid <- getContextId
         case (maybe Nothing (\i -> elemIndex i cid) id) of
           Just j -> if v == var (j+n)
-                    then tellSub i (var j)
+                    then tellSub r i (var j)
                     else no (text $ "(CtxId = " ++ show id ++ ")")
           Nothing -> do
-            let boundVarOccs :: FreeVars
-                boundVarOccs = runFree (\var@(i,_) -> if i < n then singleton var else empty) IgnoreNot v
-            if null (rigidVars boundVarOccs)
-               then if null (flexibleVars boundVarOccs)
-                    then tellSub i (raise (-n) v)
-                    else matchingBlocked $ foldMap (foldMap $ \m -> Blocked m ()) $ flexibleVars boundVarOccs
-               else no (text "")
+            let allowedVars :: IntSet
+                allowedVars = IntSet.fromList (map unArg bvs)
+                isBadVar :: Int -> Bool
+                isBadVar i = i < n && not (i `IntSet.member` allowedVars)
+                perm :: Permutation
+                perm = Perm n $ reverse $ map unArg $ bvs
+                tel :: Telescope
+                tel = permuteTel perm k
+            ok <- liftRed $ reallyFree isBadVar v
+            case ok of
+              Left b         -> block b
+              Right Nothing  -> no (text "")
+              Right (Just v) -> tellSub r i $ teleLam tel $ renameP __IMPOSSIBLE__ perm v
       PDef f ps -> do
-        v <- liftRed $ constructorForm v
+        v <- liftRed $ constructorForm =<< unLevel v
         case ignoreSharing v of
           Def f' es
-            | f == f'   -> matchArgs gamma k ps es
-            | otherwise -> no (text "")
-          Con c vs
-            | f == conName c -> matchArgs gamma k ps (Apply <$> vs)
-            | otherwise -> no (text "")
+            | f == f'   -> match r gamma k ps es
+          Con c _ vs
+            | f == conName c -> match r gamma k ps (Apply <$> vs)
+            | otherwise -> do -- @c@ may be a record constructor
+                mr <- liftRed $ isRecordConstructor (conName c)
+                case mr of
+                  Just (_, def) | recEtaEquality def -> do
+                    let fs = recFields def
+                        qs = map (fmap $ \f -> PDef f (ps ++ [Proj ProjSystem f])) fs
+                    match r gamma k qs vs
+                  _ -> no (text "")
           Lam i u -> do
-            let pbody = PDef f (raiseNLP 1 ps ++ [Apply $ Arg i $ PBoundVar 0 []])
-            body <- liftRed $ reduce' $ absBody u
-            match gamma (ExtendTel dummyDom (Abs (absName u) k)) pbody body
+            let pbody = PDef f (raiseNLP 1 ps ++ [Apply $ Arg i $ PTerm (var 0)])
+                body  = absBody u
+            match r gamma (ExtendTel dummyDom (Abs (absName u) k)) pbody body
           MetaV m es -> do
             matchingBlocked $ Blocked m ()
-          _ -> no (text "")
+          v' -> do -- @f@ may be a record constructor as well
+            mr <- liftRed $ isRecordConstructor f
+            case mr of
+              Just (_, def) | recEtaEquality def -> do
+                let fs  = recFields def
+                    ws  = map (fmap $ \f -> v `applyE` [Proj ProjSystem f]) fs
+                    qs = fromMaybe __IMPOSSIBLE__ $ allApplyElims ps
+                match r gamma k qs ws
+              _ -> no (text "")
       PLam i p' -> do
         let body = Abs (absName p') $ raise 1 v `apply` [Arg i (var 0)]
-        body <- liftRed $ reduce' body
-        match gamma k p' body
+        match r gamma k p' body
       PPi pa pb  -> case ignoreSharing v of
-        Pi a b -> do
-          (a,b) <- liftRed $ reduce' (a,b)
-          match gamma k pa a >> match gamma k pb b
+        Pi a b -> match r gamma k pa a >> match r gamma k pb b
         MetaV m es -> matchingBlocked $ Blocked m ()
         _ -> no (text "")
       PBoundVar i ps -> case ignoreSharing v of
-        Var i' es | i == i' -> matchArgs gamma k ps es
+        Var i' es | i == i' -> match r gamma k ps es
+        Con c _ vs -> do -- @c@ may be a record constructor
+          mr <- liftRed $ isRecordConstructor (conName c)
+          case mr of
+            Just (_, def) | recEtaEquality def -> do
+              let fs = recFields def
+                  qs = map (fmap $ \f -> PBoundVar i (ps ++ [Proj ProjSystem f])) fs
+              match r gamma k qs vs
+            _ -> no (text "")
+        Lam info u -> do
+          let pbody = PBoundVar i (raiseNLP 1 ps ++ [Apply $ Arg info $ PTerm (var 0)])
+              body  = absBody u
+          match r gamma (ExtendTel dummyDom (Abs (absName u) k)) pbody body
         MetaV m es -> matchingBlocked $ Blocked m ()
         _ -> no (text "")
       PTerm u -> tellEq gamma k u v
-    where
-      matchArgs :: Telescope -> Telescope -> [Elim' NLPat] -> Elims -> NLM ()
-      matchArgs gamma k ps es = match gamma k ps =<< liftRed (reduce' es)
 
+-- Checks if the given term contains any free variables that satisfy the
+-- given condition on their DBI, possibly normalizing the term in the process.
+-- Returns `Right Nothing` if there are such variables, `Right (Just v')`
+-- if there are none (where v' is the possibly normalized version of the given
+-- term) or `Left b` if the problem is blocked on a meta.
+reallyFree :: (Reduce a, Normalise a, Free' a FreeVars)
+           => (Int -> Bool) -> a -> ReduceM (Either Blocked_ (Maybe a))
+reallyFree f v = do
+    let xs = getVars v
+    if null (stronglyRigidVars xs) && null (unguardedVars xs)
+    then do
+      if null (weaklyRigidVars xs) && null (flexibleVars xs)
+         && null (irrelevantVars xs)
+      then return $ Right $ Just v
+      else do
+        bv <- normaliseB' v
+        let b  = void bv
+            v  = ignoreBlocking bv
+            xs = getVars v
+            b' = foldMap (foldMap $ \m -> Blocked m ()) $ flexibleVars xs
+        if null (stronglyRigidVars xs) && null (unguardedVars xs)
+           && null (weaklyRigidVars xs) && null (irrelevantVars xs)
+        then if null (flexibleVars xs)
+             then return $ Right $ Just v
+             else return $ Left $ b `mappend` b'
+        else return $ Right Nothing
+    else return $ Right Nothing
+  where
+    getVars v = runFree (\var@(i,_) -> if f i then singleton var else empty) IgnoreNot v
+
 makeSubstitution :: Telescope -> Sub -> Substitution
 makeSubstitution gamma sub =
   prependS __IMPOSSIBLE__ (map val [0 .. size gamma-1]) EmptyS
     where
-      val i = IntMap.lookup i sub
+      val i = case IntMap.lookup i sub of
+                Just (Irrelevant, v) -> Just $ dontCare v
+                Just (_         , v) -> Just v
+                Nothing              -> Nothing
 
-checkPostponedEquations :: Substitution -> PostponedEquations -> ReduceM Bool
-checkPostponedEquations sub eqs = andM $ for eqs $
+checkPostponedEquations :: Substitution -> PostponedEquations -> ReduceM (Maybe Blocked_)
+checkPostponedEquations sub eqs = forM' eqs $
   \ (PostponedEquation k lhs rhs) -> equal (applySubst (liftS (size k) sub) lhs) rhs
 
 -- main function
@@ -298,24 +446,39 @@
   let no msg b = traceSDoc "rewriting" 80 (sep
                    [ text "matching failed during" <+> text msg
                    , text "blocking: " <+> text (show b) ]) $ return (Left b)
-  caseEitherM (runNLM $ match gamma EmptyTel p v) (no "matching") $ \ (s, eqs) -> do
-    let sub = makeSubstitution gamma s
+  caseEitherM (runNLM $ match Relevant gamma EmptyTel p v) (no "matching") $ \ s -> do
+    let sub = makeSubstitution gamma $ s^.nlmSub
+        eqs = s^.nlmEqs
     traceSDoc "rewriting" 90 (text $ "sub = " ++ show sub) $ do
-      ifM (checkPostponedEquations sub eqs)
-        (return $ Right sub)
-        (no "checking of postponed equations" $ NotBlocked ReallyNotBlocked ()) -- more lies
+      ok <- checkPostponedEquations sub eqs
+      case ok of
+        Nothing -> return $ Right sub
+        Just b  -> no "checking of postponed equations" b
 
 -- | Untyped βη-equality, does not handle things like empty record types.
-equal :: Term -> Term -> ReduceM Bool
+--   Returns `Nothing` if the terms are equal, or `Just b` if the terms are not
+--   (where b contains information about possible metas blocking the comparison)
+
+-- TODO: implement a type-directed, lazy version of this function.
+equal :: Term -> Term -> ReduceM (Maybe Blocked_)
 equal u v = do
   (u, v) <- etaContract =<< normalise' (u, v)
-  let ok = u == v
-  if ok then return True else
+  let ok    = u == v
+      metas = allMetas (u, v)
+      block = caseMaybe (headMaybe metas)
+                (NotBlocked ReallyNotBlocked ())
+                (\m -> Blocked m ())
+  if ok then return Nothing else
     traceSDoc "rewriting" 80 (sep
       [ text "mismatch between " <+> prettyTCM u
       , text " and " <+> prettyTCM v
-      ]) $ return False
+      ]) $ return $ Just block
 
+-- | Normalise the given term but also preserve blocking tags
+--   TODO: implement a more efficient version of this.
+normaliseB' :: (Reduce t, Normalise t) => t -> ReduceM (Blocked t)
+normaliseB' = normalise' >=> reduceB'
+
 -- | Raise (bound) variables in a NLPat
 
 class RaiseNLP a where
@@ -327,6 +490,9 @@
 instance RaiseNLP a => RaiseNLP [a] where
   raiseNLPFrom c k = fmap $ raiseNLPFrom c k
 
+instance RaiseNLP a => RaiseNLP (Maybe a) where
+  raiseNLPFrom c k = fmap $ raiseNLPFrom c k
+
 instance RaiseNLP a => RaiseNLP (Arg a) where
   raiseNLPFrom c k = fmap $ raiseNLPFrom c k
 
@@ -336,8 +502,9 @@
 instance RaiseNLP a => RaiseNLP (Dom a) where
   raiseNLPFrom c k = fmap $ raiseNLPFrom c k
 
-instance RaiseNLP a => RaiseNLP (Type' a) where
-  raiseNLPFrom c k = fmap $ raiseNLPFrom c k
+instance RaiseNLP NLPType where
+  raiseNLPFrom c k (NLPType l a) =
+    NLPType (raiseNLPFrom c k l) (raiseNLPFrom c k a)
 
 instance RaiseNLP a => RaiseNLP (Abs a) where
   raiseNLPFrom c k (Abs i p)   = Abs i   $ raiseNLPFrom (c+1) k p
@@ -345,7 +512,8 @@
 
 instance RaiseNLP NLPat where
   raiseNLPFrom c k p = case p of
-    PVar _ _ -> p
+    PVar id i bvs -> let raise j = if j < c then j else j + k
+                     in PVar id i $ map (fmap raise) bvs
     PWild  -> p
     PDef f ps -> PDef f $ raiseNLPFrom c k ps
     PLam i q -> PLam i $ raiseNLPFrom c k q
@@ -353,4 +521,3 @@
     PBoundVar i ps -> let j = if i < c then i else i + k
                       in PBoundVar j $ raiseNLPFrom c k ps
     PTerm u -> PTerm $ raiseFrom c k u
-
diff --git a/src/full/Agda/TypeChecking/Rules/Builtin.hs b/src/full/Agda/TypeChecking/Rules/Builtin.hs
--- a/src/full/Agda/TypeChecking/Rules/Builtin.hs
+++ b/src/full/Agda/TypeChecking/Rules/Builtin.hs
@@ -1,7 +1,5 @@
 {-# LANGUAGE CPP                 #-}
-{-# LANGUAGE PatternGuards       #-}
 {-# LANGUAGE ScopedTypeVariables #-}
-{-# LANGUAGE TupleSections       #-}
 
 module Agda.TypeChecking.Rules.Builtin
   ( bindBuiltin
@@ -13,6 +11,8 @@
 
 import Control.Applicative hiding (empty)
 import Control.Monad
+import Control.Monad.Reader (ask)
+import Control.Monad.State (get)
 import Data.List (find)
 
 import qualified Agda.Syntax.Abstract as A
@@ -102,7 +102,22 @@
                                                 return (sort $ varSort 1))
                                                [builtinRefl])
   , (builtinHiding             |-> BuiltinData tset [builtinHidden, builtinInstance, builtinVisible])
+    -- Relevance
   , (builtinRelevance          |-> BuiltinData tset [builtinRelevant, builtinIrrelevant])
+  , (builtinRelevant           |-> BuiltinDataCons trelevance)
+  , (builtinIrrelevant         |-> BuiltinDataCons trelevance)
+    -- Associativity
+  , builtinAssoc               |-> BuiltinData tset [builtinAssocLeft, builtinAssocRight, builtinAssocNon]
+  , builtinAssocLeft           |-> BuiltinDataCons tassoc
+  , builtinAssocRight          |-> BuiltinDataCons tassoc
+  , builtinAssocNon            |-> BuiltinDataCons tassoc
+    -- Precedence
+  , builtinPrecedence          |-> BuiltinData tset [builtinPrecRelated, builtinPrecUnrelated]
+  , builtinPrecRelated         |-> BuiltinDataCons (tint --> tprec)
+  , builtinPrecUnrelated       |-> BuiltinDataCons tprec
+    -- Fixity
+  , builtinFixity              |-> BuiltinData tset [builtinFixityFixity]
+  , builtinFixityFixity        |-> BuiltinDataCons (tassoc --> tprec --> tfixity)
   , (builtinRefl               |-> BuiltinDataCons (hPi "a" (el primLevel) $
                                                     hPi "A" (return $ sort $ varSort 0) $
                                                     hPi "x" (El (varSort 1) <$> varM 0) $
@@ -136,8 +151,6 @@
   , (builtinHidden             |-> BuiltinDataCons thiding)
   , (builtinInstance           |-> BuiltinDataCons thiding)
   , (builtinVisible            |-> BuiltinDataCons thiding)
-  , (builtinRelevant           |-> BuiltinDataCons trelevance)
-  , (builtinIrrelevant         |-> BuiltinDataCons trelevance)
   , (builtinSizeUniv           |-> builtinPostulate tSizeUniv) -- SizeUniv : SizeUniv
 -- See comment on tSizeUniv: the following does not work currently.
 --  , (builtinSizeUniv           |-> builtinPostulate tSetOmega) -- SizeUniv : Setω
@@ -188,6 +201,7 @@
   , builtinAgdaTCMInferType  |-> builtinPostulate (tterm --> tTCM_ primAgdaTerm)
   , builtinAgdaTCMCheckType  |-> builtinPostulate (tterm --> ttype --> tTCM_ primAgdaTerm)
   , builtinAgdaTCMNormalise  |-> builtinPostulate (tterm --> tTCM_ primAgdaTerm)
+  , builtinAgdaTCMReduce     |-> builtinPostulate (tterm --> tTCM_ primAgdaTerm)
   , builtinAgdaTCMCatchError |-> builtinPostulate (hPi "a" tlevel $ hPi "A" (tsetL 0) $ tTCM 1 (varM 0) --> tTCM 1 (varM 0) --> tTCM 1 (varM 0))
   , builtinAgdaTCMGetContext |-> builtinPostulate (tTCM_ (unEl <$> tlist (targ ttype)))
   , builtinAgdaTCMExtendContext |-> builtinPostulate (hPi "a" tlevel $ hPi "A" (tsetL 0) $ targ ttype --> tTCM 1 (varM 0) --> tTCM 1 (varM 0))
@@ -201,6 +215,8 @@
   , builtinAgdaTCMUnquoteTerm        |-> builtinPostulate (hPi "a" tlevel $ hPi "A" (tsetL 0) $ tterm --> tTCM 1 (varM 0))
   , builtinAgdaTCMBlockOnMeta        |-> builtinPostulate (hPi "a" tlevel $ hPi "A" (tsetL 0) $ tmeta --> tTCM 1 (varM 0))
   , builtinAgdaTCMCommit             |-> builtinPostulate (tTCM_ primUnit)
+  , builtinAgdaTCMIsMacro            |-> builtinPostulate (tqname --> tTCM_ primBool)
+  , builtinAgdaTCMWithNormalisation  |-> builtinPostulate (hPi "a" tlevel $ hPi "A" (tsetL 0) $ tbool --> tTCM 1 (varM 0) --> tTCM 1 (varM 0))
   ]
   where
         (|->) = (,)
@@ -230,6 +246,7 @@
         tterm      = el primAgdaTerm
         terrorpart = el primAgdaErrorPart
         tnat       = el primNat
+        tint       = el primInteger
         tunit      = el primUnit
         tinteger   = el primInteger
         tfloat     = el primFloat
@@ -241,6 +258,9 @@
         tbool      = el primBool
         thiding    = el primHiding
         trelevance = el primRelevance
+        tassoc     = el primAssoc
+        tprec      = el primPrecedence
+        tfixity    = el primFixity
 --        tcolors    = el (list primAgdaTerm) -- TODO guilhem
         targinfo   = el primArgInfo
         ttype      = el primAgdaTerm
@@ -365,7 +385,7 @@
                 suc n  = s `apply1` n
                 choice = foldr1 (\x y -> x `catchError` \_ -> y)
             xs <- mapM freshName_ xs
-            addCtxs xs (domFromArg $ defaultArg nat) $ f apply1 zero suc (==) (===) choice
+            addContext (xs, domFromArg $ defaultArg nat) $ f apply1 zero suc (==) (===) choice
 
 
 inductiveCheck :: String -> Int -> Term -> TCM ()
@@ -397,7 +417,7 @@
   String -> A.Expr -> (QName -> Definition -> TCM Term) -> TCM ()
 bindPostulatedName builtin e m = do
   q   <- getName e
-  def <- ignoreAbstractMode $ getConstInfo q
+  def <- getConstInfo q
   case theDef def of
     Axiom {} -> bindBuiltinName builtin =<< m q def
     _        -> err
@@ -456,7 +476,7 @@
   case def of
     Record { recFields = [], recConHead = con } -> do
       bindBuiltinName builtinUnit t
-      bindBuiltinName builtinUnitUnit (Con con [])
+      bindBuiltinName builtinUnitUnit (Con con ConOSystem [])
     _ -> genericError "Builtin UNIT must be a singleton record type"
 
 bindBuiltinInfo :: BuiltinInfo -> A.Expr -> TCM ()
@@ -477,17 +497,17 @@
       BuiltinDataCons t -> do
 
         let name (Lam h b)  = name (absBody b)
-            name (Con c _)  = Con c []
+            name (Con c ci _) = Con c ci []
             name (Shared p) = name $ ignoreSharing (derefPtr p)
             name _          = __IMPOSSIBLE__
 
         e' <- checkExpr e =<< t
 
         case e of
-          A.Con _ -> return ()
+          A.Con{} -> return ()
           _       -> typeError $ BuiltinMustBeConstructor s e
 
-        let v@(Con h []) = name e'
+        let v@(Con h _ []) = name e'
             c = conName h
         when (s == builtinTrue)  $ addHaskellCode c "Bool" "True"
         when (s == builtinFalse) $ addHaskellCode c "Bool" "False"
@@ -521,7 +541,7 @@
                     "The argument to BUILTIN " ++ s ++ " must be a postulated name"
         case e of
           A.Def q -> do
-            def <- ignoreAbstractMode $ getConstInfo q
+            def <- getConstInfo q
             case theDef def of
               Axiom {} -> do
                 builtinSizeHook s q t'
@@ -552,9 +572,7 @@
     _ | Just i <- find ((b ==) . builtinName) coreBuiltins -> bindBuiltinInfo i e
     _ -> typeError $ NoSuchBuiltinName b
   where
-    nowNat b = genericError $
-      "Builtin " ++ b ++ " does no longer exist. " ++
-      "It is now bound by BUILTIN " ++ builtinNat
+    nowNat b = warning $ OldBuiltin b builtinNat
 
 isUntypedBuiltin :: String -> Bool
 isUntypedBuiltin b = elem b [builtinFromNat, builtinFromNeg, builtinFromString]
@@ -563,8 +581,8 @@
 bindUntypedBuiltin b e =
   case A.unScope e of
     A.Def q  -> bindBuiltinName b (Def q [])
-    A.Proj q -> bindBuiltinName b (Def q [])
-    e        -> genericError $ "The argument to BUILTIN " ++ b ++ " must be a defined name"
+    A.Proj _ (AmbQ [q]) -> bindBuiltinName b (Def q [])
+    e        -> genericError $ "The argument to BUILTIN " ++ b ++ " must be a defined unambiguous name"
 
 -- | Bind a builtin thing to a new name.
 bindBuiltinNoDef :: String -> A.QName -> TCM ()
@@ -580,7 +598,7 @@
         -- Andreas, 2015-02-14
         -- Special treatment of SizeUniv, should maybe be a primitive.
         def | b == builtinSizeUniv = emptyFunction
-                { funClauses = [ (empty :: Clause) { clauseBody = Body $ Sort sSizeUniv } ]
+                { funClauses = [ (empty :: Clause) { clauseBody = Just $ Sort sSizeUniv } ]
                 , funCompiled = Just (CC.Done [] $ Sort sSizeUniv)
                 , funTerminates = Just True
                 }
diff --git a/src/full/Agda/TypeChecking/Rules/Builtin/Coinduction.hs b/src/full/Agda/TypeChecking/Rules/Builtin/Coinduction.hs
--- a/src/full/Agda/TypeChecking/Rules/Builtin/Coinduction.hs
+++ b/src/full/Agda/TypeChecking/Rules/Builtin/Coinduction.hs
@@ -9,6 +9,7 @@
 import Control.Applicative
 
 import qualified Data.Map as Map
+import qualified Data.Set as Set
 
 import qualified Agda.Syntax.Abstract as A
 import Agda.Syntax.Common
@@ -82,7 +83,6 @@
                   , recInduction      = Just CoInductive
                   , recClause         = Nothing
                   , recConHead        = ConHead sharp CoInductive []  -- flat is added later
-                  , recConType        = sharpType
                   , recNamedCon       = True
                   , recFields         = []  -- flat is added later
                   , recTel            = fieldTel
@@ -99,6 +99,7 @@
                     , conData   = defName infDefn
                     , conAbstr  = ConcreteDef
                     , conInd    = CoInductive
+                    , conErased = []
                     }
                 }
     return sharpE
@@ -130,8 +131,8 @@
           { clauseRange     = noRange
           , clauseTel       = tel
           , namedClausePats = [ argN $ Named Nothing $
-              ConP sharpCon cpi [ argN $ Named Nothing $ VarP (0,"x") ] ]
-          , clauseBody      = Bind $ Abs "x" $ Body $ var 0
+              ConP sharpCon cpi [ argN $ Named Nothing $ debruijnNamedVar "x" 0 ] ]
+          , clauseBody      = Just $ var 0
           , clauseType      = Just $ defaultArg $ El (varSort 2) $ var 1
           , clauseCatchall  = False
           }
@@ -141,30 +142,20 @@
                                Map.empty
                                Nothing
         projection = Projection
-          { projProper   = Just flat
-          , projFromType = inf
+          { projProper   = True
+          , projOrig     = flat
+          , projFromType = defaultArg inf
           , projIndex    = 3
-          , projDropPars = teleNoAbs (take 2 $ telToList tel) $ Lam defaultArgInfo $ Abs "x" $ Var 0 [Proj flat]
-          , projArgInfo  = defaultArgInfo
+          , projLams     = ProjLams $ [ argH "a" , argH "A" , argN "x" ]
           }
     addConstant flat $
       flatDefn { defPolarity       = []
                , defArgOccurrences = [StrictPos]  -- changing that to [Mixed] destroys monotonicity of 'Rec' in test/succeed/GuardednessPreservingTypeConstructors
-               , theDef = Function
-                   { funClauses    = [clause]
-                   , funCompiled   = Just $ cc
-                   , funTreeless   = Nothing
-                   , funInv        = NotInjective
-                   , funMutual     = []
-                   , funAbstr      = ConcreteDef
-                   , funDelayed    = NotDelayed
-                   , funProjection = Just projection
-                   , funSmashable  = False
-                   , funStatic     = False
-                   , funInline     = False
-                   , funTerminates = Just True
-                   , funExtLam     = Nothing
-                   , funWith       = Nothing
+               , theDef = emptyFunction
+                   { funClauses      = [clause]
+                   , funCompiled     = Just $ cc
+                   , funProjection   = Just projection
+                   , funTerminates   = Just True
                    , funCopatternLHS = isCopatternLHS [clause]
                    }
                 }
diff --git a/src/full/Agda/TypeChecking/Rules/Data.hs b/src/full/Agda/TypeChecking/Rules/Data.hs
--- a/src/full/Agda/TypeChecking/Rules/Data.hs
+++ b/src/full/Agda/TypeChecking/Rules/Data.hs
@@ -1,9 +1,5 @@
 {-# LANGUAGE CPP #-}
 
-#if __GLASGOW_HASKELL__ >= 710
-{-# LANGUAGE FlexibleContexts #-}
-#endif
-
 module Agda.TypeChecking.Rules.Data where
 
 import Control.Applicative
@@ -35,6 +31,7 @@
 
 import Agda.Interaction.Options
 
+import Agda.Utils.Except
 import Agda.Utils.List
 import Agda.Utils.Monad
 import Agda.Utils.Permutation
@@ -83,16 +80,26 @@
             -- The type we get from bindParameters is Θ -> s where Θ is the type of
             -- the indices. We count the number of indices and return s.
             -- We check that s is a sort.
-            (nofIxs, s) <- splitType t0
+            let TelV ixTel s0 = telView' t0
+                nofIxs = size ixTel
 
-            when (any (`freeIn` s) [0..nofIxs - 1]) $ do
-              err <- fsep [ text "The sort of" <+> prettyTCM name
+            s <- workOnTypes $ do
+              -- Andreas, 2016-11-02 issue #2290
+              -- Trying to unify the sort with a fresh sort meta which is
+              -- defined outside the index telescope is the most robust way
+              -- to check independence of the indices.
+              -- However, it might give the dreaded "Cannot instantiate meta..."
+              -- error which we replace by a more understandable error
+              -- in case of a suspected dependency.
+              s <- newSortMetaBelowInf
+              catchError_ (addContext ixTel $ equalType s0 $ raise nofIxs $ sort s) $ \ err ->
+                  if any (`freeIn` s0) [0..nofIxs - 1] then typeError . GenericDocError =<<
+                     fsep [ text "The sort of" <+> prettyTCM name
                           , text "cannot depend on its indices in the type"
                           , prettyTCM t0
                           ]
-              typeError $ GenericError $ show err
-
-            s <- return $ raise (-nofIxs) s
+                  else throwError err
+              return s
 
             -- the small parameters are taken into consideration for --without-K
             smallPars <- smallParams tel s
@@ -162,21 +169,18 @@
 
         -- Andreas 2012-02-13: postpone polarity computation until after positivity check
         -- computePolarity name
-    where
-      -- Take a type of form @tel -> a@ and return
-      -- @size tel@ (number of data type indices) and
-      -- @a@ as a sort (either @a@ directly if it is a sort,
-      -- or a fresh sort meta set equal to a.
-      splitType :: Type -> TCM (Int, Sort)
-      splitType t = case ignoreSharing $ unEl t of
-        Pi a b -> mapFst (+ 1) <$> do addContext (absName b, a) $ splitType (absBody b)
-        Sort s -> return (0, s)
-        _      -> do
-          s <- newSortMeta
-          equalType t (sort s)
-          return (0, s)
 
+-- | Ensure that the type is a sort.
+--   If it is not directly a sort, compare it to a 'newSortMetaBelowInf'.
+forceSort :: Type -> TCM Sort
+forceSort t = case ignoreSharing $ unEl t of
+  Sort s -> return s
+  _      -> do
+    s <- newSortMetaBelowInf
+    equalType t (sort s)
+    return s
 
+
 -- | A parameter is small if its sort fits into the data sort.
 --   @smallParams@ overapproximates the small parameters (in doubt: small).
 smallParams :: Telescope -> Sort -> TCM [Int]
@@ -209,7 +213,7 @@
 checkConstructor d tel nofIxs s (A.ScopedDecl scope [con]) = do
   setScope scope
   checkConstructor d tel nofIxs s con
-checkConstructor d tel nofIxs s con@(A.Axiom _ i ai c e) =
+checkConstructor d tel nofIxs s con@(A.Axiom _ i ai Nothing c e) =
     traceCall (CheckConstructor d tel s con) $ do
 {- WRONG
       -- Andreas, 2011-04-26: the following happens to the right of ':'
@@ -244,7 +248,7 @@
         escapeContext (size tel) $
           addConstant c $
             defaultDefn defaultArgInfo c (telePi tel t') $
-              Constructor (size tel) con d (Info.defAbstract i) Inductive
+              Constructor (size tel) con d (Info.defAbstract i) Inductive []
 
         -- Add the constructor to the instance table, if needed
         when (Info.defInstance i == InstanceDef) $ do
@@ -289,7 +293,7 @@
   -- Andreas, 2011-04-07 ignore relevance information in binding?!
     | argInfoHiding info /= argInfoHiding info' =
         __IMPOSSIBLE__
-    | otherwise = addContext (x, arg) $ bindParameters ps (absBody b) $ \tel s ->
+    | otherwise = addContext' (x, arg) $ bindParameters ps (absBody b) $ \tel s ->
                     ret (ExtendTel arg $ Abs (nameToArgName x) tel) s
 bindParameters bs (El s (Shared p)) ret = bindParameters bs (El s $ derefPtr p) ret
 bindParameters (b : bs) t _ = __IMPOSSIBLE__
@@ -441,6 +445,7 @@
         Record      {  recInduction = _                } -> return (Just False)
         Constructor {} -> __IMPOSSIBLE__
         Primitive   {} -> __IMPOSSIBLE__
+        AbstractDefn{} -> __IMPOSSIBLE__
     Var   {} -> return Nothing
     Lam   {} -> __IMPOSSIBLE__
     Lit   {} -> __IMPOSSIBLE__
diff --git a/src/full/Agda/TypeChecking/Rules/Decl.hs b/src/full/Agda/TypeChecking/Rules/Decl.hs
--- a/src/full/Agda/TypeChecking/Rules/Decl.hs
+++ b/src/full/Agda/TypeChecking/Rules/Decl.hs
@@ -1,21 +1,21 @@
-{-# LANGUAGE CPP           #-}
-{-# LANGUAGE LambdaCase    #-}
-{-# LANGUAGE TupleSections #-}
-
-#if __GLASGOW_HASKELL__ >= 710
-{-# LANGUAGE FlexibleContexts #-}
-#endif
+{-# LANGUAGE CPP #-}
+{-# LANGUAGE NondecreasingIndentation #-}
 
 module Agda.TypeChecking.Rules.Decl where
 
+import Prelude hiding (null)
+
 import Control.Monad
 import Control.Monad.Reader
-import Control.Monad.State (modify, gets)
+import Control.Monad.State (modify, gets, get)
 import Control.Monad.Writer (tell)
 
+import Data.Either (partitionEithers)
 import qualified Data.Foldable as Fold
+import Data.List (genericLength)
 import Data.Maybe
 import Data.Map (Map)
+import qualified Data.Sequence as Seq
 import qualified Data.Set as Set
 import Data.Set (Set)
 
@@ -45,6 +45,7 @@
 import Agda.TypeChecking.Injectivity
 import Agda.TypeChecking.Irrelevance
 import Agda.TypeChecking.Positivity
+import Agda.TypeChecking.Positivity.Occurrence
 import Agda.TypeChecking.Polarity
 import Agda.TypeChecking.Pretty
 import Agda.TypeChecking.Primitive
@@ -52,6 +53,7 @@
 import Agda.TypeChecking.Quote
 import Agda.TypeChecking.Unquote
 import Agda.TypeChecking.Records
+import Agda.TypeChecking.RecordPatterns
 import Agda.TypeChecking.Reduce
 import Agda.TypeChecking.Rewriting
 import Agda.TypeChecking.SizedTypes.Solve
@@ -62,18 +64,21 @@
 import Agda.TypeChecking.Rules.Term
 import Agda.TypeChecking.Rules.Data    ( checkDataDef )
 import Agda.TypeChecking.Rules.Record  ( checkRecDef )
-import Agda.TypeChecking.Rules.Def     ( checkFunDef, useTerPragma )
+import Agda.TypeChecking.Rules.Def     ( checkFunDef, newSection, useTerPragma )
 import Agda.TypeChecking.Rules.Builtin
 import Agda.TypeChecking.Rules.Display ( checkDisplayPragma )
 
 import Agda.Termination.TermCheck
 
-import qualified Agda.Utils.HashMap as HMap
+import Agda.Utils.Except
+import Agda.Utils.Functor
+import Agda.Utils.Function
+import Agda.Utils.Lens
 import Agda.Utils.Maybe
 import Agda.Utils.Monad
+import Agda.Utils.Null
 import Agda.Utils.Pretty (prettyShow)
 import Agda.Utils.Size
-import Agda.Utils.Except
 
 #include "undefined.h"
 import Agda.Utils.Impossible
@@ -147,17 +152,16 @@
     reportSDoc "tc.decl" 10 $ prettyA d  -- Might loop, see e.g. Issue 1597
 
     -- Issue 418 fix: freeze metas before checking an abstract thing
-    when_ isAbstract freezeMetas
+    -- when_ isAbstract freezeMetas -- WAS IN PLACE 2012-2016, but too crude
+    -- applyWhen isAbstract withFreezeMetas $ do -- WRONG
 
     let -- What kind of final checks/computations should be performed
         -- if we're not inside a mutual block?
-        none        m = m >> return Nothing
-        meta        m = m >> return (Just (return ()))
-        mutual i ds m = m >>= return . Just . uncurry (mutualChecks i d ds)
-        impossible  m = m >> return __IMPOSSIBLE__
-                       -- We're definitely inside a mutual block.
-
-    let mi = Info.MutualInfo TerminationCheck True noRange
+        none        m = m $>  Nothing           -- skip all checks
+        meta        m = m $>  Just (return ())  -- do the usual checks
+        mutual i ds m = m <&> Just . uncurry (mutualChecks i d ds)
+        impossible  m = m $>  __IMPOSSIBLE__
+                        -- We're definitely inside a mutual block.
 
     finalChecks <- case d of
       A.Axiom{}                -> meta $ checkTypeSignature d
@@ -165,15 +169,28 @@
       A.Primitive i x e        -> meta $ checkPrimitive i x e
       A.Mutual i ds            -> mutual i ds $ checkMutual i ds
       A.Section i x tel ds     -> meta $ checkSection i x tel ds
-      A.Apply i x modapp rd rm _adir -> meta $ checkSectionApplication i x modapp rd rm
+      A.Apply i x modapp ci _adir -> meta $ checkSectionApplication i x modapp ci
       A.Import i x _adir       -> none $ checkImport i x
       A.Pragma i p             -> none $ checkPragma i p
       A.ScopedDecl scope ds    -> none $ setScope scope >> mapM_ checkDeclCached ds
       A.FunDef i x delayed cs  -> impossible $ check x i $ checkFunDef delayed i x cs
       A.DataDef i x ps cs      -> impossible $ check x i $ checkDataDef i x ps cs
-      A.RecDef i x ind eta c ps tel cs -> mutual mi [d] $ check x i $ do
+      A.RecDef i x ind eta c ps tel cs -> mutual empty [d] $ check x i $ do
                                     checkRecDef i x ind eta c ps tel cs
                                     blockId <- mutualBlockOf x
+
+                                    -- Andreas, 2016-10-01 testing whether
+                                    -- envMutualBlock is set correctly.
+                                    -- Apparently not.
+                                    verboseS "tc.decl.mutual" 70 $ do
+                                      current <- asks envMutualBlock
+                                      unless (Just blockId == current) $ do
+                                        reportSLn "" 0 $ unlines
+                                          [ "mutual block id discrepancy for " ++ show x
+                                          , "  current    mut. bl. = " ++ show current
+                                          , "  calculated mut. bl. = " ++ show blockId
+                                          ]
+
                                     return (blockId, Set.singleton x)
       A.DataSig i x ps t       -> impossible $ checkSig i x ps t
       A.RecSig i x ps t        -> none $ checkSig i x ps t
@@ -209,7 +226,8 @@
 
     -- check record or data type signature
     checkSig i x ps t = checkTypeSignature $
-      A.Axiom A.NoFunSig i defaultArgInfo x (A.Pi (Info.ExprRange (fuseRange ps t)) ps t)
+      A.Axiom A.NoFunSig i defaultArgInfo Nothing x
+              (A.Pi (Info.ExprRange (fuseRange ps t)) ps t)
 
     check x i m = do
       reportSDoc "tc.decl" 5 $ text "Checking" <+> prettyTCM x <> text "."
@@ -230,11 +248,13 @@
 mutualChecks :: Info.MutualInfo -> A.Declaration -> [A.Declaration] -> MutualId -> Set QName -> TCM ()
 mutualChecks mi d ds mid names = do
   -- Andreas, 2014-04-11: instantiate metas in definition types
-  mapM_ instantiateDefinitionType $ Set.toList names
+  let nameList = Set.toList names
+  mapM_ instantiateDefinitionType nameList
   -- Andreas, 2013-02-27: check termination before injectivity,
   -- to avoid making the injectivity checker loop.
-  checkTermination_        mid d
+  local (\ e -> e { envMutualBlock = Just mid }) $ checkTermination_ d
   checkPositivity_         mi names
+  revisitRecordPatternTranslation nameList -- Andreas, 2016-11-19 issue #2308
   -- Andreas, 2015-03-26 Issue 1470:
   -- Restricting coinduction to recursive does not solve the
   -- actual problem, and prevents interesting sound applications
@@ -251,6 +271,30 @@
   checkInjectivity_        names
   checkProjectionLikeness_ names
 
+-- | Check if there is a inferred eta record type in the mutual block.
+--   If yes, repeat the record pattern translation for all function definitions
+--   in the block.
+--   This is necessary since the original record pattern translation will
+--   have skipped record patterns of the new record types (as eta was off for them).
+--   See issue #2308 (and #2197).
+revisitRecordPatternTranslation :: [QName] -> TCM ()
+revisitRecordPatternTranslation qs = do
+  -- rs: inferred eta record types of this mutual block
+  -- qccs: compiled clauses of definitions
+  (rs, qccs) <- partitionEithers . catMaybes <$> mapM classify qs
+  unless (null rs) $ forM_ qccs $ \(q,cc) -> do
+    cc <- translateCompiledClauses cc
+    modifySignature $ updateDefinition q $ updateTheDef $
+      updateCompiledClauses $ const $ Just cc
+  where
+  -- Walk through the definitions and return the set of inferred eta record types
+  -- and the set of function definitions in the mutual block
+  classify q = inConcreteOrAbstractMode q $ \ def -> do
+    case theDef def of
+      Record{ recEtaEquality' = Inferred True } -> return $ Just $ Left q
+      Function{ funCompiled = Just cc } -> return $ Just $ Right (q, cc)
+      _ -> return Nothing
+
 type FinalChecks = Maybe (TCM ())
 
 checkUnquoteDecl :: Info.MutualInfo -> [Info.DefInfo] -> [QName] -> A.Expr -> TCM FinalChecks
@@ -353,17 +397,19 @@
         "do not highlight construct(ed/or) type"
 
 -- | Termination check a declaration.
-checkTermination_ :: MutualId -> A.Declaration -> TCM ()
-checkTermination_ mid d = Bench.billTo [Bench.Termination] $ do
+checkTermination_ :: A.Declaration -> TCM ()
+checkTermination_ d = Bench.billTo [Bench.Termination] $ do
   reportSLn "tc.decl" 20 $ "checkDecl: checking termination..."
-  whenM (optTerminationCheck <$> pragmaOptions) $ do
-    case d of
+  case d of
       -- Record module definitions should not be termination-checked twice.
       A.RecDef {} -> return ()
       _ -> disableDestructiveUpdate $ do
-        termErrs <- termDecl mid d
-        unless (null termErrs) $
-          typeError $ TerminationCheckFailed termErrs
+        termErrs <- termDecl d
+        -- If there are some termination errors, we collect them in
+        -- the state.
+        -- The termination checker already marked non-terminating functions as such.
+        unless (null termErrs) $ do
+          warning $ TerminationIssue termErrs
 
 -- | Check a set of mutual names for positivity.
 checkPositivity_ :: Info.MutualInfo -> Set QName -> TCM ()
@@ -381,7 +427,7 @@
 --   (Otherwise, one can implement invalid recursion schemes just like
 --   for the old coinduction.)
 checkCoinductiveRecords :: [A.Declaration] -> TCM ()
-checkCoinductiveRecords ds = forM_ ds $ \ d -> case d of
+checkCoinductiveRecords ds = forM_ ds $ \case
   A.RecDef _ q (Just (Ranged r CoInductive)) _ _ _ _ _ -> setCurrentRange r $ do
     unlessM (isRecursiveRecord q) $ typeError $ GenericError $
       "Only recursive records can be coinductive"
@@ -394,7 +440,7 @@
   -- Andreas, 2015-07-01, see Issue1366b:
   -- Injectivity check needs also to be run for abstract definitions.
   -- Fold.forM_ names $ \ q -> ignoreAbstractMode $ do -- NOT NECESSARY after all
-  Fold.forM_ names $ \ q -> inConcreteOrAbstractMode q $ do
+  Fold.forM_ names $ \ q -> inConcreteOrAbstractMode q $ \ def -> do
     -- For abstract q, we should be inAbstractMode,
     -- otherwise getConstInfo returns Axiom.
     --
@@ -406,7 +452,6 @@
     -- or super modules inAbstractMode.
     -- I changed that in Monad.Signature.treatAbstractly', so we can see
     -- our own local definitions.
-    def <- getConstInfo q
     case theDef def of
       d@Function{ funClauses = cs, funTerminates = term } -> do
         case term of
@@ -447,9 +492,27 @@
         _ -> reportSLn "tc.proj.like" 25 $
                "mutual definitions are not considered for projection-likeness"
 
+-- | Freeze metas created by given computation if in abstract mode.
+whenAbstractFreezeMetasAfter :: Info.DefInfo -> TCM a -> TCM a
+whenAbstractFreezeMetasAfter Info.DefInfo{ defAccess, defAbstract} m = do
+  let pubAbs = defAccess == PublicAccess && defAbstract == AbstractDef
+  if not pubAbs then m else do
+    (a, ms) <- metasCreatedBy m
+    xs <- freezeMetas' $ (`Set.member` ms)
+    reportSDoc "tc.decl.ax" 20 $ vcat
+      [ text "Abstract type signature produced new metas: " <+> sep (map prettyTCM $ Set.toList ms)
+      , text "We froze the following ones of these:       " <+> sep (map prettyTCM xs)
+      ]
+    return a
+
 -- | Type check an axiom.
-checkAxiom :: A.Axiom -> Info.DefInfo -> ArgInfo -> QName -> A.Expr -> TCM ()
-checkAxiom funSig i info0 x e = do
+checkAxiom :: A.Axiom -> Info.DefInfo -> ArgInfo ->
+              Maybe [Occurrence] -> QName -> A.Expr -> TCM ()
+checkAxiom funSig i info0 mp x e = whenAbstractFreezeMetasAfter i $ do
+  -- Andreas, 2016-07-19 issues #418 #2102:
+  -- We freeze metas in type signatures of abstract definitions, to prevent
+  -- leakage of implementation details.
+
   -- Andreas, 2012-04-18  if we are in irrelevant context, axioms is irrelevant
   -- even if not declared as such (Issue 610).
   rel <- max (getRelevance info0) <$> asks envRelevance
@@ -462,37 +525,48 @@
     , nest 2 $ text "of sort " <+> prettyTCM (getSort t)
     ]
 
-  -- check macro type if necessary
-  when (Info.defMacro i == MacroDef) $ do
-    t' <- normalise t
-    TelV tel tr <- telView t'
-
-    let telList = telToList tel
-        resType = abstract (telFromList (drop (length telList - 1) telList)) tr
-    expectedType <- el primAgdaTerm --> el (primAgdaTCM <#> primLevelZero <@> primUnit)
-    equalType resType expectedType
-      `catchError` \ _ -> typeError . GenericDocError =<< sep [ text "Result type of a macro must be"
-                                                              , nest 2 $ prettyTCM expectedType ]
-
   -- Andreas, 2015-03-17 Issue 1428: Do not postulate sizes in parametrized
   -- modules!
   when (funSig == A.NoFunSig) $ do
     whenM ((== SizeUniv) <$> do reduce $ getSort t) $ do
       whenM ((> 0) <$> getContextSize) $ do
         typeError $ GenericError $ "We don't like postulated sizes in parametrized modules."
+
+  -- Ensure that polarity pragmas do not contain too many occurrences.
+  (occs, pols) <- case mp of
+    Nothing   -> return ([], [])
+    Just occs -> do
+      TelV tel _ <- telView t
+      let n = genericLength (telToList tel)
+      when (n < genericLength occs) $
+        typeError $ TooManyPolarities x n
+      let pols = map polFromOcc occs
+      reportSLn "tc.polarity.pragma" 10 $
+        "Setting occurrences and polarity for " ++ show x ++ ":\n  " ++
+        show occs ++ "\n  " ++ show pols
+      return (occs, pols)
+
   -- Not safe. See Issue 330
   -- t <- addForcingAnnotations t
   addConstant x =<< do
-    useTerPragma $ defaultDefn info x t $
-      case funSig of
-        A.FunSig   -> emptyFunction
-        A.NoFunSig -> Axiom    -- NB: used also for data and record type sigs
+    useTerPragma $
+      (defaultDefn info x t $
+         case funSig of
+           A.FunSig   -> set funMacro (Info.defMacro i == MacroDef) emptyFunction
+           A.NoFunSig -> Axiom)   -- NB: used also for data and record type sigs
+        { defArgOccurrences = occs
+        , defPolarity       = pols
+        }
 
   -- Add the definition to the instance table, if needed
   when (Info.defInstance i == InstanceDef) $ do
     addTypedInstance x t
 
-  traceCall (IsType_ e) $ solveSizeConstraints DefaultToInfty -- need Range for error message
+  traceCall (IsType_ e) $ do -- need Range for error message
+    -- Andreas, 2016-06-21, issue #2054
+    -- Do not default size metas to ∞ in local type signatures
+    checkingWhere <- asks envCheckingWhere
+    solveSizeConstraints $ if checkingWhere then DontDefaultToInfty else DefaultToInfty
 
   -- Andreas, 2011-05-31, that freezing below is probably wrong:
   -- when_ (Info.defAbstract i == AbstractDef) $ freezeMetas
@@ -662,11 +736,6 @@
                 addCoreType x dt'
                 sequence_ $ zipWith addCoreConstr cs cons'
             _ -> typeError $ GenericError "COMPILED_DATA_UHC on non datatype"
-        A.NoSmashingPragma x -> do
-          def <- getConstInfo x
-          case theDef def of
-            Function{} -> markNoSmashing x
-            _          -> typeError $ GenericError "NO_SMASHING directive only works on functions"
         A.StaticPragma x -> do
           def <- getConstInfo x
           case theDef def of
@@ -685,44 +754,43 @@
 -- All definitions which have so far been assigned to the given mutual
 -- block are returned.
 checkMutual :: Info.MutualInfo -> [A.Declaration] -> TCM (MutualId, Set QName)
-checkMutual i ds = inMutualBlock $ do
+checkMutual i ds = inMutualBlock $ \ blockId -> do
 
-  blockId <- currentOrFreshMutualBlock
   verboseS "tc.decl.mutual" 20 $ do
     reportSDoc "tc.decl.mutual" 20 $ vcat $
       (text "Checking mutual block" <+> text (show blockId) <> text ":") :
       map (nest 2 . prettyA) ds
 
+  insertMutualBlockInfo blockId i
   local (\e -> e { envTerminationCheck = () <$ Info.mutualTermCheck i }) $
     mapM_ checkDecl ds
 
-  (blockId, ) <$> lookupMutualBlock blockId
+  (blockId, ) . mutualNames <$> lookupMutualBlock blockId
 
 -- | Type check the type signature of an inductive or recursive definition.
 checkTypeSignature :: A.TypeSignature -> TCM ()
 checkTypeSignature (A.ScopedDecl scope ds) = do
   setScope scope
   mapM_ checkTypeSignature ds
-checkTypeSignature (A.Axiom funSig i info x e) =
-    case Info.defAccess i of
-        PublicAccess  -> inConcreteMode $ checkAxiom funSig i info x e
-        PrivateAccess -> inAbstractMode $ checkAxiom funSig i info x e
-        OnlyQualified -> __IMPOSSIBLE__
+checkTypeSignature (A.Axiom funSig i info mp x e) =
+  Bench.billTo [Bench.Typing, Bench.TypeSig] $
+    let abstr = case Info.defAccess i of
+          PrivateAccess{}
+            | Info.defAbstract i == AbstractDef -> inAbstractMode
+              -- Issue #2321, only go to AbstractMode for abstract definitions
+            | otherwise -> inConcreteMode
+          PublicAccess  -> inConcreteMode
+          OnlyQualified -> __IMPOSSIBLE__
+    in abstr $ checkAxiom funSig i info mp x e
 checkTypeSignature _ = __IMPOSSIBLE__   -- type signatures are always axioms
 
+
 -- | Type check a module.
+
 checkSection :: Info.ModuleInfo -> ModuleName -> A.Telescope -> [A.Declaration] -> TCM ()
-checkSection i x tel ds =
-  checkTelescope tel $ \ tel' -> do
-    addSection x
-    verboseS "tc.mod.check" 10 $ do
-      dx   <- prettyTCM x
-      dtel <- mapM prettyAs tel
-      dtel' <- prettyTCM =<< lookupSection x
-      reportSLn "tc.mod.check" 10 $ "checking section " ++ show dx ++ " " ++ show dtel
-      reportSLn "tc.mod.check" 10 $ "    actual tele: " ++ show dtel'
-    withCurrentModule x $ mapM_ checkDeclCached ds
+checkSection _ x tel ds = newSection x tel $ mapM_ checkDeclCached ds
 
+
 -- | Helper for 'checkSectionApplication'.
 --
 --   Matches the arguments of the module application with the
@@ -768,22 +836,20 @@
   :: Info.ModuleInfo
   -> ModuleName          -- ^ Name @m1@ of module defined by the module macro.
   -> A.ModuleApplication -- ^ The module macro @λ tel → m2 args@.
-  -> A.Ren QName         -- ^ Imported names (given as renaming).
-  -> A.Ren ModuleName    -- ^ Imported modules (given as renaming).
+  -> A.ScopeCopyInfo     -- ^ Imported names and modules
   -> TCM ()
-checkSectionApplication i m1 modapp rd rm =
+checkSectionApplication i m1 modapp copyInfo =
   traceCall (CheckSectionApplication (getRange i) m1 modapp) $
-  checkSectionApplication' i m1 modapp rd rm
+  checkSectionApplication' i m1 modapp copyInfo
 
 -- | Check an application of a section.
 checkSectionApplication'
   :: Info.ModuleInfo
   -> ModuleName          -- ^ Name @m1@ of module defined by the module macro.
   -> A.ModuleApplication -- ^ The module macro @λ tel → m2 args@.
-  -> A.Ren QName         -- ^ Imported names (given as renaming).
-  -> A.Ren ModuleName    -- ^ Imported modules (given as renaming).
+  -> A.ScopeCopyInfo     -- ^ Imported names and modules
   -> TCM ()
-checkSectionApplication' i m1 (A.SectionApp ptel m2 args) rd rm = do
+checkSectionApplication' i m1 (A.SectionApp ptel m2 args) copyInfo = do
   -- Module applications can appear in lets, in which case we treat
   -- lambda-bound variables as additional parameters to the module.
   extraParams <- do
@@ -825,17 +891,22 @@
       ]
     -- Andreas, 2014-04-06, Issue 1094:
     -- Add the section with well-formed telescope.
-    addCtxTel aTel $ addSection m1
+    addContext aTel $ do
+      reportSDoc "tc.mod.apply" 80 $
+        text "addSection" <+> prettyTCM m1 <+> (getContextTelescope >>= \ tel -> inTopContext (prettyTCM tel))
+      addSection m1
 
     reportSDoc "tc.mod.apply" 20 $ vcat
       [ sep [ text "applySection", prettyTCM m1, text "=", prettyTCM m2, fsep $ map prettyTCM (vs ++ ts) ]
-      , nest 2 $ text "  defs:" <+> text (show rd)
-      , nest 2 $ text "  mods:" <+> text (show rm)
+      , nest 2 $ pretty copyInfo
       ]
     args <- instantiateFull $ vs ++ ts
-    applySection m1 ptel m2 args rd rm
+    let n = size aTel
+    etaArgs <- inTopContext $ addContext aTel getContextArgs
+    addContext' aTel $
+      applySection m1 (ptel `abstract` aTel) m2 (raise n args ++ etaArgs) copyInfo
 
-checkSectionApplication' i m1 (A.RecordModuleIFS x) rd rm = do
+checkSectionApplication' i m1 (A.RecordModuleIFS x) copyInfo = do
   let name = mnameToQName x
   tel' <- lookupSection x
   vs   <- freeVarsToApply name
@@ -853,7 +924,7 @@
       instFinal (ExtendTel (Dom info t) (Abs n EmptyTel)) =
                  ExtendTel (Dom ifo' t) (Abs n EmptyTel)
         where ifo' = setHiding Instance info
-      -- Otherwise, keep searchinf for last parameter:
+      -- Otherwise, keep searching for last parameter:
       instFinal (ExtendTel arg (Abs n tel)) =
                  ExtendTel arg (Abs n (instFinal tel))
       -- Before instFinal is invoked, we have checked that the @tel@ is not empty.
@@ -875,7 +946,7 @@
   when (tel == EmptyTel) $
     typeError $ GenericError $ show (qnameToConcrete name) ++ " is not a parameterised section"
 
-  addCtxTel telInst $ do
+  addContext' telInst $ do
     vs <- freeVarsToApply name
     reportSDoc "tc.mod.apply" 20 $ vcat
       [ nest 2 $ text "vs      =" <+> sep (map prettyTCM vs)
@@ -885,7 +956,8 @@
       [ nest 2 $ text "vs      =" <+> text (show vs)
       , nest 2 $ text "args    =" <+> text (show args)
       ]
-    applySection m1 telInst x (vs ++ args) rd rm
+    addSection m1
+    applySection m1 telInst x (vs ++ args) copyInfo
 
 -- | Type check an import declaration. Actually doesn't do anything, since all
 --   the work is done when scope checking.
diff --git a/src/full/Agda/TypeChecking/Rules/Decl.hs-boot b/src/full/Agda/TypeChecking/Rules/Decl.hs-boot
--- a/src/full/Agda/TypeChecking/Rules/Decl.hs-boot
+++ b/src/full/Agda/TypeChecking/Rules/Decl.hs-boot
@@ -2,11 +2,9 @@
 module Agda.TypeChecking.Rules.Decl where
 
 import Agda.Syntax.Info        (ModuleInfo)
-import Agda.Syntax.Abstract    (QName, Declaration, ModuleName, ModuleApplication, Ren)
+import Agda.Syntax.Abstract    (QName, Declaration, ModuleName, ModuleApplication, ScopeCopyInfo)
 import Agda.TypeChecking.Monad (TCM)
 
 checkDecls :: [Declaration] -> TCM ()
 checkDecl  :: Declaration -> TCM ()
-checkSectionApplication ::
-  ModuleInfo -> ModuleName -> ModuleApplication ->
-  Ren QName -> Ren ModuleName -> TCM ()
+checkSectionApplication :: ModuleInfo -> ModuleName -> ModuleApplication -> ScopeCopyInfo -> TCM ()
diff --git a/src/full/Agda/TypeChecking/Rules/Def.hs b/src/full/Agda/TypeChecking/Rules/Def.hs
--- a/src/full/Agda/TypeChecking/Rules/Def.hs
+++ b/src/full/Agda/TypeChecking/Rules/Def.hs
@@ -1,6 +1,4 @@
 {-# LANGUAGE CPP                      #-}
-{-# LANGUAGE LambdaCase               #-}
-{-# LANGUAGE PatternGuards            #-}
 {-# LANGUAGE NondecreasingIndentation #-}
 
 module Agda.TypeChecking.Rules.Def where
@@ -15,11 +13,14 @@
 import Data.List hiding (sort)
 import Data.Maybe
 import Data.Traversable
+import qualified Data.Set as Set
 
 import Agda.Syntax.Common
+import qualified Agda.Syntax.Concrete as C
 import Agda.Syntax.Concrete (exprFieldA)
 import Agda.Syntax.Position
 import qualified Agda.Syntax.Abstract as A
+import qualified Agda.Syntax.Abstract.Views as A
 import Agda.Syntax.Internal as I
 import Agda.Syntax.Internal.Pattern as I
 import qualified Agda.Syntax.Info as Info
@@ -48,9 +49,11 @@
 import Agda.TypeChecking.RecordPatterns
 import Agda.TypeChecking.CompiledClause (CompiledClauses(..))
 import Agda.TypeChecking.CompiledClause.Compile
+import Agda.TypeChecking.Primitive hiding (Nat)
 
 import Agda.TypeChecking.Rules.Term                ( checkExpr, inferExpr, inferExprForWith, checkDontExpandLast, checkTelescope )
-import Agda.TypeChecking.Rules.LHS                 ( checkLeftHandSide, LHSResult(..) )
+import Agda.TypeChecking.Rules.LHS                 ( checkLeftHandSide, LHSResult(..), bindAsPatterns )
+import Agda.TypeChecking.Rules.LHS.Problem         ( AsBinding(..) )
 import {-# SOURCE #-} Agda.TypeChecking.Rules.Decl ( checkDecls )
 
 import Agda.Utils.Except ( MonadError(catchError, throwError) )
@@ -59,6 +62,7 @@
 import Agda.Utils.Monad
 import Agda.Utils.Permutation
 import Agda.Utils.Size
+import Agda.Utils.Functor
 
 #include "undefined.h"
 import Agda.Utils.Impossible
@@ -73,33 +77,49 @@
         t    <- typeOfConst name
         info  <- flip setRelevance defaultArgInfo <$> relOfConst name
         case isAlias cs t of
-          Just (e, x) ->
+          Just (e, mc, x) ->
             traceCall (CheckFunDef (getRange i) (qnameName name) cs) $ do
               -- Andreas, 2012-11-22: if the alias is in an abstract block
               -- it has been frozen.  We unfreeze it to enable type inference.
               -- See issue 729.
               whenM (isFrozen x) $ unfreezeMeta x
-              checkAlias t info delayed i name e
+              checkAlias t info delayed i name e mc
           _ -> checkFunDef' t info delayed Nothing Nothing i name cs
 
+        -- If it's a macro check that it ends in Term → TC ⊤
+        ismacro <- isMacro . theDef <$> getConstInfo name
+        when (ismacro || Info.defMacro i == MacroDef) $ checkMacroType t
+
+checkMacroType :: Type -> TCM ()
+checkMacroType t = do
+  t' <- normalise t
+  TelV tel tr <- telView t'
+
+  let telList = telToList tel
+      resType = abstract (telFromList (drop (length telList - 1) telList)) tr
+  expectedType <- el primAgdaTerm --> el (primAgdaTCM <#> primLevelZero <@> primUnit)
+  equalType resType expectedType
+    `catchError` \ _ -> typeError . GenericDocError =<< sep [ text "Result type of a macro must be"
+                                                            , nest 2 $ prettyTCM expectedType ]
+
 -- | A single clause without arguments and without type signature is an alias.
-isAlias :: [A.Clause] -> Type -> Maybe (A.Expr, MetaId)
+isAlias :: [A.Clause] -> Type -> Maybe (A.Expr, Maybe C.Expr, MetaId)
 isAlias cs t =
         case trivialClause cs of
           -- if we have just one clause without pattern matching and
           -- without a type signature, then infer, to allow
           -- "aliases" for things starting with hidden abstractions
-          Just e | Just x <- isMeta (ignoreSharing $ unEl t) -> Just (e, x)
+          Just (e, mc) | Just x <- isMeta (ignoreSharing $ unEl t) -> Just (e, mc, x)
           _ -> Nothing
   where
     isMeta (MetaV x _) = Just x
     isMeta _           = Nothing
-    trivialClause [A.Clause (A.LHS i (A.LHSHead f []) []) (A.RHS e) [] _] = Just e
+    trivialClause [A.Clause (A.LHS i (A.LHSHead f []) []) _ (A.RHS e mc) [] _] = Just (e, mc)
     trivialClause _ = Nothing
 
 -- | Check a trivial definition of the form @f = e@
-checkAlias :: Type -> ArgInfo -> Delayed -> Info.DefInfo -> QName -> A.Expr -> TCM ()
-checkAlias t' ai delayed i name e = do
+checkAlias :: Type -> ArgInfo -> Delayed -> Info.DefInfo -> QName -> A.Expr -> Maybe C.Expr -> TCM ()
+checkAlias t' ai delayed i name e mc = atClause name 0 (A.RHS e mc) $ do
   reportSDoc "tc.def.alias" 10 $ text "checkAlias" <+> vcat
     [ text (show name) <+> colon  <+> prettyTCM t'
     , text (show name) <+> equals <+> prettyTCM e
@@ -132,29 +152,19 @@
 
   -- Add the definition
   addConstant name $ defaultDefn ai name t
-                   $ Function
-                      { funClauses        = [ Clause  -- trivial clause @name = v@
+                   $ set funMacro (Info.defMacro i == MacroDef) $
+                     emptyFunction
+                      { funClauses = [ Clause  -- trivial clause @name = v@
                           { clauseRange     = getRange i
                           , clauseTel       = EmptyTel
                           , namedClausePats = []
-                          , clauseBody      = Body $ bodyMod v
+                          , clauseBody      = Just $ bodyMod v
                           , clauseType      = Just $ Arg ai t
                           , clauseCatchall  = False
                           } ]
-                      , funCompiled       = Just $ Done [] $ bodyMod v
-                      , funTreeless       = Nothing
-                      , funDelayed        = delayed
-                      , funInv            = NotInjective
-                      , funAbstr          = Info.defAbstract i
-                      , funMutual         = []
-                      , funProjection     = Nothing
-                      , funSmashable      = True
-                      , funStatic         = False
-                      , funInline         = False
-                      , funTerminates     = Nothing
-                      , funExtLam         = Nothing
-                      , funWith           = Nothing
-                      , funCopatternLHS   = False
+                      , funCompiled = Just $ Done [] $ bodyMod v
+                      , funDelayed  = delayed
+                      , funAbstr    = Info.defAbstract i
                       }
   reportSDoc "tc.def.alias" 20 $ text "checkAlias: leaving"
 
@@ -171,7 +181,22 @@
              -> [A.Clause]       -- ^ the clauses to check
              -> TCM ()
 checkFunDef' t ai delayed extlam with i name cs =
+  checkFunDefS t ai delayed extlam with i name Nothing cs
 
+-- | Type check a definition by pattern matching.
+checkFunDefS :: Type             -- ^ the type we expect the function to have
+             -> ArgInfo        -- ^ is it irrelevant (for instance)
+             -> Delayed          -- ^ are the clauses delayed (not unfolded willy-nilly)
+             -> Maybe ExtLamInfo -- ^ does the definition come from an extended lambda
+                                 --   (if so, we need to know some stuff about lambda-lifted args)
+             -> Maybe QName      -- ^ is it a with function (if so, what's the name of the parent function)
+             -> Info.DefInfo     -- ^ range info
+             -> QName            -- ^ the name of the function
+             -> Maybe Substitution -- ^ substitution (from with abstraction) that needs to be applied to module parameters
+             -> [A.Clause]       -- ^ the clauses to check
+             -> TCM ()
+checkFunDefS t ai delayed extlam with i name withSub cs =
+
     traceCall (CheckFunDef (getRange i) (qnameName name) cs) $ do   -- TODO!! (qnameName)
         reportSDoc "tc.def.fun" 10 $
           sep [ text "checking body of" <+> prettyTCM name
@@ -179,8 +204,14 @@
               , nest 2 $ text "full type:" <+> (prettyTCM . defType =<< getConstInfo name)
               ]
 
+        reportSDoc "tc.def.fun" 70 $
+          sep $ [ text "clauses:" ] ++ map (nest 2 . text . show . A.deepUnscope) cs
+
         cs <- return $ map A.lhsToSpine cs
 
+        reportSDoc "tc.def.fun" 70 $
+          sep $ [ text "spine clauses:" ] ++ map (nest 2 . text . show . A.deepUnscope) cs
+
         -- Ensure that all clauses have the same number of trailing hidden patterns
         -- This is necessary since trailing implicits are no longer eagerly inserted.
         -- Andreas, 2013-10-13
@@ -190,9 +221,10 @@
 
         -- Check the clauses
         cs <- traceCall NoHighlighting $ do -- To avoid flicker.
-            forM cs $ \ c -> do
+          forM (zip cs [0..]) $ \ (c, clauseNo) -> do
+            atClause name clauseNo (A.clauseRHS c) $ do
               c <- applyRelevanceToContext (argInfoRelevance ai) $ do
-                checkClause t c
+                checkClause t withSub c
               -- Andreas, 2013-11-23 do not solve size constraints here yet
               -- in case we are checking the body of an extended lambda.
               -- 2014-04-24: The size solver requires each clause to be
@@ -201,17 +233,16 @@
               whenNothing extlam $ solveSizeConstraints DontDefaultToInfty
               -- Andreas, 2013-10-27 add clause as soon it is type-checked
               -- TODO: instantiateFull?
-              addClauses name [c]
+              inTopContext $ addClauses name [c]
               return c
 
+        reportSDoc "tc.def.fun" 70 $
+          sep $ [ text "checked clauses:" ] ++ map (nest 2 . text . show) cs
+
         -- After checking, remove the clauses again.
         -- (Otherwise, @checkInjectivity@ loops for issue 801).
         modifyFunClauses name (const [])
 
-        -- Check that all clauses have the same number of arguments
-        -- unless (allEqual $ map npats cs) $ typeError DifferentArities
-        -- Andreas, 2013-03-15 disable this check to allow flexible arity (issue 727)
-
         reportSDoc "tc.cc" 25 $ do
           sep [ text "clauses before injectivity test"
               , nest 2 $ prettyTCM $ map (QNamed name) cs  -- broken, reify (QNamed n cl) expect cl to live at top level
@@ -243,35 +274,34 @@
               ]
 
         -- add clauses for the coverage checker (needs to reduce)
-        addClauses name cs
+        inTopContext $ addClauses name cs
 
+        fullType <- flip telePi t <$> getContextTelescope
+
         -- Coverage check and compile the clauses
         cc <- Bench.billTo [Bench.Coverage] $
-          compileClauses (Just (name, t)) cs
+          inTopContext $ compileClauses (Just (name, fullType)) cs
 
         reportSDoc "tc.cc" 10 $ do
           sep [ text "compiled clauses of" <+> prettyTCM name
               , nest 2 $ text (show cc)
               ]
 
+        -- The macro tag might be on the type signature
+        ismacro <- isMacro . theDef <$> getConstInfo name
+
         -- Add the definition
-        addConstant name =<< do
+        inTopContext $ addConstant name =<< do
           -- If there was a pragma for this definition, we can set the
           -- funTerminates field directly.
-          useTerPragma $ defaultDefn ai name t $
-             Function
+          useTerPragma $ defaultDefn ai name fullType $
+             set funMacro (ismacro || Info.defMacro i == MacroDef) $
+             emptyFunction
              { funClauses        = cs
              , funCompiled       = Just cc
-             , funTreeless       = Nothing
              , funDelayed        = delayed
              , funInv            = inv
              , funAbstr          = Info.defAbstract i
-             , funMutual         = []
-             , funProjection     = Nothing
-             , funSmashable      = True
-             , funStatic         = False
-             , funInline         = False
-             , funTerminates     = Nothing
              , funExtLam         = extlam
              , funWith           = with
              , funCopatternLHS   = isCopatternLHS cs
@@ -284,8 +314,6 @@
           sep [ text "added " <+> prettyTCM name <+> text ":"
               , nest 2 $ prettyTCM . defType =<< getConstInfo name
               ]
-    where
-        npats = size . clausePats
 
 -- | Set 'funTerminates' according to termination info in 'TCEnv',
 --   which comes from a possible termination pragma.
@@ -307,8 +335,8 @@
 -- | Insert some patterns in the in with-clauses LHS of the given RHS
 insertPatterns :: [A.Pattern] -> A.RHS -> A.RHS
 insertPatterns pats (A.WithRHS aux es cs) = A.WithRHS aux es (map insertToClause cs)
-    where insertToClause (A.Clause (A.LHS i lhscore ps) rhs ds catchall)
-              = A.Clause (A.LHS i lhscore (pats ++ ps)) (insertPatterns pats rhs) ds catchall
+    where insertToClause (A.Clause (A.LHS i lhscore ps) dots rhs ds catchall)
+              = A.Clause (A.LHS i lhscore (pats ++ ps)) dots (insertPatterns pats rhs) ds catchall
 insertPatterns pats (A.RewriteRHS qes rhs wh) = A.RewriteRHS qes (insertPatterns pats rhs) wh
 insertPatterns pats rhs = rhs
 
@@ -324,53 +352,74 @@
     , wfExprs      :: [Term]               -- ^ With and rewrite expressions.
     , wfExprTypes  :: [EqualityView]       -- ^ Types of the with and rewrite expressions.
     , wfRHSType    :: Type                 -- ^ Type of the right hand side.
-    , wfParentPats :: [NamedArg Pattern]   -- ^ Parent patterns.
+    , wfParentPats :: [NamedArg DeBruijnPattern] -- ^ Parent patterns.
+    , wfParentParams :: Nat                -- ^ Number of module parameters in parent patterns
     , wfPermSplit  :: Permutation          -- ^ Permutation resulting from splitting the telescope into needed and unneeded vars.
     , wfPermParent :: Permutation          -- ^ Permutation reordering the variables in the parent pattern.
     , wfPermFinal  :: Permutation          -- ^ Final permutation (including permutation for the parent clause).
     , wfClauses    :: [A.Clause]           -- ^ The given clauses for the with function
     }
 
--- | Create a clause body from a term.
---
---   As we have type checked the term in the clause telescope, but the final
---   body should have bindings in the order of the pattern variables,
---   we need to apply the permutation to the checked term.
-
-mkBody :: Permutation -> Term -> ClauseBody
-mkBody perm v = foldr (\ x t -> Bind $ Abs x t) b xs
-  where
-    b  = Body $ applySubst (renamingR perm) v
-    xs = [ stringToArgName $ "h" ++ show n | n <- [0 .. permRange perm - 1] ]
-
-
 -- | Type check a function clause.
 
 checkClause
   :: Type          -- ^ Type of function defined by this clause.
+  -> Maybe Substitution  -- ^ Module parameter substitution arising from with-abstraction.
   -> A.SpineClause -- ^ Clause.
   -> TCM Clause    -- ^ Type-checked clause.
 
-checkClause t c@(A.Clause (A.SpineLHS i x aps withPats) rhs0 wh catchall) = do
+checkClause t withSub c@(A.Clause (A.SpineLHS i x aps withPats) namedDots rhs0 wh catchall) = do
     reportSDoc "tc.lhs.top" 30 $ text "Checking clause" $$ prettyA c
     unless (null withPats) $
       typeError $ UnexpectedWithPatterns withPats
     traceCall (CheckClause t c) $ do
       aps <- expandPatternSynonyms aps
-      checkLeftHandSide (CheckPatternShadowing c) (Just x) aps t $ \ lhsResult@(LHSResult delta ps trhs perm) -> do
+      cxtNames <- reverse . map (fst . unDom) <$> getContext
+      when (not $ null namedDots) $ reportSDoc "tc.lhs.top" 50 $
+        text "namedDots:" <+> vcat [ prettyTCM x <+> text "=" <+> prettyTCM v <+> text ":" <+> prettyTCM a | A.NamedDot x v a <- namedDots ]
+      -- Not really an as-pattern, but this does the right thing.
+      bindAsPatterns [ AsB x v a | A.NamedDot x v a <- namedDots ] $
+        checkLeftHandSide (CheckPatternShadowing c) (Just x) aps t withSub $ \ lhsResult@(LHSResult npars delta ps trhs patSubst asb) -> do
         -- Note that we might now be in irrelevant context,
         -- in case checkLeftHandSide walked over an irrelevant projection pattern.
-        (body, with) <- checkWhere (unArg trhs) wh $ checkRHS i x aps t lhsResult rhs0
-        escapeContext (size delta) $ checkWithFunction with
 
+        -- Subtle: checkRHS expects the function type to be the lambda lifted
+        -- type. If we're checking a with-function that's already the case,
+        -- otherwise we need to abstract over the module telescope.
+        t' <- case withSub of
+                Just{}  -> return t
+                Nothing -> do
+                  theta <- lookupSection (qnameModule x)
+                  return $ abstract theta t
+
+        -- At this point we should update the named dots potential with-clauses
+        -- in the right-hand side. When checking a clause we expect the named
+        -- dots to live in the context of the closest parent lhs, but the named
+        -- dots added by buildWithFunction live in the context of the
+        -- with-function arguments before pattern matching. That's what we need
+        -- patSubst for.
+        let rhs = updateRHS rhs0
+            updateRHS rhs@A.RHS{}               = rhs
+            updateRHS rhs@A.AbsurdRHS{}         = rhs
+            updateRHS (A.WithRHS q es cs)       = A.WithRHS q es (map updateClause cs)
+            updateRHS (A.RewriteRHS qes rhs wh) = A.RewriteRHS qes (updateRHS rhs) wh
+
+            updateClause (A.Clause f dots rhs wh ca) = A.Clause f (applySubst patSubst dots) (updateRHS rhs) wh ca
+
+        (body, with) <- bindAsPatterns asb $ checkWhere wh $ checkRHS i x aps t' lhsResult rhs
+
+        -- Note that the with function doesn't necessarily share any part of
+        -- the context with the parent (but withSub will take you from parent
+        -- to child).
+        inTopContext $ Bench.billTo [Bench.Typing, Bench.With] $ checkWithFunction cxtNames with
+
         reportSDoc "tc.lhs.top" 10 $ escapeContext (size delta) $ vcat
           [ text "Clause before translation:"
           , nest 2 $ vcat
             [ text "delta =" <+> prettyTCM delta
-            , text "perm  =" <+> text (show perm)
             , text "ps    =" <+> text (show ps)
             , text "body  =" <+> text (show body)
-            , text "body  =" <+> prettyTCM body
+            , text "body  =" <+> maybe (text "_|_") prettyTCM body
             ]
           ]
 
@@ -383,7 +432,7 @@
         return $
           Clause { clauseRange     = getRange i
                  , clauseTel       = killRange delta
-                 , namedClausePats = numberPatVars perm ps
+                 , namedClausePats = ps
                  , clauseBody      = bodyMod body
                  , clauseType      = Just trhs
                  , clauseCatchall  = catchall
@@ -395,34 +444,33 @@
   :: LHSInfo                 -- ^ Range of lhs.
   -> QName                   -- ^ Name of function.
   -> [NamedArg A.Pattern]    -- ^ Patterns in lhs.
-  -> Type                    -- ^ Type of function.
+  -> Type                    -- ^ Top-level type of function.
   -> LHSResult               -- ^ Result of type-checking patterns
   -> A.RHS                   -- ^ Rhs to check.
-  -> TCM (ClauseBody, WithFunctionProblem)
-
-checkRHS i x aps t lhsResult@(LHSResult delta ps trhs perm) rhs0 = handleRHS rhs0
+  -> TCM (Maybe Term, WithFunctionProblem)
+                                              -- Note: the as-bindings are already bound (in checkClause)
+checkRHS i x aps t lhsResult@(LHSResult _ delta ps trhs _ _asb) rhs0 = handleRHS rhs0
   where
   absurdPat = any (containsAbsurdPattern . namedArg) aps
   handleRHS rhs =
     case rhs of
 
       -- Case: ordinary RHS
-      A.RHS e -> do
+      A.RHS e _ -> Bench.billTo [Bench.Typing, Bench.CheckRHS] $ do
         when absurdPat $ typeError $ AbsurdPatternRequiresNoRHS aps
         v <- checkExpr e $ unArg trhs
-        return (mkBody perm v, NoWithFunction)
+        return (Just v, NoWithFunction)
 
       -- Case: no RHS
       A.AbsurdRHS -> do
         unless absurdPat $ typeError $ NoRHSRequiresAbsurdPattern aps
-        return (NoBody, NoWithFunction)
+        return (Nothing, NoWithFunction)
 
       -- Case: @rewrite@
-      A.RewriteRHS [] rhs [] -> handleRHS rhs
       -- Andreas, 2014-01-17, Issue 1402:
       -- If the rewrites are discarded since lhs=rhs, then
       -- we can actually have where clauses.
-      A.RewriteRHS [] rhs wh -> checkWhere (unArg trhs) wh $ handleRHS rhs
+      A.RewriteRHS [] rhs wh -> checkWhere wh $ handleRHS rhs
       A.RewriteRHS ((qname,eq):qes) rhs wh -> do
 
         -- Action for skipping this rewrite.
@@ -462,7 +510,7 @@
 
         -- Get the name of builtin REFL.
 
-        Con reflCon [] <- ignoreSharing <$> primRefl
+        Con reflCon _ [] <- ignoreSharing <$> primRefl
 
         -- Andreas, 2014-05-17  Issue 1110:
         -- Rewriting with @refl@ has no effect, but gives an
@@ -473,14 +521,14 @@
         let isReflProof = do
              v <- reduce proof
              case ignoreSharing v of
-               Con c [] | c == reflCon -> return True
+               Con c _ [] | c == reflCon -> return True
                _ -> return False
 
         ifM isReflProof recurse $ {- else -} do
 
         -- Process 'rewrite' clause like a suitable 'with' clause.
 
-        let reflPat  = A.ConP (ConPatInfo ConPCon patNoRange) (AmbQ [conName reflCon]) []
+        let reflPat  = A.ConP (ConPatInfo ConOCon patNoRange) (AmbQ [conName reflCon]) []
 
         -- Andreas, 2015-12-25  Issue #1740:
         -- After the fix of #520, rewriting with a reflexive equation
@@ -499,7 +547,7 @@
               | otherwise = (A.RewriteRHS qes rhs' wh, [])
             -- Andreas, 2014-03-05 kill range of copied patterns
             -- since they really do not have a source location.
-            cs       = [A.Clause (A.LHS i (A.LHSHead x (killRange aps)) pats) rhs'' outerWhere False]
+            cs       = [A.Clause (A.LHS i (A.LHSHead x (killRange aps)) pats) [] rhs'' outerWhere False]
 
         checkWithRHS x qname t lhsResult [withExpr] [withType] cs
 
@@ -535,10 +583,11 @@
   -> [Term]                  -- ^ With-expressions.
   -> [EqualityView]          -- ^ Types of with-expressions.
   -> [A.Clause]              -- ^ With-clauses to check.
-  -> TCM (ClauseBody, WithFunctionProblem)
-
-checkWithRHS x aux t (LHSResult delta ps trhs perm) vs0 as cs = do
+  -> TCM (Maybe Term, WithFunctionProblem)
+                                -- Note: as-bindings already bound (in checkClause)
+checkWithRHS x aux t (LHSResult npars delta ps trhs _ _asb) vs0 as cs = Bench.billTo [Bench.Typing, Bench.With] $ do
         let withArgs = withArguments vs0 as
+            perm = fromMaybe __IMPOSSIBLE__ $ dbPatPerm ps
         (vs, as)  <- normalise (vs0, as)
 
         -- Andreas, 2012-09-17: for printing delta,
@@ -564,7 +613,7 @@
         -- we should remove it from the context first
         reportSDoc "tc.with.top" 25 $ escapeContext (size delta) $ vcat
           [ text "delta1 =" <+> prettyTCM delta1
-          , text "delta2 =" <+> addCtxTel delta1 (prettyTCM delta2)
+          , text "delta2 =" <+> addContext delta1 (prettyTCM delta2)
           ]
         reportSDoc "tc.with.top" 25 $ vcat
           [ text "perm'  =" <+> text (show perm')
@@ -583,7 +632,6 @@
             (us1, us2)  = genericSplitAt (size delta1) $ permute perm' us1'
             -- Now stuff the with arguments in between and finish with the remaining variables
             v    = Def aux $ map Apply $ us0 ++ us1 ++ map defaultArg withArgs ++ us2
-            body = mkBody perm v
         -- Andreas, 2013-02-26 add with-name to signature for printing purposes
         addConstant aux =<< do
           useTerPragma $ defaultDefn defaultArgInfo aux typeDontCare emptyFunction
@@ -600,27 +648,36 @@
         reportSDoc "tc.with.top" 20 $
           text "             delta" <+> do escapeContext (size delta) $ prettyTCM delta
         reportSDoc "tc.with.top" 20 $
-          text "              body" <+> (addCtxTel delta $ prettyTCM body)
+          text "            delta1" <+> do escapeContext (size delta) $ prettyTCM delta1
+        reportSDoc "tc.with.top" 20 $
+          text "            delta2" <+> do escapeContext (size delta) $ addContext delta1 $ prettyTCM delta2
+        reportSDoc "tc.with.top" 20 $
+          text "              body" <+> prettyTCM v
 
-        return (body, WithFunction x aux t delta1 delta2 vs as t' ps perm' perm finalPerm cs)
+        return (Just v, WithFunction x aux t delta1 delta2 vs as t' ps npars perm' perm finalPerm cs)
 
-checkWithFunction :: WithFunctionProblem -> TCM ()
-checkWithFunction NoWithFunction = return ()
-checkWithFunction (WithFunction f aux t delta1 delta2 vs as b qs perm' perm finalPerm cs) = do
+checkWithFunction :: [Name] -> WithFunctionProblem -> TCM ()
+checkWithFunction _ NoWithFunction = return ()
+checkWithFunction cxtNames (WithFunction f aux t delta1 delta2 vs as b qs npars perm' perm finalPerm cs) = do
 
+  let -- Δ₁ ws Δ₂ ⊢ withSub : Δ′    (where Δ′ is the context of the parent lhs)
+      withSub :: Substitution
+      withSub = liftS (size delta2) (wkS (countWithArgs as) idS) `composeS` renaming __IMPOSSIBLE__ (reverseP perm')
+
   reportSDoc "tc.with.top" 10 $ vcat
     [ text "checkWithFunction"
     , nest 2 $ vcat
       [ text "delta1 =" <+> prettyTCM delta1
-      , text "delta2 =" <+> addCtxTel delta1 (prettyTCM delta2)
+      , text "delta2 =" <+> addContext delta1 (prettyTCM delta2)
       , text "t      =" <+> prettyTCM t
-      , text "as     =" <+> addCtxTel delta1 (prettyTCM as)
-      , text "vs     =" <+> do addCtxTel delta1 $ prettyTCM vs
-      , text "b      =" <+> do addCtxTel delta1 $ addCtxTel delta2 $ prettyTCM b
-      , text "qs     =" <+> text (show qs)
+      , text "as     =" <+> addContext delta1 (prettyTCM as)
+      , text "vs     =" <+> do addContext delta1 $ prettyTCM vs
+      , text "b      =" <+> do addContext delta1 $ addContext delta2 $ prettyTCM b
+      , text "qs     =" <+> prettyList (map pretty qs)
       , text "perm'  =" <+> text (show perm')
       , text "perm   =" <+> text (show perm)
       , text "fperm  =" <+> text (show finalPerm)
+      , text "withSub=" <+> text (show withSub)
       ]
     ]
 
@@ -633,7 +690,7 @@
                              -- from module applications.
   (withFunType, n) <- withFunctionType delta1 vs as delta2 b
   reportSDoc "tc.with.type" 10 $ sep [ text "with-function type:", nest 2 $ prettyTCM withFunType ]
-  reportSDoc "tc.with.type" 50 $ sep [ text "with-function type:", nest 2 $ text $ show withFunType ]
+  reportSDoc "tc.with.type" 50 $ sep [ text "with-function type:", nest 2 $ pretty withFunType ]
 
   -- Andreas, 2013-10-21
   -- Check generated type directly in internal syntax.
@@ -648,19 +705,19 @@
           traceCall (CheckWithFunctionType wt) . typeError
       err           -> throwError err
 
-
   -- With display forms are closed
 
-  df <- makeClosed <$> withDisplayForm f aux delta1 delta2 n qs perm' perm
+  df <- makeGlobal =<< withDisplayForm f aux delta1 delta2 n qs perm' perm
 
   reportSLn "tc.with.top" 20 "created with display form"
 
-  case df of
-    OpenThing _ (Display n ts dt) -> reportSDoc "tc.with.top" 20 $ text "Display" <+> fsep
-      [ text (show n)
-      , prettyList $ map prettyTCM ts
-      , prettyTCM dt
-      ]
+  case dget df of
+    Display n ts dt ->
+      reportSDoc "tc.with.top" 20 $ text "Display" <+> fsep
+        [ text (show n)
+        , prettyList $ map prettyTCM ts
+        , prettyTCM dt
+        ]
   addConstant aux =<< do
     useTerPragma $ (defaultDefn defaultArgInfo aux withFunType emptyFunction)
                    { defDisplay = [df] }
@@ -671,61 +728,72 @@
     , nest 2 $ prettyTCM withFunType
     , nest 2 $ text "-|" <+> (prettyTCM =<< getContextTelescope)
     ]
+  reportSDoc "tc.with.top" 70 $ vcat
+    [ nest 2 $ text $ "raw with func. type = " ++ show withFunType
+    ]
 
+
   -- Construct the body for the with function
   cs <- return $ map (A.lhsToSpine) cs
-  cs <- buildWithFunction f aux t qs finalPerm (size delta1) n cs
+  cs <- buildWithFunction cxtNames f aux t qs npars withSub finalPerm (size delta1) n cs
   cs <- return $ map (A.spineToLhs) cs
 
   -- Check the with function
-  checkFunDef' withFunType defaultArgInfo NotDelayed Nothing (Just f) info aux cs
+  checkFunDefS withFunType defaultArgInfo NotDelayed Nothing (Just f) info aux (Just withSub) cs
 
   where
     info = Info.mkDefInfo (nameConcrete $ qnameName aux) noFixity' PublicAccess ConcreteDef (getRange cs)
 
 -- | Type check a where clause.
 checkWhere
-  :: Type            -- ^ Type of rhs.
-  -> [A.Declaration] -- ^ Where-declarations to check.
+  :: [A.Declaration] -- ^ Where-declarations to check.
   -> TCM a           -- ^ Continuation.
   -> TCM a
-checkWhere trhs ds ret0 = do
-  -- Temporarily add trailing hidden arguments to check where-declarations.
-  TelV htel _ <- telViewUpTo' (-1) (not . visible) trhs
-  let
-    -- Remove htel after checking ds.
-    ret = escapeContext (size htel) $ ret0
+checkWhere ds ret = loop ds
+  where
     loop ds = case ds of
       [] -> ret
       [A.ScopedDecl scope ds] -> withScope_ scope $ loop ds
-      [A.Section _ m tel ds]  -> do
-        checkTelescope tel $ \ tel' -> do
-          reportSDoc "tc.def.where" 10 $
-            text "adding section:" <+> prettyTCM m <+> text (show (size tel'))
-          addSection m
-          verboseS "tc.def.where" 10 $ do
-            dx   <- prettyTCM m
-            dtel <- mapM prettyAs tel
-            dtel' <- prettyTCM =<< lookupSection m
-            reportSLn "tc.def.where" 10 $ "checking where section " ++ show dx ++ " " ++ show dtel
-            reportSLn "tc.def.where" 10 $ "        actual tele: " ++ show dtel'
-          withCurrentModule m $ local (\ e -> e { envCheckingWhere = True }) $ do
+      [A.Section _ m tel ds]  -> newSection m tel $ do
+          local (\ e -> e { envCheckingWhere = True }) $ do
             checkDecls ds
             ret
       _ -> __IMPOSSIBLE__
-  -- Add htel to check ds.
-  addCtxTel htel $ loop ds
 
+-- | Enter a new section during type-checking.
+
+newSection :: ModuleName -> A.Telescope -> TCM a -> TCM a
+newSection m tel cont = do
+  reportSDoc "tc.section" 10 $
+    text "checking section" <+> prettyTCM m <+> fsep (map prettyAs tel)
+
+  checkTelescope tel $ \ tel' -> do
+    reportSDoc "tc.section" 10 $
+      text "adding section:" <+> prettyTCM m <+> text (show (size tel'))
+
+    addSection m
+
+    reportSDoc "tc.section" 10 $ inTopContext $
+      nest 4 $ text "actual tele:" <+> do prettyTCM =<< lookupSection m
+
+    withCurrentModule m cont
+
+
 -- | Check if a pattern contains an absurd pattern. For instance, @suc ()@
 containsAbsurdPattern :: A.Pattern -> Bool
 containsAbsurdPattern p = case p of
     A.AbsurdP _   -> True
     A.VarP _      -> False
     A.WildP _     -> False
-    A.DotP _ _    -> False
+    A.DotP _ _ _  -> False
     A.LitP _      -> False
     A.AsP _ _ p   -> containsAbsurdPattern p
     A.ConP _ _ ps -> any (containsAbsurdPattern . namedArg) ps
     A.RecP _ fs   -> any (containsAbsurdPattern . (^. exprFieldA)) fs
-    A.DefP _ _ _  -> False  -- projection pattern
+    A.ProjP{}     -> False
+    A.DefP _ _ ps -> any (containsAbsurdPattern . namedArg) ps
     A.PatternSynP _ _ _ -> __IMPOSSIBLE__ -- False
+
+-- | Set the current clause number.
+atClause :: QName -> Int -> A.RHS -> TCM a -> TCM a
+atClause name i rhs = local $ \ e -> e { envClause = IPClause name i rhs }
diff --git a/src/full/Agda/TypeChecking/Rules/Def.hs-boot b/src/full/Agda/TypeChecking/Rules/Def.hs-boot
--- a/src/full/Agda/TypeChecking/Rules/Def.hs-boot
+++ b/src/full/Agda/TypeChecking/Rules/Def.hs-boot
@@ -1,6 +1,6 @@
 module Agda.TypeChecking.Rules.Def where
 
-import Agda.Syntax.Abstract
+import Agda.Syntax.Abstract as A
 import Agda.Syntax.Common
 import Agda.Syntax.Info
 import Agda.TypeChecking.Monad
@@ -9,5 +9,7 @@
 checkFunDef :: Delayed -> DefInfo -> QName -> [Clause] -> TCM ()
 
 checkFunDef' :: I.Type -> ArgInfo -> Delayed -> Maybe ExtLamInfo -> Maybe QName -> DefInfo -> QName -> [Clause] -> TCM ()
+
+newSection :: ModuleName -> A.Telescope -> TCM a -> TCM a
 
 useTerPragma :: Definition -> TCM Definition
diff --git a/src/full/Agda/TypeChecking/Rules/Display.hs b/src/full/Agda/TypeChecking/Rules/Display.hs
--- a/src/full/Agda/TypeChecking/Rules/Display.hs
+++ b/src/full/Agda/TypeChecking/Rules/Display.hs
@@ -18,7 +18,7 @@
 checkDisplayPragma :: QName -> [NamedArg A.Pattern] -> A.Expr -> TCM ()
 checkDisplayPragma f ps e = inTopContext $ do
   pappToTerm f id ps $ \n args -> do
-    let lhs = map unArg args
+    let lhs = map I.Apply args
     v <- exprToTerm e
     let df = Display n lhs (DTerm v)
     reportSLn "tc.display.pragma" 20 $ "Adding display form for " ++ show f ++ "\n  " ++ show df
@@ -66,9 +66,12 @@
 patternToTerm p ret =
   case p of
     A.VarP x               -> bindVar x $ ret 1 (Var 0 [])
-    A.ConP _ (AmbQ [c]) ps -> pappToTerm c (Con (ConHead c Inductive [])) ps ret
+    A.ConP _ (AmbQ [c]) ps -> pappToTerm c (Con (ConHead c Inductive []) ConOCon) ps ret
     A.ConP _ (AmbQ cs) _   -> genericError $ "Ambiguous constructor: " ++ intercalate ", " (map show cs)
-    A.DefP _ f ps          -> pappToTerm f (Def f . map Apply) ps ret
+    A.ProjP _ _ (AmbQ [d]) -> ret 0 (Def d [])
+    A.ProjP _ _ (AmbQ ds)    -> genericError $ "Ambiguous projection: " ++ intercalate ", " (map show ds)
+    A.DefP _ (AmbQ [f]) ps -> pappToTerm f (Def f . map Apply) ps ret
+    A.DefP _ (AmbQ ds) _   -> genericError $ "Ambiguous DefP: " ++ intercalate ", " (map show ds)
     A.LitP l               -> ret 0 (Lit l)
     A.WildP _              -> bindWild $ ret 1 (Var 0 [])
     _ -> do
@@ -81,19 +84,18 @@
   bindVar x ret
 
 bindVar :: Name -> TCM a -> TCM a
-bindVar x ret = do
-  addCtx x (defaultDom typeDontCare) ret
+bindVar x ret = addContext x ret
 
 exprToTerm :: A.Expr -> TCM Term
 exprToTerm e =
   case unScope e of
     A.Var x  -> fst <$> getVarInfo x
     A.Def f  -> pure $ Def f []
-    A.Con (AmbQ (c:_)) -> pure $ Con (ConHead c Inductive []) [] -- Don't care too much about ambiguity here
+    A.Con (AmbQ (c:_)) -> pure $ Con (ConHead c Inductive []) ConOCon [] -- Don't care too much about ambiguity here
     A.Lit l -> pure $ Lit l
     A.App _ e arg  -> apply <$> exprToTerm e <*> ((:[]) . inheritHiding arg <$> exprToTerm (namedArg arg))
 
-    A.Proj f       -> pure $ Def f []   -- only for printing so we don't have to worry too much here
+    A.Proj _ (AmbQ (f:_)) -> pure $ Def f []   -- only for printing so we don't have to worry too much here
     A.PatternSyn f -> pure $ Def f []
     A.Macro f      -> pure $ Def f []
 
diff --git a/src/full/Agda/TypeChecking/Rules/LHS.hs b/src/full/Agda/TypeChecking/Rules/LHS.hs
--- a/src/full/Agda/TypeChecking/Rules/LHS.hs
+++ b/src/full/Agda/TypeChecking/Rules/LHS.hs
@@ -1,8 +1,4 @@
 {-# LANGUAGE CPP                  #-}
-{-# LANGUAGE FlexibleInstances    #-}
-{-# LANGUAGE PatternGuards        #-}
-{-# LANGUAGE TupleSections        #-}
-{-# LANGUAGE TypeSynonymInstances #-}
 
 module Agda.TypeChecking.Rules.LHS where
 
@@ -14,6 +10,7 @@
 import Control.Arrow (first, second, (***))
 import Control.Monad hiding (mapM, forM, sequence)
 import Control.Monad.State hiding (mapM, forM, sequence)
+import Control.Monad.Reader hiding (mapM, forM, sequence)
 import Control.Monad.Trans.Maybe
 
 import Data.Function (on)
@@ -22,6 +19,8 @@
 import Data.List (delete, sortBy, stripPrefix)
 import Data.Monoid
 import Data.Traversable
+import Data.Map (Map)
+import qualified Data.Map as Map
 
 import Agda.Interaction.Options
 import Agda.Interaction.Options.Lenses
@@ -49,12 +48,13 @@
 import Agda.TypeChecking.Pretty
 import Agda.TypeChecking.Records
 import Agda.TypeChecking.Reduce
+import Agda.TypeChecking.Rewriting
 import Agda.TypeChecking.Substitute
-import Agda.TypeChecking.Substitute.Pattern
 import Agda.TypeChecking.Telescope
 
 import {-# SOURCE #-} Agda.TypeChecking.Rules.Term (checkExpr)
-import Agda.TypeChecking.Rules.LHS.Problem
+import Agda.TypeChecking.Rules.LHS.AsPatterns
+import Agda.TypeChecking.Rules.LHS.Problem hiding (Substitution)
 import Agda.TypeChecking.Rules.LHS.ProblemRest
 import Agda.TypeChecking.Rules.LHS.Unify
 import Agda.TypeChecking.Rules.LHS.Split
@@ -79,7 +79,7 @@
 flexiblePatterns :: [NamedArg A.Pattern] -> TCM FlexibleVars
 flexiblePatterns nps = do
   forMaybeM (zip (downFrom $ length nps) nps) $ \ (i, Arg ai p) -> do
-    runMaybeT $ (\ f -> FlexibleVar (getHiding ai) f i) <$> maybeFlexiblePattern p
+    runMaybeT $ (\ f -> FlexibleVar (getHiding ai) f (Just i) i) <$> maybeFlexiblePattern p
 
 -- | A pattern is flexible if it is dotted or implicit, or a record pattern
 --   with only flexible subpatterns.
@@ -92,10 +92,10 @@
 instance IsFlexiblePattern A.Pattern where
   maybeFlexiblePattern p =
     case p of
-      A.DotP{}
-        -> return DotFlex
-      A.WildP{}
-        -> return ImplicitFlex
+      A.DotP{}  -> return DotFlex
+      A.VarP{}  -> return ImplicitFlex
+      A.WildP{} -> return ImplicitFlex
+      A.AsP _ _ p -> maybeFlexiblePattern p
       A.ConP _ (A.AmbQ [c]) qs
         -> ifM (isNothing <$> isRecordConstructor c) mzero {-else-}
              (maybeFlexiblePattern qs)
@@ -106,7 +106,7 @@
     case p of
       I.DotP{}  -> return DotFlex
       I.ConP _ i ps
-        | Just ConPImplicit <- conPRecord i -> return ImplicitFlex  -- expanded from ImplicitP
+        | Just ConOSystem <- conPRecord i -> return ImplicitFlex  -- expanded from ImplicitP
         | Just _            <- conPRecord i -> maybeFlexiblePattern ps
         | otherwise -> mzero
       I.VarP{}  -> mzero
@@ -149,11 +149,12 @@
            -> TCM (IntMap (NamedArg A.Pattern), [DotPatternInst])
     update a p q = case unArg q of
       -- Case: the unifier did not instantiate the variable
-      VarP (i,_) -> return (IntMap.singleton i p, [])
+      VarP x     -> return (IntMap.singleton (dbPatVarIndex x) p, [])
       -- Case: the unifier did instantiate the variable
-      DotP u     -> case namedThing (unArg p) of
-        A.DotP _ e -> return (IntMap.empty,[DPI (Just e) u a])
-        A.WildP _  -> return (IntMap.empty,[DPI Nothing  u a])
+      DotP u     -> case snd $ asView $ namedThing (unArg p) of
+        A.DotP _ _ e -> return (IntMap.empty, [DPI Nothing  (Just e) u a])
+        A.WildP _  -> return (IntMap.empty, [DPI Nothing  Nothing  u a])
+        A.VarP x   -> return (IntMap.empty, [DPI (Just x) Nothing  u a])
         A.ConP _ (A.AmbQ [c]) qs -> do
           Def r es  <- ignoreSharing <$> reduce (unEl $ unDom a)
           let vs = fromMaybe __IMPOSSIBLE__ $ allApplyElims es
@@ -166,11 +167,11 @@
               -- Andreas, 2012-09-19 propagate relevance info to dot patterns
               bs  = map (mapRelevance (composeRelevance (getRelevance a))) bs0
           updates bs qs (map (DotP . unArg) us `withArgsFrom` teleArgNames ftel)
-        A.VarP        _     -> __IMPOSSIBLE__
+        A.AsP         _ _ _ -> __IMPOSSIBLE__
         A.ConP        _ _ _ -> __IMPOSSIBLE__
         A.RecP        _ _   -> __IMPOSSIBLE__
+        A.ProjP       _ _ _ -> __IMPOSSIBLE__
         A.DefP        _ _ _ -> __IMPOSSIBLE__
-        A.AsP         _ _ _ -> __IMPOSSIBLE__
         A.AbsurdP     _     -> __IMPOSSIBLE__
         A.LitP        _     -> __IMPOSSIBLE__
         A.PatternSynP _ _ _ -> __IMPOSSIBLE__
@@ -182,21 +183,27 @@
             fs  = killRange $ recFields def
             tel = recTel def `apply` pars
             as  = applyPatSubst (parallelS $ map (namedThing . unArg) qs) $ flattenTel tel
-            -- If the user wrote a dot pattern but the unifier eta-expanded the
-            -- corresponding variable, add the corresponding instantiation
+            -- If the user wrote a dot pattern or variable but the unifier
+            -- eta-expanded it, add the corresponding instantiation.
             dpi :: [DotPatternInst]
-            dpi = maybe [] (\e -> [DPI (Just e) (patternToTerm $ unArg q) a]) (isDotP (namedThing $ unArg p))
+            dpi = mkDPI $ patternToTerm $ unArg q
+              where
+                mkDPI v = case namedThing $ unArg p of
+                  A.DotP _ _ e -> [DPI Nothing (Just e) v a]
+                  A.VarP x     -> [DPI (Just x) Nothing v a]
+                  _            -> []
         second (dpi++) <$>
           updates as (projectInPat p fs) (map (fmap namedThing) qs)
       LitP _     -> __IMPOSSIBLE__
-      ProjP f    -> __IMPOSSIBLE__
+      ProjP{}    -> __IMPOSSIBLE__
 
     projectInPat :: NamedArg A.Pattern -> [Arg QName] -> [NamedArg A.Pattern]
     projectInPat p fs = case namedThing (unArg p) of
-      A.VarP x            -> map makeVarField fs
+      A.VarP x            -> map (makeDotField (PatRange $ getRange x)) fs
       A.ConP cpi _ nps    -> nps
       A.WildP pi          -> map (makeWildField pi) fs
-      A.DotP pi e         -> map (makeDotField pi) fs
+      A.DotP pi _ e       -> map (makeDotField pi) fs
+      A.ProjP _ _ _       -> __IMPOSSIBLE__
       A.DefP _ _ _        -> __IMPOSSIBLE__
       A.AsP _ _ _         -> __IMPOSSIBLE__
       A.AbsurdP _         -> __IMPOSSIBLE__
@@ -204,10 +211,9 @@
       A.PatternSynP _ _ _ -> __IMPOSSIBLE__
       A.RecP _ _          -> __IMPOSSIBLE__
       where
-        makeVarField (Arg fi f) = Arg fi $ unnamed $ A.VarP $ qnameName f
         makeWildField pi (Arg fi f) = Arg fi $ unnamed $ A.WildP pi
         makeDotField pi (Arg fi f) = Arg fi $ unnamed $
-          A.DotP pi $ A.Underscore underscoreInfo
+          A.DotP pi Inserted $ A.Underscore underscoreInfo
           where
             underscoreInfo = A.MetaInfo
               { A.metaRange          = getRange pi
@@ -217,10 +223,6 @@
               }
 
 
-    isDotP :: A.Pattern -> Maybe A.Expr
-    isDotP (A.DotP _ e) = Just e
-    isDotP _            = Nothing
-
 -- | Check if a problem is solved. That is, if the patterns are all variables.
 isSolvedProblem :: Problem -> Bool
 isSolvedProblem problem = null (restPats $ problemRest problem) &&
@@ -229,7 +231,7 @@
     -- need further splitting:
     isSolved A.ConP{}        = False
     isSolved A.LitP{}        = False
-    isSolved A.DefP{}        = False  -- projection pattern
+    isSolved A.ProjP{}       = False
     isSolved A.RecP{}        = False  -- record pattern
     -- solved:
     isSolved A.VarP{}        = True
@@ -237,6 +239,7 @@
     isSolved A.DotP{}        = True
     isSolved A.AbsurdP{}     = True
     -- impossible:
+    isSolved A.DefP{}        = __IMPOSSIBLE__
     isSolved A.AsP{}         = __IMPOSSIBLE__  -- removed by asView
     isSolved A.PatternSynP{} = __IMPOSSIBLE__  -- expanded before
 
@@ -262,7 +265,8 @@
   noShadowing (A.AbsurdP   {}) t = return ()
   noShadowing (A.ConP      {}) t = return ()  -- only happens for eta expanded record patterns
   noShadowing (A.RecP      {}) t = return ()  -- record pattern
-  noShadowing (A.DefP      {}) t = return ()  -- projection pattern
+  noShadowing (A.ProjP     {}) t = return ()  -- projection pattern
+  noShadowing (A.DefP      {}) t = __IMPOSSIBLE__
   noShadowing (A.DotP      {}) t = return ()
   noShadowing (A.AsP       {}) t = __IMPOSSIBLE__
   noShadowing (A.LitP      {}) t = __IMPOSSIBLE__
@@ -283,11 +287,18 @@
               []      -> return ()
               (c : _) -> setCurrentRange x $
                 typeError $ PatternShadowsConstructor x c
+          AbstractDefn{} -> return ()
+            -- Abstract constructors cannot be brought into scope,
+            -- even by a bigger import list.
+            -- Thus, they cannot be confused with variables.
+            -- Alternatively, we could do getConstInfo in ignoreAbstractMode,
+            -- then Agda would complain if a variable shadowed an abstract constructor.
           Axiom       {} -> return ()
           Function    {} -> return ()
           Record      {} -> return ()
           Constructor {} -> __IMPOSSIBLE__
-          Primitive   {} -> __IMPOSSIBLE__
+          -- TODO: in the future some stuck primitives might allow constructors
+          Primitive   {} -> return ()
       Var   {} -> return ()
       Pi    {} -> return ()
       Sort  {} -> return ()
@@ -306,7 +317,7 @@
 
 -- | Check that a dot pattern matches it's instantiation.
 checkDotPattern :: DotPatternInst -> TCM ()
-checkDotPattern (DPI (Just e) v (Dom info a)) =
+checkDotPattern (DPI _ (Just e) v (Dom info a)) =
   traceCall (CheckDotPattern e v) $ do
   reportSDoc "tc.lhs.dot" 15 $
     sep [ text "checking dot pattern"
@@ -324,8 +335,12 @@
           ]
     -- Should be ok to do noConstraints here
     noConstraints $ equalTerm a u v
-checkDotPattern (DPI Nothing _ _) = return ()
+checkDotPattern (DPI _ Nothing _ _) = return ()
 
+-- | Temporary data structure for 'checkLeftoverPatterns'
+type Projectn  = (ProjOrigin, QName)
+type Projectns = [Projectn]
+
 -- | Checks whether the dot patterns left over after splitting can be covered
 --   by shuffling around the dots from implicit positions. Returns the updated
 --   user patterns (without dot patterns).
@@ -342,13 +357,13 @@
            traverse gatherImplicitDotVars dpi
   reportSDoc "tc.lhs.dot" 30 $ nest 2 $
     text "implicit dotted variables:" <+>
-    prettyList (map (\(i,fs) -> prettyTCM $ Var i (map Proj fs)) idv)
+    prettyList (map (\(i,fs) -> prettyTCM $ Var i (map (uncurry Proj) fs)) idv)
   checkUserDots ps vs as idv
   reportSDoc "tc.lhs.dot" 15 $ text "all leftover dot patterns ok!"
 
   where
     checkUserDots :: [NamedArg A.Pattern] -> [Int] -> [Dom Type]
-                  -> [(Int,[QName])]
+                  -> [(Int,Projectns)]
                   -> TCM ()
     checkUserDots []     []     []     idv = return ()
     checkUserDots []     (_:_)  _      idv = __IMPOSSIBLE__
@@ -360,10 +375,14 @@
       checkUserDots ps vs as idv'
 
     checkUserDot :: NamedArg A.Pattern -> Int -> Dom Type
-                 -> [(Int,[QName])]
-                 -> TCM [(Int,[QName])]
+                 -> [(Int,Projectns)]
+                 -> TCM [(Int,Projectns)]
     checkUserDot p v a idv = case namedArg p of
-      A.DotP i e   -> do
+      A.DotP i o e | o == Inserted -> return idv
+      -- Jesper, 2016-12-08 (Issue 1605): if the origin is Inserted, this
+      -- means the dot pattern was created by expanding '...', so we don't
+      -- have to complain here.
+      A.DotP i o e -> do
         reportSDoc "tc.lhs.dot" 30 $ nest 2 $
           text "checking user dot pattern: " <+> prettyA e
         caseMaybeM (undotImplicitVar (v,[],unDom a) idv)
@@ -380,44 +399,58 @@
       A.AbsurdP _  -> return idv
       A.ConP _ _ _ -> __IMPOSSIBLE__
       A.LitP _     -> __IMPOSSIBLE__
+      A.ProjP _ _ _-> __IMPOSSIBLE__
       A.DefP _ _ _ -> __IMPOSSIBLE__
       A.RecP _ _   -> __IMPOSSIBLE__
       A.AsP  _ _ _ -> __IMPOSSIBLE__
       A.PatternSynP _ _ _ -> __IMPOSSIBLE__
 
-    gatherImplicitDotVars :: DotPatternInst -> TCM [(Int,[QName])]
-    gatherImplicitDotVars (DPI (Just _) _ _) = return [] -- Not implicit
-    gatherImplicitDotVars (DPI Nothing u _)  = gatherVars u
+    gatherImplicitDotVars :: DotPatternInst -> TCM [(Int,Projectns)]
+    gatherImplicitDotVars (DPI _ (Just _) _ _) = return [] -- Not implicit
+    gatherImplicitDotVars (DPI _ Nothing u _)  = gatherVars u
       where
-        gatherVars :: Term -> TCM [(Int,[QName])]
+        gatherVars :: Term -> TCM [(Int,Projectns)]
         gatherVars u = case ignoreSharing u of
           Var i es -> return $ (i,) <$> maybeToList (allProjElims es)
-          Con c us -> ifM (isEtaCon $ conName c)
+          Con c _ us -> ifM (isEtaCon $ conName c)
                       {-then-} (concat <$> traverse (gatherVars . unArg) us)
                       {-else-} (return [])
           _        -> return []
 
-    lookupImplicitDotVar :: (Int,[QName]) -> [(Int,[QName])] -> Maybe [QName]
+    lookupImplicitDotVar :: (Int,Projectns) -> [(Int,Projectns)] -> Maybe Projectns
     lookupImplicitDotVar (i,fs) [] = Nothing
     lookupImplicitDotVar (i,fs) ((j,gs):js)
-     | i == j , Just hs <- stripPrefix fs gs = Just hs
+     -- Andreas, 2016-09-20, issue #2196
+     -- We need to ignore the ProjOrigin!
+     | i == j , Just hs <- stripPrefixBy ((==) `on` snd) fs gs = Just hs
      | otherwise = lookupImplicitDotVar (i,fs) js
 
-    undotImplicitVar :: (Int,[QName],Type) -> [(Int,[QName])]
-                     -> TCM (Maybe [(Int,[QName])])
-    undotImplicitVar (i,fs,a) idv = case lookupImplicitDotVar (i,fs) idv of
+    undotImplicitVar :: (Int,Projectns,Type) -> [(Int,Projectns)]
+                     -> TCM (Maybe [(Int,Projectns)])
+    undotImplicitVar (i,fs,a) idv = do
+     reportSDoc "tc.lhs.dot" 40 $ vcat
+       [ text "undotImplicitVar"
+       , nest 2 $ vcat
+         [ text $ "i  =  " ++ show i
+         , text   "fs = " <+> sep (map (prettyTCM . snd) fs)
+         , text   "a  = " <+> prettyTCM a
+         , text $ "raw=  "  ++ show a
+         , text $ "idv=  "  ++ show idv
+         ]
+       ]
+     case lookupImplicitDotVar (i,fs) idv of
       Nothing -> return Nothing
       Just [] -> return $ Just $ delete (i,fs) idv
       Just rs -> caseMaybeM (isEtaRecordType a) (return Nothing) $ \(d,pars) -> do
         gs <- recFields . theDef <$> getConstInfo d
-        let u = Var i (map Proj fs)
+        let u = Var i (map (uncurry Proj) fs)
         is <- forM gs $ \(Arg _ g) -> do
-                (_,b) <- fromMaybe __IMPOSSIBLE__ <$> projectTyped u a g
-                return (i,fs++[g],b)
+                (_,_,b) <- fromMaybe __IMPOSSIBLE__ <$> projectTyped u a ProjSystem g
+                return (i,fs++[(ProjSystem,g)],b)
         undotImplicitVars is idv
 
-    undotImplicitVars :: [(Int,[QName],Type)] -> [(Int,[QName])]
-                      -> TCM (Maybe [(Int,[QName])])
+    undotImplicitVars :: [(Int,Projectns,Type)] -> [(Int,Projectns)]
+                      -> TCM (Maybe [(Int,Projectns)])
     undotImplicitVars []     idv = return $ Just idv
     undotImplicitVars (i:is) idv =
       caseMaybeM (undotImplicitVar i idv)
@@ -441,14 +474,16 @@
 bindLHSVars (_ : _)   EmptyTel         _   = __IMPOSSIBLE__
 bindLHSVars []        EmptyTel         ret = ret
 bindLHSVars (p : ps) (ExtendTel a tel) ret = do
+  -- see test/Fail/WronHidingInLHS:
   unless (getHiding p == getHiding a) $ typeError WrongHidingInLHS
+
   case namedArg p of
     A.VarP x      -> addContext (x, a) $ bindLHSVars ps (absBody tel) ret
     A.WildP _     -> bindDummy (absName tel)
                  -- @bindDummy underscore@ does not fix issue 819, but
                  -- introduces unwanted underscores in error messages
                  -- (Andreas, 2015-05-28)
-    A.DotP _ _    -> bindDummy (absName tel)
+    A.DotP _ _ _  -> bindDummy (absName tel)
     A.AbsurdP pi  -> do
       -- Andreas, 2012-03-15: allow postponement of emptyness check
       isEmptyType (getRange pi) $ unDom a
@@ -456,13 +491,14 @@
       bindDummy (absName tel)
     A.ConP{}        -> __IMPOSSIBLE__
     A.RecP{}        -> __IMPOSSIBLE__
+    A.ProjP{}       -> __IMPOSSIBLE__
     A.DefP{}        -> __IMPOSSIBLE__
     A.AsP{}         -> __IMPOSSIBLE__
     A.LitP{}        -> __IMPOSSIBLE__
     A.PatternSynP{} -> __IMPOSSIBLE__
     where
       bindDummy s = do
-        x <- if isUnderscore s then freshNoName_ else freshName_ ("." ++ argNameToString s)
+        x <- if isUnderscore s then freshNoName_ else unshadowName =<< freshName_ ("." ++ argNameToString s)
         addContext (x, a) $ bindLHSVars ps (absBody tel) ret
 
 -- | Bind as patterns
@@ -477,25 +513,35 @@
 
 -- | Result of checking the LHS of a clause.
 data LHSResult = LHSResult
-  { lhsVarTele      :: Telescope
+  { lhsParameters   :: Nat
+    -- ^ The number of original module parameters. These are present in the
+    -- the patterns.
+  , lhsVarTele      :: Telescope
     -- ^ Δ : The types of the pattern variables, in internal dependency order.
     -- Corresponds to 'clauseTel'.
-  , lhsPatterns     :: [NamedArg Pattern]
+  , lhsPatterns     :: [NamedArg DeBruijnPattern]
     -- ^ The patterns in internal syntax.
   , lhsBodyType     :: Arg Type
     -- ^ The type of the body. Is @bσ@ if @Γ@ is defined.
     -- 'Irrelevant' to indicate the rhs must be checked in irrelevant mode.
-  , lhsPermutation  :: Permutation
-    -- ^ The permutation from pattern vars to @Δ@.
-    -- Corresponds to 'clausePerm'.
+  , lhsPatSubst     :: Substitution
+    -- ^ Substitution version of @lhsPatterns@, only up to the first projection
+    -- pattern. @Δ |- lhsPatSubst : Γ@. Where @Γ@ is the argument telescope of
+    -- the function. This is used to update inherited dot patterns in
+    -- with-function clauses.
+  , lhsAsBindings   :: [AsBinding]
+    -- ^ As-bindings from the left-hand side. Return instead of bound since we
+    -- want them in where's and right-hand sides, but not in with-clauses
+    -- (Issue 2303).
   }
 
 instance InstantiateFull LHSResult where
-  instantiateFull' (LHSResult tel ps t perm) = LHSResult
+  instantiateFull' (LHSResult n tel ps t sub as) = LHSResult n
     <$> instantiateFull' tel
     <*> instantiateFull' ps
     <*> instantiateFull' t
-    <*> return perm
+    <*> instantiateFull' sub
+    <*> instantiateFull' as
 
 -- | Check a LHS. Main function.
 --
@@ -512,59 +558,121 @@
      -- ^ The patterns.
   -> Type
      -- ^ The expected type @a = Γ → b@.
+  -> Maybe Substitution
+     -- ^ Module parameter substitution from with-abstraction.
   -> (LHSResult -> TCM a)
      -- ^ Continuation.
   -> TCM a
-checkLeftHandSide c f ps a ret = Bench.billTo [Bench.Typing, Bench.CheckLHS] $ do
-  problem0 <- problemFromPats ps a
+checkLeftHandSide c f ps a withSub' = Bench.billToCPS [Bench.Typing, Bench.CheckLHS] $ \ ret -> do
+
+  -- To allow module parameters to be refined by matching, we're adding the
+  -- context arguments as wildcard patterns and extending the type with the
+  -- context telescope.
+  cxt <- reverse <$> getContext
+  let tel = telFromList' show cxt
+      cps = [ unnamed . A.VarP . fst <$> setOrigin Inserted (argFromDom d)
+            | d <- cxt ]
+  problem0 <- problemFromPats (cps ++ ps) (telePi tel a)
   -- Andreas, 2013-03-15 deactivating the following test allows
   -- flexible arity
   -- unless (noProblemRest problem) $ typeError $ TooManyArgumentsInLHS a
 
+  -- We need to grab all let-bindings here (while we still have the old
+  -- context). They will be rebound below once we have the new context set up.
+  -- Subtle: if we're checking a with the context will be empty so we can't use
+  -- 'getOpen'. On the other hand, if we're checking a with the let bindings
+  -- lives in the right context already so we can use 'openThing'.
+  let openLet | isNothing withSub' = getOpen
+              | otherwise          = return . openThing
+  oldLets <- asks $ Map.toList . envLetBindings
+  reportSDoc "tc.lhs.top" 70 $ vcat
+    [ text "context =" <+> inTopContext (prettyTCM tel)
+    , text "cIds    =" <+> (text . show =<< getContextId)
+    , text "oldLets =" <+> text (show oldLets) ]
+  oldLets <- sequence [ (x,) <$> openLet b | (x, b) <- oldLets ]
+
   -- doing the splits:
-  LHSState problem@(Problem ps qs delta rest) sigma dpi asb
-    <- checkLHS f $ LHSState problem0 idS [] []
+  inTopContext $ do
+    LHSState problem@(Problem pxs qs delta rest) dpi
+      <- checkLHS f $ LHSState problem0 []
 
-  unless (null $ restPats rest) $ typeError $ TooManyArgumentsInLHS a
+    unless (null $ restPats rest) $ typeError $ TooManyArgumentsInLHS a
 
-  addCtxTel delta $ do
-    noShadowingOfConstructors c problem
-    noPatternMatchingOnCodata qs
+    addContext delta $ do
+      noShadowingOfConstructors c problem
+      noPatternMatchingOnCodata qs
 
-  reportSDoc "tc.lhs.top" 10 $
-    vcat [ text "checked lhs:"
-         , nest 2 $ vcat
-           [ text "ps    = " <+> fsep (map prettyA ps)
-           , text "delta = " <+> prettyTCM delta
-           , text "dpi   = " <+> addCtxTel delta (brackets $ fsep $ punctuate comma $ map prettyTCM dpi)
-           , text "asb   = " <+> addCtxTel delta (brackets $ fsep $ punctuate comma $ map prettyTCM asb)
-           , text "qs    = " <+> text (show qs)
+    -- f is Nothing when checking let pattern-bindings. In that case there can
+    -- be no copatterns, so we don't need to worry about self.
+    let self = Def (fromMaybe __IMPOSSIBLE__ f) []
+    asb <- addContext delta $ recoverAsPatterns delta (telePi tel a) self (cps ++ ps) qs
+
+    reportSDoc "tc.lhs.top" 10 $
+      vcat [ text "checked lhs:"
+           , nest 2 $ vcat
+             [ text "pxs   = " <+> fsep (map prettyA pxs)
+             , text "delta = " <+> prettyTCM delta
+             , text "dpi   = " <+> addContext delta (brackets $ fsep $ punctuate comma $ map prettyTCM dpi)
+             , text "asb   = " <+> addContext delta (brackets $ fsep $ punctuate comma $ map prettyTCM asb)
+             , text "qs    = " <+> prettyList (map pretty qs)
+             ]
            ]
-         ]
 
-  let b' = restType rest
-  bindLHSVars (filter (isNothing . isProjP) ps) delta $ bindAsPatterns asb $ do
-    reportSDoc "tc.lhs.top" 10 $ text "bound pattern variables"
-    reportSDoc "tc.lhs.top" 60 $ nest 2 $ text "context = " <+> ((text . show) =<< getContext)
-    reportSDoc "tc.lhs.top" 10 $ nest 2 $ text "type  = " <+> prettyTCM b'
-    reportSDoc "tc.lhs.top" 60 $ nest 2 $ text "type  = " <+> text (show b')
+    let b' = restType rest
+    bindLHSVars (filter (isNothing . isProjP) pxs) delta $ do
+      let -- Find the variable patterns that have been refined
+          refinedParams = [ AsB x v (unDom a) | DPI (Just x) _ v a <- dpi ]
+          asb'          = refinedParams ++ asb
 
-    -- Check dot patterns
-    mapM_ checkDotPattern dpi
-    checkLeftoverDotPatterns ps (downFrom $ size delta) (flattenTel delta) dpi
+      reportSDoc "tc.lhs.top" 10 $ text "asb' = " <+> (brackets $ fsep $ punctuate comma $ map prettyTCM asb')
 
-    let qs'  = unnumberPatVars qs
-        perm = dbPatPerm qs
-        lhsResult = LHSResult delta qs' b' perm
-    reportSDoc "tc.lhs.top" 20 $ nest 2 $ text "perm  = " <+> text (show perm)
-    applyRelevanceToContext (getRelevance b') $ ret lhsResult
+      reportSDoc "tc.lhs.top" 10 $ text "bound pattern variables"
+      reportSDoc "tc.lhs.top" 60 $ nest 2 $ text "context = " <+> ((text . show) =<< getContext)
+      reportSDoc "tc.lhs.top" 10 $ nest 2 $ text "type  = " <+> prettyTCM b'
+      reportSDoc "tc.lhs.top" 60 $ nest 2 $ text "type  = " <+> text (show b')
 
+      let notProj ProjP{} = False
+          notProj _       = True
+                      -- Note: This works because we can't change the number of
+                      --       arguments in the lhs of a with-function relative to
+                      --       the parent function.
+          numPats   = length $ takeWhile (notProj . namedArg) qs
+          -- In the case of a non-with function the pattern substitution
+          -- should be weakened by the number of non-parameter patterns to
+          -- get the paramSub.
+          withSub = fromMaybe (wkS (numPats - length cxt) idS) withSub'
+          -- At this point we need to update the module parameters for all
+          -- parent modules.
+          patSub   = (map (patternToTerm . namedArg) $ reverse $ take numPats qs) ++# EmptyS
+          paramSub = composeS patSub withSub
+          lhsResult = LHSResult (length cxt) delta qs b' patSub asb'
+      reportSDoc "tc.lhs.top" 20 $ nest 2 $ text "patSub   = " <+> text (show patSub)
+      reportSDoc "tc.lhs.top" 20 $ nest 2 $ text "withSub  = " <+> text (show withSub)
+      reportSDoc "tc.lhs.top" 20 $ nest 2 $ text "paramSub = " <+> text (show paramSub)
+
+      let newLets = [ AsB x (applySubst paramSub v) (applySubst paramSub $ unDom a) | (x, (v, a)) <- oldLets ]
+      reportSDoc "tc.lhs.top" 50 $ text "old let-bindings:" <+> text (show oldLets)
+      reportSDoc "tc.lhs.top" 50 $ text "new let-bindings:" <+> (brackets $ fsep $ punctuate comma $ map prettyTCM newLets)
+
+      bindAsPatterns newLets $
+        applyRelevanceToContext (getRelevance b') $ updateModuleParameters paramSub $ do
+        bindAsPatterns asb' $ do
+
+          rebindLocalRewriteRules
+
+          -- Check dot patterns
+          mapM_ checkDotPattern dpi
+          checkLeftoverDotPatterns pxs (downFrom $ size delta) (flattenTel delta) dpi
+
+        -- Issue2303: don't bind asb' for the continuation (return in lhsResult instead)
+        ret lhsResult
+
 -- | The loop (tail-recursive): split at a variable in the problem until problem is solved
 checkLHS
   :: Maybe QName       -- ^ The name of the definition we are checking.
   -> LHSState          -- ^ The current state.
   -> TCM LHSState      -- ^ The final state after all splitting is completed
-checkLHS f st@(LHSState problem sigma dpi asb) = do
+checkLHS f st@(LHSState problem dpi) = do
 
   problem <- insertImplicitProblem problem
   -- Note: inserting implicits no longer preserve solvedness,
@@ -583,17 +691,17 @@
 
     -- Split problem rest (projection pattern, does not fail as there is no call to unifier)
 
-    trySplit (SplitRest projPat projType) _ = do
+    trySplit (SplitRest projPat o projType) _ = do
 
       -- Compute the new problem
       let Problem ps1 ip delta (ProblemRest (p:ps2) b) = problem
           -- ps'      = ps1 ++ [p]
           ps'      = ps1 -- drop the projection pattern (already splitted)
           rest     = ProblemRest ps2 (projPat $> projType)
-          ip'      = ip ++ [fmap (Named Nothing . ProjP) projPat]
+          ip'      = ip ++ [fmap (Named Nothing . ProjP o) projPat]
           problem' = Problem ps' ip' delta rest
       -- Jump the trampolin
-      st' <- updateProblemRest (LHSState problem' sigma dpi asb)
+      st' <- updateProblemRest (LHSState problem' dpi)
       -- If the field is irrelevant, we need to continue in irr. cxt.
       -- (see Issue 939).
       applyRelevanceToContext (getRelevance projPat) $ do
@@ -601,9 +709,9 @@
 
     -- Split on literal pattern (does not fail as there is no call to unifier)
 
-    trySplit (Split p0 xs (Arg _ (LitFocus lit ip a)) p1) _ = do
+    trySplit (Split p0 (Arg _ (LitFocus lit ip a)) p1) _ = do
 
-      -- substitute the literal in p1 and sigma and dpi and asb
+      -- substitute the literal in p1 and dpi
       let delta1 = problemTel p0
           delta2 = absApp (fmap problemTel p1) (Lit lit)
           rho    = singletonS (size delta2) (LitP lit)
@@ -612,9 +720,7 @@
           -- rho    = [ var i | i <- [0..size delta2 - 1] ]
           --       ++ [ raise (size delta2) $ Lit lit ]
           --       ++ [ var i | i <- [size delta2 ..] ]
-          sigma'   = applySubst rho sigma
           dpi'     = applyPatSubst rho dpi
-          asb0     = applyPatSubst rho asb
           ip'      = applySubst rho ip
           rest'    = applyPatSubst rho (problemRest problem)
 
@@ -622,14 +728,13 @@
       let ps'      = problemInPat p0 ++ problemInPat (absBody p1)
           delta'   = abstract delta1 delta2
           problem' = Problem ps' ip' delta' rest'
-          asb'     = raise (size delta2) (map (\x -> AsB x (Lit lit) a) xs) ++ asb0
-      st' <- updateProblemRest (LHSState problem' sigma' dpi' asb')
+      st' <- updateProblemRest (LHSState problem' dpi')
       checkLHS f st'
 
     -- Split on constructor pattern (unifier might fail)
 
-    trySplit (Split p0 xs focus@(Arg info Focus{}) p1) tryNextSplit = do
-      res <- trySplitConstructor p0 xs focus p1
+    trySplit (Split p0 focus@(Arg info Focus{}) p1) tryNextSplit = do
+      res <- trySplitConstructor p0 focus p1
       case res of
         -- Success.  Continue checking LHS.
         Unifies st'    -> checkLHS f st'
@@ -651,8 +756,8 @@
         NoUnify  tcerr -> return $ NoUnify  tcerr
         DontKnow tcerr -> return $ DontKnow tcerr
 
-    trySplitConstructor p0 xs (Arg info LitFocus{}) p1 = __IMPOSSIBLE__
-    trySplitConstructor p0 xs (Arg info
+    trySplitConstructor p0 (Arg info LitFocus{}) p1 = __IMPOSSIBLE__
+    trySplitConstructor p0 (Arg info
              (Focus { focusCon      = c
                     , focusPatOrigin= porigin
                     , focusConArgs  = qs
@@ -682,9 +787,9 @@
           [ text "split problem"
           , nest 2 $ vcat
             [ text "delta1 = " <+> prettyTCM delta1
-            , text "typeOfSplitVar =" <+> addCtxTel delta1 (prettyTCM typeOfSplitVar)
+            , text "typeOfSplitVar =" <+> addContext delta1 (prettyTCM typeOfSplitVar)
             , text "focusOutPat =" <+> (text . show) ip
-            , text "delta2 = " <+> addCtxTel delta1 (addContext ("x",domFromArg typeOfSplitVar) (prettyTCM delta2))
+            , text "delta2 = " <+> addContext delta1 (addContext ("x",domFromArg typeOfSplitVar) (prettyTCM delta2))
             ]
           ]
 
@@ -709,9 +814,9 @@
         -- This should be the same datatype as we split on
         unless (d == d') $ typeError $ ShouldBeApplicationOf ca d'
 
-        -- reportSDoc "tc.lhs.top" 20 $ nest 2 $ vcat
-        --   [ text "gamma' =" <+> text (show gamma')
-        --   ]
+        reportSDoc "tc.lhs.top" 20 $ addContext delta1 $ nest 2 $ vcat
+          [ text "gamma' =" <+> prettyTCM gamma'
+          ]
 
         -- Andreas 2010-09-07  propagate relevance info to new vars
         let updRel = composeRelevance (getRelevance info)
@@ -734,7 +839,7 @@
         -- Compute the constructor indices by dropping the parameters
         let us' = drop (size vs) us
 
-        reportSDoc "tc.lhs.top" 15 $ addCtxTel delta1 $
+        reportSDoc "tc.lhs.top" 15 $ addContext delta1 $
           sep [ text "preparing to unify"
               , nest 2 $ vcat
                 [ text "c      =" <+> prettyTCM c <+> text ":" <+> prettyTCM a
@@ -742,7 +847,7 @@
                 , text "gamma  =" <+> prettyTCM gamma
                 , text "gamma' =" <+> prettyTCM gamma'
                 , text "vs     =" <+> brackets (fsep $ punctuate comma $ map prettyTCM vs)
-                , text "us'    =" <+> addCtxTel gamma (brackets (fsep $ punctuate comma $ map prettyTCM us'))
+                , text "us'    =" <+> addContext gamma (brackets (fsep $ punctuate comma $ map prettyTCM us'))
                 , text "ws     =" <+> brackets (fsep $ punctuate comma $ map prettyTCM ws)
                 ]
               ]
@@ -780,12 +885,13 @@
                  (raise (size gamma) da)
                  us'
                  (raise (size gamma) ws)
-        whenUnifies res $ \ (delta1',rho0) -> do
+        whenUnifies res $ \ (delta1',rho0,es) -> do
 
           reportSDoc "tc.lhs.top" 15 $ text "unification successful"
           reportSDoc "tc.lhs.top" 20 $ nest 2 $ vcat
             [ text "delta1' =" <+> prettyTCM delta1'
-            , text "rho0    =" <+> addCtxTel delta1' (prettyTCM rho0)
+            , text "rho0    =" <+> addContext delta1' (prettyTCM rho0)
+            , text "es      =" <+> addContext delta1' (prettyTCM $ (fmap . fmap . fmap) patternToTerm es)
             ]
 
           -- Andreas 2014-11-25  clear 'Forced' and 'Unused'
@@ -798,12 +904,12 @@
               -- to the *new* telescope delta1'. These are needed to compute the
               -- correct types of new dot pattern instantiations.
               oldTypes = applyPatSubst rho0 $ flattenTel $ delta1 `abstract` gamma
-          (p0',newDpi) <- addCtxTel delta1' $ updateInPatterns
+          (p0',newDpi) <- addContext delta1' $ updateInPatterns
                             oldTypes
                             (problemInPat p0 ++ qs')
                             newPats
 
-          reportSDoc "tc.lhs.top" 20 $ addCtxTel delta1' $ nest 2 $ vcat
+          reportSDoc "tc.lhs.top" 20 $ addContext delta1' $ nest 2 $ vcat
             [ text "p0'     =" <+> text (show p0')
             , text "newDpi  =" <+> brackets (fsep $ punctuate comma $ map prettyTCM newDpi)
             ]
@@ -811,7 +917,7 @@
           -- split substitution into part for Δ₁ and part for Γ
           let (rho1,rho2) = splitS (size gamma) rho0
 
-          reportSDoc "tc.lhs.top" 20 $ addCtxTel delta1' $ nest 2 $ vcat
+          reportSDoc "tc.lhs.top" 20 $ addContext delta1' $ nest 2 $ vcat
             [ text "rho1    =" <+> prettyTCM rho1
             , text "rho2    =" <+> prettyTCM rho2
             ]
@@ -824,19 +930,20 @@
           let cpi = ConPatternInfo (isRec $> porigin) (Just storedPatternType)
 
           -- compute final context and permutation
-          let crho2   = ConP c cpi $ applySubst rho2 $ teleNamedArgs gamma
+          let crho2   = ConP c cpi $ applySubst rho2 $
+                          teleNamedArgs gamma `useOriginFrom` qs'
               rho3    = consS crho2 rho1
               delta2' = applyPatSubst rho3 delta2
               delta'  = delta1' `abstract` delta2'
               rho     = liftS (size delta2) rho3
 
-          reportSDoc "tc.lhs.top" 20 $ addCtxTel delta1' $ nest 2 $ vcat
+          reportSDoc "tc.lhs.top" 20 $ addContext delta1' $ nest 2 $ vcat
             [ text "crho2   =" <+> prettyTCM crho2
             , text "rho3    =" <+> prettyTCM rho3
             , text "delta2' =" <+> prettyTCM delta2'
             ]
 
-          reportSDoc "tc.lhs.top" 70 $ addCtxTel delta1' $ nest 2 $ vcat
+          reportSDoc "tc.lhs.top" 70 $ addContext delta1' $ nest 2 $ vcat
             [ text "crho2   =" <+> text (show crho2)
             , text "rho3    =" <+> text (show rho3)
             , text "delta2' =" <+> text (show delta2')
@@ -844,46 +951,40 @@
 
           reportSDoc "tc.lhs.top" 15 $ nest 2 $ vcat
             [ text "delta'  =" <+> prettyTCM delta'
-            , text "rho     =" <+> addCtxTel delta' (prettyTCM rho)
+            , text "rho     =" <+> addContext delta' (prettyTCM rho)
             ]
 
           -- compute new in patterns
           let ps'  = p0' ++ problemInPat (absBody p1)
 
-          reportSDoc "tc.lhs.top" 15 $ addCtxTel delta' $
+          reportSDoc "tc.lhs.top" 15 $ addContext delta' $
             nest 2 $ vcat
               [ text "ps'    =" <+> brackets (fsep $ punctuate comma $ map prettyA ps')
               ]
 
-          -- The final dpis and asbs are the new ones plus the old ones substituted by ρ
+          -- The final dpis are the new ones plus the old ones substituted by ρ
           let dpi' = applyPatSubst rho dpi ++ raise (size delta2') newDpi
-              asb' = applyPatSubst rho asb ++ raise (size delta2') (map (\x -> AsB x (patternToTerm crho2) ca) xs)
 
-          reportSDoc "tc.lhs.top" 15 $ addCtxTel delta' $
+          reportSDoc "tc.lhs.top" 15 $ addContext delta' $
             nest 2 $ vcat
               [ text "dpi'    =" <+> brackets (fsep $ punctuate comma $ map prettyTCM dpi')
-              , text "asb'    =" <+> brackets (fsep $ punctuate comma $ map prettyTCM asb')
               ]
 
           -- Apply the substitution
-          let sigma'   = applySubst rho sigma
-              ip'      = applySubst rho ip
+          let ip'      = applySubst rho ip
               rest'    = applyPatSubst rho (problemRest problem)
 
-          reportSDoc "tc.lhs.top" 15 $ addCtxTel delta' $
+          reportSDoc "tc.lhs.top" 15 $ addContext delta' $
             nest 2 $ vcat
-              [ text "sigma'  =" <+> prettyTCM sigma'
-              , text "ip'     =" <+> text (show ip)
-              ]
+              [ text "ip' =" <+> text (show ip) ]
 
           -- Construct the new problem
           let problem' = Problem ps' ip' delta' rest'
 
           -- if rest type reduces,
           -- extend the split problem by previously not considered patterns
-          st'@(LHSState problem'@(Problem ps' ip' delta' rest')
-                        sigma' dpi' asb')
-            <- updateProblemRest $ LHSState problem' sigma' dpi' asb'
+          st'@(LHSState problem'@(Problem ps' ip' delta' rest') dpi')
+            <- updateProblemRest $ LHSState problem' dpi'
 
           reportSDoc "tc.lhs.top" 12 $ sep
             [ text "new problem from rest"
diff --git a/src/full/Agda/TypeChecking/Rules/LHS/AsPatterns.hs b/src/full/Agda/TypeChecking/Rules/LHS/AsPatterns.hs
new file mode 100644
--- /dev/null
+++ b/src/full/Agda/TypeChecking/Rules/LHS/AsPatterns.hs
@@ -0,0 +1,117 @@
+{-# LANGUAGE CPP #-}
+
+module Agda.TypeChecking.Rules.LHS.AsPatterns
+  ( recoverAsPatterns ) where
+
+import Control.Applicative
+import Control.Monad.Writer hiding ((<>))
+import qualified Data.Foldable as Fold
+
+import Agda.Syntax.Common
+import Agda.Syntax.Internal
+import Agda.Syntax.Internal.Pattern
+import Agda.Syntax.Concrete ()
+import qualified Agda.Syntax.Abstract as A
+
+import Agda.TypeChecking.Monad
+import Agda.TypeChecking.Telescope
+import Agda.TypeChecking.Rules.LHS.Problem
+import Agda.TypeChecking.Rules.LHS.Implicit
+import Agda.TypeChecking.Datatypes
+import Agda.TypeChecking.Records
+import Agda.TypeChecking.Substitute
+import Agda.TypeChecking.Pretty
+import Agda.TypeChecking.Reduce
+
+import Agda.Utils.Maybe
+import Agda.Utils.Size
+import Agda.Utils.Impossible
+#include "undefined.h"
+
+recoverAsPatterns :: Telescope -> Type -> Term -> [NamedArg A.Pattern] -> [NamedArg DeBruijnPattern] -> TCM [AsBinding]
+recoverAsPatterns delta a self ps qs = do
+  let es = patternsToElims qs
+  as <- smashType (raise (size delta) a) self es
+  ps <- insertImplicitPatternsT DontExpandLast ps a
+  reportSDoc "tc.lhs.as" 30 $ vcat
+    [ text "recovering as patterns"
+    , nest 2 $ vcat [ text "es =" <+> prettyList (map prettyTCM es)
+                    , text "as =" <+> prettyList (map prettyTCM as)
+                    , text "ps =" <+> prettyList (map prettyA ps) ]
+    ]
+  execWriterT $ asPatterns as ps es
+
+-- ProjT stores the type of the projected field.
+data ElimType = ProjT Type | ArgT Type
+
+instance PrettyTCM ElimType where
+  prettyTCM (ProjT a) = text "." <> prettyTCM a
+  prettyTCM (ArgT a)  = prettyTCM a
+
+smashType :: Type -> Term -> Elims -> TCM [ElimType]
+smashType a _ [] = return []
+smashType a self (e : es) =
+  case e of
+    Apply v -> do
+      Pi a b <- ignoreSharing <$> reduce (unEl a)
+      (ArgT (unDom a) :) <$> smashType (absApp b $ unArg v) (self `applyE` [e]) es
+    Proj o f -> do
+      a <- reduce a
+      Just (_, self, a) <- projectTyped self a o f
+      (ProjT a :) <$> smashType a self es
+
+smashTel :: Telescope -> [Term] -> [Type]
+smashTel _ []                       = []
+smashTel (ExtendTel a tel) (v : vs) = unDom a : smashTel (absApp tel v) vs
+smashTel EmptyTel{} (_:_)           = __IMPOSSIBLE__
+
+asPatterns :: [ElimType] -> [NamedArg A.Pattern] -> [Elim] -> WriterT [AsBinding] TCM ()
+asPatterns _ [] _ = return ()
+asPatterns (ProjT a : as) (p : ps) (Proj{} : vs) = do
+  unless (isJust $ A.maybePostfixProjP p) __IMPOSSIBLE__  -- sanity check
+  ps <- lift $ insertImplicitPatternsT DontExpandLast ps a
+  asPatterns as ps vs
+asPatterns (ArgT a : as) (p : ps) (Apply v : vs)
+  | noAsPatterns (namedArg p) = asPatterns as ps vs
+  | otherwise =
+    case namedArg p of
+      A.AsP _ x p' -> do
+        tell [AsB x (unArg v) a]
+        asPatterns (ArgT a : as) (fmap (p' <$) p : ps) (Apply v : vs)
+      A.ConP _ _ ps' -> do
+        (_, _, tel, as', args) <- lift $ conPattern a (unArg v)
+        ps' <- lift $ insertImplicitPatterns ExpandLast ps' tel
+        asPatterns (map ArgT as' ++ as) (ps' ++ ps) (map Apply args ++ vs)
+      A.RecP i fps -> do
+        (r, c, _, as', args) <- lift $ conPattern a (unArg v)
+        let fs  = zipWith (<$) (map (nameConcrete . qnameName) $ conFields c) args
+        ps' <- lift $ insertMissingFields r (const $ A.WildP i) fps fs
+        asPatterns (map ArgT as' ++ as) (ps' ++ ps) (map Apply args ++ vs)
+      A.DefP{} -> __IMPOSSIBLE__ -- ?
+      _ -> __IMPOSSIBLE__
+asPatterns _ _ _ = __IMPOSSIBLE__
+
+conPattern :: Type -> Term -> TCM (QName, ConHead, Telescope, [Type], Args)
+conPattern a (Con c ci args) = do
+  Just ca <- getConType c =<< reduce a
+  TelV tel (El _ (Def d _)) <- telView ca
+  let as = smashTel tel (map unArg args)
+  return (d, c, tel, as, args)
+conPattern _ _ = __IMPOSSIBLE__
+
+noAsPatterns :: A.Pattern -> Bool
+noAsPatterns p =
+  case p of
+    A.AsP{}         -> False
+    A.ConP _ _ ps   -> noArgAsPats ps
+    A.DefP _ _ ps   -> noArgAsPats ps
+    A.RecP _ fs     -> all (Fold.all noAsPatterns) fs
+    A.VarP{}        -> True
+    A.ProjP{}       -> True
+    A.WildP{}       -> True
+    A.DotP{}        -> True
+    A.AbsurdP{}     -> True
+    A.LitP{}        -> True
+    A.PatternSynP{} -> __IMPOSSIBLE__
+  where
+    noArgAsPats = all (noAsPatterns . namedArg)
diff --git a/src/full/Agda/TypeChecking/Rules/LHS/Implicit.hs b/src/full/Agda/TypeChecking/Rules/LHS/Implicit.hs
--- a/src/full/Agda/TypeChecking/Rules/LHS/Implicit.hs
+++ b/src/full/Agda/TypeChecking/Rules/LHS/Implicit.hs
@@ -1,5 +1,4 @@
 {-# LANGUAGE CPP #-}
-{-# LANGUAGE PatternGuards #-}
 
 module Agda.TypeChecking.Rules.LHS.Implicit where
 
@@ -73,16 +72,16 @@
        -- if not (recNamedCon def) then return Nothing else do
        do
          -- generate one implicit pattern for each field
-         let qs = for (recFields def) $ \ f -> Arg (argInfo f) implicitP
+         let qs = for (recFields def) $ \ f -> implicitP $ argInfo f
          -- generate the pattern (c _ _ ... _)
-         let q  = A.ConP (ConPatInfo ConPImplicit patNoRange) (A.AmbQ [recCon def]) qs
+         let q  = A.ConP (ConPatInfo ConOSystem patNoRange) (A.AmbQ [recCon def]) qs
          -- equip it with the name/arginfo of the original implicit pattern
              p' = updateNamedArg (const q) p   -- WAS: ((q <$) <$> p)  -- Andreas, 2013-03-21 forbiddingly cryptic
          return $ Just p'
   | otherwise = return Nothing
 
-implicitP :: Named_ A.Pattern
-implicitP = unnamed $ A.WildP $ PatRange $ noRange
+implicitP :: ArgInfo -> NamedArg A.Pattern
+implicitP info = Arg (setOrigin Inserted info) $ unnamed $ A.WildP $ PatRange $ noRange
 
 -- | Insert implicit patterns in a list of patterns.
 --   Even if 'DontExpandLast', trailing SIZELT patterns are inserted.
@@ -106,7 +105,7 @@
   let ts = reverse $ takeWhile (not . visible) $ telToList tel
   keep <- reverse <$> dropWhileM (not <.> isSizeLt . snd . unDom) ts
   -- Insert implicit patterns upto (including) the last SizeLt type.
-  return [ Arg ai implicitP | Dom ai _ <- keep ]
+  return [ implicitP ai | Dom ai _ <- keep ]
 
 -- | Insert implicit patterns in a list of patterns.
 --   Even if 'DontExpandLast', trailing SIZELT patterns are inserted.
@@ -120,7 +119,7 @@
         , nest 2 $ text "ps  = " <+> do
             brackets $ fsep $ punctuate comma $ map prettyA ps
         , nest 2 $ text "tel = " <+> prettyTCM tel
-        , nest 2 $ text "b   = " <+> addCtxTel tel (prettyTCM b)
+        , nest 2 $ text "b   = " <+> addContext tel (prettyTCM b)
         ]
   case ps of
     [] -> insImp dummy tel
@@ -148,4 +147,4 @@
       ImpInsert n    -> return $ map implicitArg n
       NoInsertNeeded -> return []
 
-    implicitArg h = setHiding h $ defaultArg implicitP
+    implicitArg h = implicitP $ setHiding h $ defaultArgInfo
diff --git a/src/full/Agda/TypeChecking/Rules/LHS/Instantiate.hs b/src/full/Agda/TypeChecking/Rules/LHS/Instantiate.hs
--- a/src/full/Agda/TypeChecking/Rules/LHS/Instantiate.hs
+++ b/src/full/Agda/TypeChecking/Rules/LHS/Instantiate.hs
@@ -32,7 +32,7 @@
   reportSDoc "tc.lhs.inst" 10 $ vcat
     [ text "instantiateTel "
     , nest 2 $ text "s    =" <+> do
-        addCtxTel tel $
+        addContext tel $
           fsep $ punctuate comma $ map (maybe (text "_") prettyTCM) s
     , nest 2 $ text "tel  =" <+> prettyTCM tel
 --    , nest 2 $ text "tel  =" <+> text (show tel)
@@ -71,7 +71,7 @@
     ]
 
   -- s' : Substitution Γσ
-  let s' = renameP psR s
+  let s' =  {-'-} renameP __IMPOSSIBLE__ psR s
 
   reportSDoc "tc.lhs.inst" 15 $ nest 2 $
     text "s'   =" <+> fsep (punctuate comma $ map (maybe (text "_") prettyTCM) s')
@@ -129,7 +129,7 @@
   reportSLn "tc.lhs.inst" 10 $ "  p   = " ++ show p
 
   -- rho' : [Term Γσ~]Γσ
-  let rho' = renaming (reverseP p)
+  let rho' = {-'-} renaming __IMPOSSIBLE__ (reverseP p)
 
   -- tel4 : [Type Γσ~]Γσ~
   let tel4   = applySubst rho' (permute p tel3)
@@ -182,6 +182,7 @@
           A.VarP{}    -> False
           A.WildP{}   -> False
           A.AbsurdP{} -> False
-          A.DefP{}        -> __IMPOSSIBLE__  -- Projection pattern gives CannotEliminateWithPattern
+          A.ProjP{}        -> __IMPOSSIBLE__  -- Projection pattern gives CannotEliminateWithPattern
+          A.DefP{}        -> __IMPOSSIBLE__
           A.AsP{}         -> __IMPOSSIBLE__
           A.PatternSynP{} -> __IMPOSSIBLE__
diff --git a/src/full/Agda/TypeChecking/Rules/LHS/Problem.hs b/src/full/Agda/TypeChecking/Rules/LHS/Problem.hs
--- a/src/full/Agda/TypeChecking/Rules/LHS/Problem.hs
+++ b/src/full/Agda/TypeChecking/Rules/LHS/Problem.hs
@@ -1,17 +1,13 @@
 -- {-# LANGUAGE CPP #-}
-{-# LANGUAGE DeriveFoldable #-}
-{-# LANGUAGE DeriveFunctor #-}
-{-# LANGUAGE DeriveTraversable #-}
-{-# LANGUAGE FlexibleInstances #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
 
 module Agda.TypeChecking.Rules.LHS.Problem where
 
 import Prelude hiding (null)
 
+import Control.Applicative hiding (empty)
 import Data.Foldable ( Foldable )
 import Data.Maybe ( fromMaybe )
-import Data.Monoid (Monoid, mempty, mappend, mconcat)
+import Data.Semigroup (Semigroup, Monoid, (<>), mempty, mappend, mconcat)
 import Data.Traversable
 
 import Agda.Syntax.Common
@@ -22,11 +18,15 @@
 import qualified Agda.Syntax.Abstract as A
 
 import Agda.TypeChecking.Substitute
-import Agda.TypeChecking.Substitute.Pattern
-import Agda.TypeChecking.Pretty
+import Agda.TypeChecking.Reduce
+import qualified Agda.TypeChecking.Pretty as P
+import Agda.TypeChecking.Pretty hiding ((<>))
 
+import Agda.Utils.List
 import Agda.Utils.Null
 import Agda.Utils.Permutation
+import Agda.Utils.Size
+import qualified Agda.Utils.Pretty as PP
 
 type Substitution   = [Maybe Term]
 type FlexibleVars   = [FlexibleVar Nat]
@@ -47,6 +47,7 @@
 data FlexibleVar a = FlexibleVar
   { flexHiding :: Hiding
   , flexKind   :: FlexibleVarKind
+  , flexPos    :: Maybe Int
   , flexVar    :: a
   } deriving (Eq, Show, Functor, Foldable, Traversable)
 
@@ -55,25 +56,32 @@
   mapHiding f x = x { flexHiding = f (flexHiding x) }
 
 defaultFlexibleVar :: a -> FlexibleVar a
-defaultFlexibleVar a = FlexibleVar Hidden ImplicitFlex a
+defaultFlexibleVar a = FlexibleVar Hidden ImplicitFlex Nothing a
 
 flexibleVarFromHiding :: Hiding -> a -> FlexibleVar a
-flexibleVarFromHiding h a = FlexibleVar h ImplicitFlex a
+flexibleVarFromHiding h a = FlexibleVar h ImplicitFlex Nothing a
 
+allFlexVars :: Telescope -> FlexibleVars
+allFlexVars tel = zipWith makeFlex (downFrom $ size tel) $ telToList tel
+  where
+    makeFlex i d = FlexibleVar (getHiding d) ImplicitFlex (Just i) i
+
 data FlexChoice = ChooseLeft | ChooseRight | ChooseEither | ExpandBoth
   deriving (Eq, Show)
 
+instance Semigroup FlexChoice where
+  ExpandBoth   <> _            = ExpandBoth
+  _            <> ExpandBoth   = ExpandBoth
+  ChooseEither <> y            = y
+  x            <> ChooseEither = x
+  ChooseLeft   <> ChooseRight  = ExpandBoth -- If there's dot patterns on both sides,
+  ChooseRight  <> ChooseLeft   = ExpandBoth -- we need to eta-expand
+  ChooseLeft   <> ChooseLeft   = ChooseLeft
+  ChooseRight  <> ChooseRight  = ChooseRight
+
 instance Monoid FlexChoice where
   mempty = ChooseEither
-
-  ExpandBoth   `mappend` _            = ExpandBoth
-  _            `mappend` ExpandBoth   = ExpandBoth
-  ChooseEither `mappend` y            = y
-  x            `mappend` ChooseEither = x
-  ChooseLeft   `mappend` ChooseRight  = ExpandBoth -- If there's dot patterns on both sides,
-  ChooseRight  `mappend` ChooseLeft   = ExpandBoth -- we need to eta-expand
-  ChooseLeft   `mappend` ChooseLeft   = ChooseLeft
-  ChooseRight  `mappend` ChooseRight  = ChooseRight
+  mappend = (<>)
 
 class ChooseFlex a where
   chooseFlex :: a -> a -> FlexChoice
@@ -90,6 +98,12 @@
 instance ChooseFlex a => ChooseFlex [a] where
   chooseFlex xs ys = mconcat $ zipWith chooseFlex xs ys
 
+instance ChooseFlex a => ChooseFlex (Maybe a) where
+  chooseFlex Nothing Nothing = ChooseEither
+  chooseFlex Nothing (Just y) = ChooseLeft
+  chooseFlex (Just x) Nothing = ChooseRight
+  chooseFlex (Just x) (Just y) = chooseFlex x y
+
 instance ChooseFlex Hiding where
   chooseFlex Hidden   Hidden   = ChooseEither
   chooseFlex Hidden   _        = ChooseLeft
@@ -106,8 +120,9 @@
     GT -> ChooseRight
 
 instance (ChooseFlex a) => ChooseFlex (FlexibleVar a) where
-  chooseFlex (FlexibleVar h1 f1 i1) (FlexibleVar h2 f2 i2) =
-    firstChoice [chooseFlex f1 f2, chooseFlex h1 h2, chooseFlex i1 i2]
+  chooseFlex (FlexibleVar h1 f1 p1 i1) (FlexibleVar h2 f2 p2 i2) =
+    firstChoice [ chooseFlex f1 f2, chooseFlex h1 h2
+                , chooseFlex p1 p2, chooseFlex i1 i2]
       where
         firstChoice :: [FlexChoice] -> FlexChoice
         firstChoice []                  = ChooseEither
@@ -168,7 +183,7 @@
 data Focus
   = Focus
     { focusCon      :: QName
-    , focusPatOrigin:: ConPOrigin -- ^ Do we come from an implicit or record pattern?
+    , focusPatOrigin:: ConOrigin -- ^ Do we come from an implicit or record pattern?
     , focusConArgs  :: [NamedArg A.Pattern]
     , focusRange    :: Range
     , focusOutPat   :: [NamedArg DeBruijnPattern]
@@ -187,8 +202,6 @@
       { splitLPats   :: ProblemPart
         -- ^ The typed user patterns left of the split position.
         --   Invariant: @'problemRest' == empty@.
-      , splitAsNames :: [Name]
-        -- ^ The as-bindings for the focus.
       , splitFocus   :: Arg Focus
         -- ^ How to split the variable at the split position.
       , splitRPats   :: Abs ProblemPart
@@ -199,6 +212,7 @@
     SplitRest
       { splitProjection :: Arg QName
         -- ^ The projection could be belonging to an irrelevant record field.
+      , splitProjOrigin :: ProjOrigin
       , splitRestType   :: Type
       }
 
@@ -217,9 +231,10 @@
 
 -- | Instantiations of a dot pattern with a term.
 --   `Maybe e` if the user wrote a dot pattern .e
---   `Nothing` if this is an instantiation of an implicit argument or an underscore _
+--   `Nothing` if this is an instantiation of an implicit argument or a name.
 data DotPatternInst = DPI
-  { dotPatternUserExpr :: Maybe A.Expr
+  { dotPatternName     :: Maybe A.Name
+  , dotPatternUserExpr :: Maybe A.Expr
   , dotPatternInst     :: Term
   , dotPatternType     :: Dom Type
   }
@@ -228,9 +243,7 @@
 -- | State worked on during the main loop of checking a lhs.
 data LHSState = LHSState
   { lhsProblem :: Problem
-  , lhsSubst   :: PatternSubstitution
   , lhsDPI     :: [DotPatternInst]
-  , lhsAsB     :: [AsBinding]
   }
 
 instance Subst Term ProblemRest where
@@ -241,24 +254,33 @@
                        , problemRest = applySubst rho $ problemRest p }
 
 instance Subst Term DotPatternInst where
-  applySubst rho (DPI e v a) = uncurry (DPI e) $ applySubst rho (v,a)
+  applySubst rho (DPI x e v a) = uncurry (DPI x e) $ applySubst rho (v,a)
 
 instance Subst Term AsBinding where
   applySubst rho (AsB x v a) = uncurry (AsB x) $ applySubst rho (v, a)
 
 instance PrettyTCM DotPatternInst where
-  prettyTCM (DPI me v a) = sep
-    [ prettyA e <+> text "="
+  prettyTCM (DPI mx me v a) = sep
+    [ x <+> text "=" <+> text "." P.<> prettyA e
     , nest 2 $ prettyTCM v <+> text ":"
     , nest 2 $ prettyTCM a
     ]
-    where e = fromMaybe underscore me
+    where x = maybe (text "_") prettyA mx
+          e = fromMaybe underscore me
 
 instance PrettyTCM AsBinding where
   prettyTCM (AsB x v a) =
-    sep [ prettyTCM x <> text "@" <> parens (prettyTCM v)
+    sep [ prettyTCM x P.<> text "@" P.<> parens (prettyTCM v)
         , nest 2 $ text ":" <+> prettyTCM a
         ]
+
+instance PP.Pretty AsBinding where
+  pretty (AsB x v a) =
+    PP.text (show x ++ " =") PP.<+> PP.hang (PP.pretty v PP.<+> PP.text ":") 2
+                                            (PP.pretty a)
+
+instance InstantiateFull AsBinding where
+  instantiateFull' (AsB x v a) = AsB x <$> instantiateFull' v <*> instantiateFull' a
 
 instance Null ProblemRest where
   null  = null . restPats
diff --git a/src/full/Agda/TypeChecking/Rules/LHS/ProblemRest.hs b/src/full/Agda/TypeChecking/Rules/LHS/ProblemRest.hs
--- a/src/full/Agda/TypeChecking/Rules/LHS/ProblemRest.hs
+++ b/src/full/Agda/TypeChecking/Rules/LHS/ProblemRest.hs
@@ -1,8 +1,9 @@
 {-# LANGUAGE CPP           #-}
-{-# LANGUAGE TupleSections #-}
 
 module Agda.TypeChecking.Rules.LHS.ProblemRest where
 
+import Data.Functor ((<$))
+
 import Agda.Syntax.Common
 import Agda.Syntax.Internal
 import qualified Agda.Syntax.Abstract as A
@@ -11,7 +12,6 @@
 import Agda.TypeChecking.Pretty
 import Agda.TypeChecking.Telescope
 import Agda.TypeChecking.Substitute
-import Agda.TypeChecking.Substitute.Pattern
 
 import Agda.TypeChecking.Rules.LHS.Problem
 import Agda.TypeChecking.Rules.LHS.Implicit
@@ -26,19 +26,25 @@
 -- MOVED from LHS:
 -- | Rename the variables in a telescope using the names from a given pattern
 useNamesFromPattern :: [NamedArg A.Pattern] -> Telescope -> Telescope
-useNamesFromPattern ps = telFromList . zipWith ren (toPats ps ++ repeat dummy) . telToList
+useNamesFromPattern ps = telFromList . zipWith ren (map namedArg ps ++ repeat dummy) . telToList
   where
     dummy = A.WildP __IMPOSSIBLE__
-    ren (A.VarP x) (Dom info (_, a)) | notHidden info = Dom info (nameToArgName x, a)
+    ren (A.VarP x) (Dom info (_, a)) | notHidden info && not (isNoName x) =
+      Dom info (nameToArgName x, a)
     ren A.AbsurdP{} (Dom info (_, a)) | notHidden info = Dom info ("()", a)
     -- Andreas, 2013-03-13: inserted the following line in the hope to fix issue 819
     -- but it does not do the job, instead, it puts a lot of "_"s
     -- instead of more sensible names into error messages.
     -- ren A.WildP{}  (Dom info (_, a)) | notHidden info = Dom info ("_", a)
     ren A.PatternSynP{} _ = __IMPOSSIBLE__  -- ensure there are no syns left
+    -- Andreas, 2016-05-10, issue 1848: if context variable has no name, call it "x"
+    ren _ (Dom info (x, a)) | notHidden info && isNoName x =
+      Dom info (stringToArgName "x", a)
     ren _ a = a
-    toPats = map namedArg
 
+useOriginFrom :: (LensOrigin a, LensOrigin b) => [a] -> [b] -> [a]
+useOriginFrom = zipWith $ \x y -> setOrigin (getOrigin y) x
+
 -- | Are there any untyped user patterns left?
 noProblemRest :: Problem -> Bool
 noProblemRest (Problem _ _ _ (ProblemRest ps _)) = null ps
@@ -74,7 +80,9 @@
   -- For the initial problem, do not insert trailing implicits.
   -- This has the effect of not including trailing hidden domains in the problem telescope.
   -- In all later call to insertImplicitPatterns, we can then use ExpandLast.
-  ps <- insertImplicitPatternsT DontExpandLast ps a
+  -- Ulf, 2016-04-25: Actually we do need to ExpandLast because where blocks
+  -- need the implicits.
+  ps <- insertImplicitPatternsT ExpandLast ps a
   -- unless (size tel0' >= size ps) $ typeError $ TooManyArgumentsInLHS a
 
   -- Redo the telView, in order to *not* normalize the clause type further than necessary.
@@ -87,7 +95,7 @@
       pr        = ProblemRest ps2 $ defaultArg b
 
       -- internal patterns start as all variables
-  let ips = teleNamedArgs gamma
+  let ips = teleNamedArgs gamma `useOriginFrom` ps
 
       -- the initial problem for starting the splitting
       problem  = Problem ps1 ips gamma pr :: Problem
@@ -101,7 +109,7 @@
         -- , text "ips   =" <+> prettyTCM ips  -- no prettyTCM instance
            , text "gamma =" <+> prettyTCM gamma
            , text "ps2   =" <+> fsep (map prettyA ps2)
-           , text "b     =" <+> addCtxTel gamma (prettyTCM b)
+           , text "b     =" <+> addContext gamma (prettyTCM b)
            ]
          ]
   return problem
@@ -110,7 +118,7 @@
 --   Possible if type of problem rest has been updated to a function type.
 updateProblemRest_ :: Problem -> TCM (Nat, Problem)
 updateProblemRest_ p@(Problem ps0 qs0 tel0 (ProblemRest ps a)) = do
-      ps <- insertImplicitPatternsT DontExpandLast ps $ unArg a
+      ps <- insertImplicitPatternsT ExpandLast ps $ unArg a
       -- (Issue 734: Do only the necessary telView to preserve clause types as much as possible.)
       TelV tel b   <- telViewUpTo (length ps) $ unArg a
       let gamma     = useNamesFromPattern ps tel
@@ -118,9 +126,9 @@
           (ps1,ps2) = splitAt (size as) ps
           tel1      = telFromList $ telToList tel0 ++ as
           pr        = ProblemRest ps2 (a $> b)
-          qs1       = teleNamedArgs gamma
+          qs1       = teleNamedArgs gamma `useOriginFrom` ps
           n         = size as
-      reportSDoc "tc.lhs.problem" 10 $ addCtxTel tel0 $ vcat
+      reportSDoc "tc.lhs.problem" 10 $ addContext tel0 $ vcat
         [ text "checking lhs -- updated split problem:"
         , nest 2 $ vcat
           [ text "ps    =" <+> fsep (map prettyA ps)
@@ -129,7 +137,7 @@
           , text "ps1   =" <+> fsep (map prettyA ps1)
           , text "gamma =" <+> prettyTCM gamma
           , text "ps2   =" <+> fsep (map prettyA ps2)
-          , text "b     =" <+> addCtxTel gamma (prettyTCM b)
+          , text "b     =" <+> addContext gamma (prettyTCM b)
           ]
         ]
       return $ (n,) $ Problem (ps0 ++ ps1) (applySubst (raiseS n) qs0 ++ qs1) tel1 pr
@@ -141,7 +149,5 @@
     let tau = raiseS n
     return $ LHSState
       { lhsProblem = p'
-      , lhsSubst   = applySubst tau (lhsSubst st)
       , lhsDPI     = applyPatSubst tau (lhsDPI st)
-      , lhsAsB     = applyPatSubst tau (lhsAsB st)
       }
diff --git a/src/full/Agda/TypeChecking/Rules/LHS/Split.hs b/src/full/Agda/TypeChecking/Rules/LHS/Split.hs
--- a/src/full/Agda/TypeChecking/Rules/LHS/Split.hs
+++ b/src/full/Agda/TypeChecking/Rules/LHS/Split.hs
@@ -1,5 +1,4 @@
 {-# LANGUAGE CPP                 #-}
-{-# LANGUAGE PatternGuards       #-}
 {-# LANGUAGE ScopedTypeVariables #-}
 
 module Agda.TypeChecking.Rules.LHS.Split
@@ -15,6 +14,7 @@
 import Data.Maybe (fromMaybe)
 import Data.List hiding (null)
 import Data.Traversable hiding (mapM, sequence)
+import Data.Foldable (msum)
 
 import Agda.Interaction.Options
 import Agda.Interaction.Highlighting.Generate (storeDisambiguatedName)
@@ -25,7 +25,7 @@
 import Agda.Syntax.Position
 import Agda.Syntax.Internal as I
 import Agda.Syntax.Internal.Pattern
-import Agda.Syntax.Abstract (IsProjP(..))
+import Agda.Syntax.Abstract (IsProjP(..), MaybePostfixProjP(..))
 import qualified Agda.Syntax.Abstract as A
 import Agda.Syntax.Abstract.Views (asView)
 import qualified Agda.Syntax.Info as A
@@ -48,6 +48,7 @@
 
 import Agda.TypeChecking.Rules.LHS.Problem
 
+import Agda.Utils.Except (catchError)
 import Agda.Utils.Functor ((<.>))
 import Agda.Utils.Lens
 import Agda.Utils.List
@@ -89,57 +90,92 @@
     -- Result splitting
     splitRest :: ProblemRest -> ListT TCM SplitProblem
     splitRest (ProblemRest (p : ps) b) | Just f <- mf = do
-      let failure   = typeError $ CannotEliminateWithPattern p $ unArg b
-          notProjP  = typeError $ NotAProjectionPattern p
-          notRecord = failure -- lift $ typeError $ ShouldBeRecordType $ unArg b
-          wrongHiding :: MonadTCM tcm => QName -> tcm a
-          wrongHiding d = typeError . GenericDocError =<< do
-            liftTCM $ text "Wrong hiding used for projection " <+> prettyTCM d
       lift $ reportSDoc "tc.lhs.split" 20 $ sep
         [ text "splitting problem rest"
         , nest 2 $ text "pattern         p =" <+> prettyA p
         , nest 2 $ text "eliminates type b =" <+> prettyTCM b
         ]
+      lift $ reportSDoc "tc.lhs.split" 80 $ sep
+        [ nest 2 $ text $ "pattern (raw)   p = " ++ show p
+        ]
       -- If the pattern is not a projection pattern, that's an error.
       -- Probably then there were too many arguments.
-      caseMaybe (isProjP p) failure $ \ d -> do
+      caseMaybe (maybePostfixProjP p) failure $ \ (o, AmbQ ds) -> do
         -- So it is a projection pattern (d = projection name), is it?
-        caseMaybeM (lift $ isProjection d) notProjP $ \ proj -> case proj of
+        projs <- lift $ mapMaybeM (\ d -> fmap (d,) <$> isProjection d) ds
+        when (null projs) notProjP
+        -- If the target is not a record type, that's an error.
+        -- It could be a meta, but since we cannot postpone lhs checking, we crash here.
+        caseMaybeM (lift $ isRecordType $ unArg b) notRecord $ \(r, vs, def) -> case def of
+          Record{ recFields = fs } -> do
+            lift $ reportSDoc "tc.lhs.split" 20 $ sep
+              [ text $ "we are of record type r  = " ++ show r
+              , text   "applied to parameters vs = " <+> prettyTCM vs
+              , text $ "and have fields       fs = " ++ show fs
+              ]
+            -- The record "self" is the definition f applied to the patterns
+            let es = patternsToElims qs
+            -- Note: the module parameters are already part of qs
+            let self = defaultArg $ Def f [] `applyE` es
+                ai   = getArgInfo p
+            -- Try the projection candidates
+            msum $ map (tryProj o ai self fs vs (length projs >= 2)) projs
+
+          _ -> __IMPOSSIBLE__
+      where
+      failure   = lift $ typeError $ CannotEliminateWithPattern p $ unArg b
+      notProjP  = lift $ typeError $ NotAProjectionPattern p
+      notRecord = failure -- lift $ typeError $ ShouldBeRecordType $ unArg b
+      wrongHiding :: MonadTCM tcm => QName -> tcm a
+      wrongHiding d = typeError . GenericDocError =<< do
+        liftTCM $ text "Wrong hiding used for projection " <+> prettyTCM d
+
+      tryProj :: ProjOrigin -> ArgInfo -> Arg Term -> [Arg QName] -> Args -> Bool -> (QName, Projection) -> ListT TCM SplitProblem
+      tryProj o ai self fs vs amb (d0, proj) = do
+        -- Recoverable errors are those coming from the projection.
+        -- If we have several projections (amb) we just try the next one.
+        let ambErr err = if amb then mzero else err
+        case proj of
           -- Andreas, 2015-05-06 issue 1413 projProper=Nothing is not impossible
-          Projection{projProper = Nothing} -> notProjP
-          Projection{projProper = Just d, projIndex = n, projArgInfo = ai} -> do
+          Projection{projProper = False} -> ambErr notProjP
+          Projection{projProper = True, projOrig = d, projLams = lams} -> do
+            let ai = projArgInfo proj
             -- If projIndex==0, then the projection is already applied
             -- to the record value (like in @open R r@), and then it
             -- is no longer a projection but a record field.
-            unless (n > 0) notProjP
-            unless (getHiding p == getHiding ai) $ wrongHiding d
+            when (null lams) $ ambErr notProjP
             lift $ reportSLn "tc.lhs.split" 90 "we are a projection pattern"
             -- If the target is not a record type, that's an error.
             -- It could be a meta, but since we cannot postpone lhs checking, we crash here.
-            caseMaybeM (lift $ isRecordType $ unArg b) notRecord $ \(r, vs, def) -> case def of
-              Record{ recFields = fs } -> do
-                lift $ reportSDoc "tc.lhs.split" 20 $ sep
-                  [ text $ "we are of record type r  = " ++ show r
-                  , text   "applied to parameters vs = " <+> prettyTCM vs
-                  , text $ "and have fields       fs = " ++ show fs
-                  , text $ "original proj         d  = " ++ show d
-                  ]
-                -- Get the field decoration.
-                -- If the projection pattern @d@ is not a field name, that's an error.
-                argd <- maybe failure return $ find ((d ==) . unArg) fs
-                let es = patternsToElims qs
-                -- the record "self" is the definition f applied to the patterns
-                fvs <- lift $ freeVarsToApply f
-                let self = defaultArg $ Def f (map Apply fvs) `applyE` es
-                -- get the type of projection d applied to "self"
-                dType <- lift $ defType <$> getConstInfo d  -- full type!
+            lift $ reportSDoc "tc.lhs.split" 20 $ sep
+              [ text $ "proj                  d0 = " ++ show d0
+              , text $ "original proj         d  = " ++ show d
+              ]
+            -- Get the field decoration.
+            -- If the projection pattern name @d@ is not a field name,
+            -- we have to try the next projection name.
+            -- If this was not an ambiguous projection, that's an error.
+            argd <- maybe (ambErr failure) return $ find ((d ==) . unArg) fs
+            let ai' = setRelevance (getRelevance argd) ai
 
-                lift $ reportSDoc "tc.lhs.split" 20 $ sep
-                  [ text "we are              self = " <+> prettyTCM (unArg self)
-                  , text "being projected by dType = " <+> prettyTCM dType
-                  ]
-                lift $ SplitRest argd <$> dType `piApplyM` (vs ++ [self])
-              _ -> __IMPOSSIBLE__
+            -- From here, we have the correctly disambiguated projection.
+            -- Thus, we no longer catch errors.
+            unless (getHiding p == getHiding ai) $ wrongHiding d
+
+            -- For highlighting, we remember which name we disambiguated to.
+            -- This is safe here (fingers crossed) as we won't decide on a
+            -- different projection even if we backtrack and come here again.
+            lift $ storeDisambiguatedName d0
+
+            -- Get the type of projection d applied to "self"
+            dType <- lift $ defType <$> getConstInfo d  -- full type!
+            lift $ reportSDoc "tc.lhs.split" 20 $ sep
+              [ text "we are              self = " <+> prettyTCM (unArg self)
+              , text "being projected by dType = " <+> prettyTCM dType
+              ]
+            -- This should succeed, as we have the correctly disambiguated.
+            lift $ SplitRest (Arg ai' d0) o <$> dType `piApplyM` (vs ++ [self])
+
     -- if there are no more patterns left in the problem rest, there is nothing to split:
     splitRest _ = mzero
 
@@ -168,6 +204,9 @@
         , nest 2 $ text "dom =" <+> prettyTCM dom
         ]
 
+      -- Andreas, 2016-06-30, issue #2075: need test here!
+      unless (getHiding p == getHiding ai) $ typeError WrongHidingInLHS
+
       -- Possible reinvokations:
       let -- 1. Redo this argument (after meta instantiation).
           tryAgain = splitP ps0 tel0
@@ -176,16 +215,14 @@
             underAbstraction dom xtel $ \ tel -> splitP ps tel
 
       p <- lift $ expandLitPattern p
-      case asView $ namedArg p of
+      case snd $ asView $ namedArg p of
 
         -- Case: projection pattern.  That's an error.
-        (_, A.DefP _ d ps) -> typeError $
-          if null ps
-          then CannotEliminateWithPattern p (telePi tel0 $ unArg $ restType pr)
-          else IllformedProjectionPattern $ namedArg p
+        A.ProjP{} -> typeError $
+          CannotEliminateWithPattern p (telePi tel0 $ unArg $ restType pr)
 
         -- Case: literal pattern.
-        (xs, p@(A.LitP lit))  -> do
+        p@(A.LitP lit)  -> do
           -- Note that, in the presence of --without-K, this branch is
           -- based on the assumption that the types of literals are
           -- not indexed.
@@ -199,14 +236,13 @@
             {- then -} keepGoing $
             {- else -} return Split
               { splitLPats   = empty
-              , splitAsNames = xs
               , splitFocus   = Arg ai $ LitFocus lit qs a
               , splitRPats   = Abs x  $ Problem ps () tel __IMPOSSIBLE__
               }
               `mplus` keepGoing
 
         -- Case: record pattern
-        (xs, p@(A.RecP _patInfo fs)) -> do
+        p@(A.RecP _patInfo fs) -> do
           res <- lift $ tryRecordType a
           case res of
             -- Subcase: blocked
@@ -238,15 +274,16 @@
               args <- lift $ insertMissingFields d (const $ A.WildP A.patNoRange) fs axs
               (return Split
                 { splitLPats   = empty
-                , splitAsNames = xs
-                , splitFocus   = Arg ai $ Focus c ConPRec args (getRange p) qs d pars ixs a
+                , splitFocus   = Arg ai $ Focus c ConORec args (getRange p) qs d pars ixs a
                 , splitRPats   = Abs x  $ Problem ps () tel __IMPOSSIBLE__
                 }) `mplus` keepGoing
 
         -- Case: constructor pattern.
-        (xs, p@(A.ConP ci (A.AmbQ cs) args)) -> do
+        p@(A.ConP ci (A.AmbQ cs) args) -> do
           let tryInstantiate a'
                 | [c] <- cs = do
+                  lift $ reportSDoc "tc.lhs.split" 30 $
+                    text "split ConP: type is blocked"
                     -- Type is blocked by a meta and constructor is unambiguous,
                     -- in this case try to instantiate the meta.
                   ok <- lift $ do
@@ -256,9 +293,13 @@
                     Sort s <- ignoreSharing . unEl <$> reduce (piApply dt vs)
                     tryConversion $ equalType a' (El s $ Def d $ map Apply vs)
                   if ok then tryAgain else keepGoing
-                | otherwise = keepGoing
+                | otherwise = do
+                  lift $ reportSDoc "tc.lhs.split" 30 $
+                    text "split ConP: type is blocked and constructor is ambiguous"
+                  keepGoing
           -- ifBlockedType reduces the type
           ifBlockedType a (const tryInstantiate) $ \ a' -> do
+            lift $ reportSDoc "tc.lhs.split" 30 $ text "split ConP: type is " <+> prettyTCM a'
             case ignoreSharing $ unEl a' of
 
               -- Subcase: split type is a Def.
@@ -326,7 +367,6 @@
 
                       (return Split
                         { splitLPats   = empty
-                        , splitAsNames = xs
                         , splitFocus   = Arg ai $ Focus c (A.patOrigin ci) args (getRange p) qs d pars ixs a
                         , splitRPats   = Abs x  $ Problem ps () tel __IMPOSSIBLE__
                         }) `mplus` keepGoing
diff --git a/src/full/Agda/TypeChecking/Rules/LHS/Unify.hs b/src/full/Agda/TypeChecking/Rules/LHS/Unify.hs
--- a/src/full/Agda/TypeChecking/Rules/LHS/Unify.hs
+++ b/src/full/Agda/TypeChecking/Rules/LHS/Unify.hs
@@ -1,18 +1,107 @@
 {-# LANGUAGE CPP                        #-}
 {-# LANGUAGE DeriveDataTypeable         #-}
-{-# LANGUAGE DeriveFoldable             #-}
-{-# LANGUAGE DeriveFunctor              #-}
-{-# LANGUAGE DeriveTraversable          #-}
-{-# LANGUAGE DoAndIfThenElse            #-}
-{-# LANGUAGE FlexibleContexts           #-}
-{-# LANGUAGE FlexibleInstances          #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
-{-# LANGUAGE MultiParamTypeClasses      #-}
-{-# LANGUAGE PatternGuards              #-}
-{-# LANGUAGE TupleSections              #-}
+{-# LANGUAGE NondecreasingIndentation   #-}
+{-# LANGUAGE ScopedTypeVariables        #-}
 {-# LANGUAGE UndecidableInstances       #-}
-{-# LANGUAGE StandaloneDeriving         #-}
+{-# LANGUAGE ViewPatterns               #-}
 
+-- | Unification algorithm for specializing datatype indices, as described in
+--     \"Unifiers as Equivalences: Proof-Relevant Unification of Dependently
+--     Typed Data\" by Jesper Cockx, Dominique Devriese, and Frank Piessens
+--     (ICFP 2016).
+--
+--   This is the unification algorithm used for checking the left-hand side
+--   of clauses (see @Agda.TypeChecking.Rules.LHS@), coverage checking (see
+--   @Agda.TypeChecking.Coverage@) and indirectly also for interactive case
+--   splitting (see @Agda.Interaction.MakeCase@).
+--
+--   A unification problem (of type @UnifyState@) consists of:
+--   1. A telescope @varTel@ of free variables, some or all of which are
+--      flexible (as indicated by @flexVars@).
+--   2. A telescope @eqTel@ containing the types of the equations.
+--   3. Left- and right-hand sides for each equation:
+--      @varTel ⊢ eqLHS : eqTel@ and @varTel ⊢ eqRHS : eqTel@.
+--
+--   The unification algorithm can end in three different ways:
+--   (type @UnificationResult@):
+--   - A *positive success* @Unifies (tel, sigma, ps)@ with @tel ⊢ sigma : varTel@,
+--     @tel ⊢ eqLHS [ varTel ↦ sigma ] ≡ eqRHS [ varTel ↦ sigma ] : eqTel@,
+--     and @tel ⊢ ps : eqTel@. In this case, @sigma;ps@ is an *equivalence*
+--     between the telescopes @tel@ and @varTel(eqLHS ≡ eqRHS)@.
+--   - A *negative success* @NoUnify err@ means that a conflicting equation
+--     was found (e.g an equation between two distinct constructors or a cycle).
+--   - A *failure* @DontKnow err@ means that the unifier got stuck.
+--
+--   The unification algorithm itself consists of two parts:
+--   1. A *unification strategy* takes a unification problem and produces a
+--      list of suggested unification rules (of type @UnifyStep@). Strategies
+--      can be constructed by composing simpler strategies (see for example the
+--      definition of @completeStrategyAt@).
+--   2. The *unification engine* @unifyStep@ takes a unification rule and tries
+--      to apply it to the given state, writing the result to the UnifyOutput
+--      on a success.
+--
+--   The unification steps (of type @UnifyStep@) are the following:
+--   - *Deletion* removes a reflexive equation @u =?= v : a@ if the left- and
+--     right-hand side @u@ and @v@ are (definitionally) equal. This rule results
+--     in a failure if --without-K is enabled (see \"Pattern Matching Without K\"
+--     by Jesper Cockx, Dominique Devriese, and Frank Piessens (ICFP 2014).
+--   - *Solution* solves an equation if one side is (eta-equivalent to) a
+--     flexible variable. In case both sides are flexible variables, the
+--     unification strategy makes a choice according to the @chooseFlex@
+--     function in @Agda.TypeChecking.Rules.LHS.Problem@.
+--   - *Injectivity* decomposes an equation of the form
+--     @c us =?= c vs : D pars is@ where @c : Δc → D pars js@ is a constructor
+--     of the inductive datatype @D@ into a sequence of equations
+--     @us =?= vs : delta@. In case @D@ is an indexed datatype,
+--     *higher-dimensional unification* is applied (see below).
+--   - *Conflict* detects absurd equations of the form
+--     @c₁ us =?= c₂ vs : D pars is@ where @c₁@ and @c₂@ are two distinct
+--     constructors of the datatype @D@.
+--   - *Cycle* detects absurd equations of the form @x =?= v : D pars is@ where
+--     @x@ is a variable of the datatype @D@ that occurs strongly rigid in @v@.
+--   - *EtaExpandVar* eta-expands a single flexible variable @x : R@ where @R@
+--     is a (eta-expandable) record type, replacing it by one variable for each
+--     field of @R@.
+--   - *EtaExpandEquation* eta-expands an equation @u =?= v : R@ where @R@ is a
+--     (eta-expandable) record type, replacing it by one equation for each field
+--     of @R@. The left- and right-hand sides of these equations are the
+--     projections of @u@ and @v@.
+--   - *LitConflict* detects absurd equations of the form @l₁ =?= l₂ : A@ where
+--     @l₁@ and @l₂@ are distinct literal terms.
+--   - *StripSizeSuc* simplifies an equation of the form
+--     @sizeSuc x =?= sizeSuc y : Size@ to @x =?= y : Size@.
+--   - *SkipIrrelevantEquation@ removes an equation between irrelevant terms.
+--   - *TypeConInjectivity* decomposes an equation of the form
+--     @D us =?= D vs : Set i@ where @D@ is a datatype. This rule is only used
+--     if --injective-type-constructors is enabled.
+--
+--   Higher-dimensional unification (new, does not yet appear in any paper):
+--   If an equation of the form @c us =?= c vs : D pars is@ is encountered where
+--   @c : Δc → D pars js@ is a constructor of an indexed datatype
+--   @D pars : Φ → Set ℓ@, it is in general unsound to just simplify this
+--   equation to @us =?= vs : Δc@. For this reason, the injectivity rule in the
+--   paper restricts the indices @is@ to be distinct variables that are bound in
+--   the telescope @eqTel@. But we can be more general by introducing new
+--   variables @ks@ to the telescope @eqTel@ and equating these to @is@:
+--   @
+--       Δ₁(x : D pars is)Δ₂
+--        ≃
+--       Δ₁(ks : Φ)(x : D pars ks)(ps : is ≡Φ ks)Δ₂
+--   @
+--   Since @ks@ are distinct variables, it's now possible to apply injectivity
+--   to the equation @x@, resulting in the following new equation telescope:
+--   @
+--     Δ₁(ys : Δc)(ps : is ≡Φ js[Δc ↦ ys])Δ₂
+--   @
+--   Now we can solve the equations @ps@ by recursively calling the unification
+--   algorithm with flexible variables @Δ₁(ys : Δc)@. This is called
+--   *higher-dimensional unification* since we are unifying equality proofs
+--   rather than terms. If the higher-dimensional unification succeeds, the
+--   resulting telescope serves as the new equation telescope for the original
+--   unification problem.
+
 module Agda.TypeChecking.Rules.LHS.Unify
   ( UnificationResult
   , UnificationResult'(..)
@@ -30,23 +119,21 @@
 import Control.Monad.Reader
 import Control.Monad.Writer (WriterT(..), MonadWriter(..), Monoid(..))
 
-import Data.IntMap (IntMap)
-import qualified Data.IntMap as IntMap
 import Data.Map (Map)
 import qualified Data.Map as Map
-import Data.Monoid
+import Data.Semigroup hiding (Arg)
 import Data.List hiding (null, sort)
-import Data.IntSet (IntSet)
-import qualified Data.IntSet as IntSet
 
 import Data.Typeable (Typeable)
 import Data.Foldable (Foldable)
 import Data.Traversable (Traversable,traverse)
+import qualified Data.Traversable as Trav
 
 import Agda.Interaction.Options (optInjectiveTypeConstructors)
 
 import Agda.Syntax.Common
 import Agda.Syntax.Internal
+import Agda.Syntax.Internal.Pattern
 import Agda.Syntax.Literal
 import Agda.Syntax.Position
 
@@ -60,10 +147,10 @@
 import Agda.TypeChecking.DropArgs
 import Agda.TypeChecking.Level (reallyUnLevelView)
 import Agda.TypeChecking.Reduce
-import Agda.TypeChecking.Pretty
+import qualified Agda.TypeChecking.Patterns.Match as Match
+import Agda.TypeChecking.Pretty hiding ((<>))
 import Agda.TypeChecking.SizedTypes (compareSizes)
 import Agda.TypeChecking.Substitute
-import Agda.TypeChecking.Substitute.Pattern
 import Agda.TypeChecking.Telescope
 import Agda.TypeChecking.Free
 import Agda.TypeChecking.Records
@@ -92,7 +179,11 @@
 import Agda.Utils.Impossible
 
 -- | Result of 'unifyIndices'.
-type UnificationResult = UnificationResult' (Telescope, PatternSubstitution)
+type UnificationResult = UnificationResult'
+  ( Telescope                  -- @tel@
+  , PatternSubstitution        -- @sigma@ s.t. @tel ⊢ sigma : varTel@
+  , [NamedArg DeBruijnPattern] -- @ps@    s.t. @tel ⊢ ps    : eqTel @
+  )
 
 data UnificationResult' a
   = Unifies  a      -- ^ Unification succeeded.
@@ -119,7 +210,7 @@
               -> Type
               -> Args
               -> Args
-              -> tcm (Telescope, PatternSubstitution)
+              -> tcm (Telescope, PatternSubstitution, [NamedArg DeBruijnPattern])
 unifyIndices_ tel flex a us vs = liftTCM $ do
   r <- unifyIndices tel flex a us vs
   case r of
@@ -134,20 +225,22 @@
              -> Args
              -> Args
              -> tcm UnificationResult
+unifyIndices tel flex a [] [] = return $ Unifies (tel, idS, [])
 unifyIndices tel flex a us vs = liftTCM $ Bench.billTo [Bench.Typing, Bench.CheckLHS, Bench.UnifyIndices] $ do
     reportSDoc "tc.lhs.unify" 10 $
       sep [ text "unifyIndices"
           , nest 2 $ prettyTCM tel
-          , nest 2 $ addCtxTel tel $ text (show flex)
-          , nest 2 $ addCtxTel tel $ parens (prettyTCM a)
-          , nest 2 $ addCtxTel tel $ prettyList $ map prettyTCM us
-          , nest 2 $ addCtxTel tel $ prettyList $ map prettyTCM vs
+          , nest 2 $ addContext tel $ text $ show $ map flexVar flex
+          , nest 2 $ addContext tel $ parens (prettyTCM a)
+          , nest 2 $ addContext tel $ prettyList $ map prettyTCM us
+          , nest 2 $ addContext tel $ prettyList $ map prettyTCM vs
           ]
     initialState    <- initUnifyState tel flex a us vs
     reportSDoc "tc.lhs.unify" 20 $ text "initial unifyState:" <+> prettyTCM initialState
     reportSDoc "tc.lhs.unify" 70 $ text "initial unifyState:" <+> text (show initialState)
     (result,output) <- runUnifyM $ unify initialState rightToLeftStrategy
-    return $ fmap (\s -> (varTel s , unifySubst output)) result
+    let ps = applySubst (unifyProof output) $ teleNamedArgs (eqTel initialState)
+    return $ fmap (\s -> (varTel s , unifySubst output , ps)) result
 
 ----------------------------------------------------
 -- Equalities
@@ -179,8 +272,8 @@
   { varTel   :: Telescope
   , flexVars :: FlexibleVars
   , eqTel    :: Telescope
-  , eqLHS    :: [Term]
-  , eqRHS    :: [Term]
+  , eqLHS    :: [Arg Term]
+  , eqRHS    :: [Arg Term]
   } deriving (Show)
 
 instance Reduce UnifyState where
@@ -220,11 +313,11 @@
   return $ s { eqTel = tel }
 
 instance PrettyTCM UnifyState where
-  prettyTCM state = text "UnifyState" <+> nest 2 (vcat $
-    [ text "  variable tel:  " <+> prettyTCM gamma
-    , text "  flexible vars: " <+> prettyTCM (map flexVar $ flexVars state)
-    , text "  equation tel:  " <+> addCtxTel gamma (prettyTCM delta)
-    , text "  equations:     " <+> addCtxTel gamma (prettyList_ (zipWith prettyEquality (eqLHS state) (eqRHS state)))
+  prettyTCM state = text "UnifyState" $$ nest 2 (vcat $
+    [ text "variable tel:  " <+> prettyTCM gamma
+    , text "flexible vars: " <+> prettyTCM (map flexVar $ flexVars state)
+    , text "equation tel:  " <+> addContext gamma (prettyTCM delta)
+    , text "equations:     " <+> addContext gamma (prettyList_ (zipWith prettyEquality (eqLHS state) (eqRHS state)))
     ])
     where
       gamma = varTel state
@@ -232,11 +325,9 @@
       prettyEquality x y = prettyTCM x <+> text "=?=" <+> prettyTCM y
 
 initUnifyState :: Telescope -> FlexibleVars -> Type -> Args -> Args -> TCM UnifyState
-initUnifyState tel flex a us vs = do
-  let lhs = map unArg us
-      rhs = map unArg vs
-      n   = size lhs
-  unless (n == size lhs) __IMPOSSIBLE__
+initUnifyState tel flex a lhs rhs = do
+  let n = size lhs
+  unless (n == size rhs) __IMPOSSIBLE__
   TelV eqTel _ <- telView a
   unless (n == size eqTel) __IMPOSSIBLE__
   reduce $ UState tel flex eqTel lhs rhs
@@ -263,20 +354,22 @@
 getEquality :: Int -> UnifyState -> Equality
 getEquality k UState { eqTel = eqs, eqLHS = lhs, eqRHS = rhs } =
   if k < 0 then __IMPOSSIBLE__ else
-    Equal (unDom $ (flattenTel eqs) !! k) (lhs !! k) (rhs !! k)
+    Equal (unDom $ (flattenTel eqs) !! k) (unArg $ lhs !! k) (unArg $ rhs !! k)
 
 -- | As getEquality, but with the unraised type
 getEqualityUnraised :: Int -> UnifyState -> Equality
 getEqualityUnraised k UState { eqTel = eqs, eqLHS = lhs, eqRHS = rhs } =
   if k < 0 then __IMPOSSIBLE__ else
-    Equal (snd . unDom $ (telToList eqs) !! k) (lhs !! k) (rhs !! k)
+    Equal (snd . unDom $ (telToList eqs) !! k)
+          (unArg $ lhs !! k)
+          (unArg $ rhs !! k)
 
 getEqInfo :: Int -> UnifyState -> ArgInfo
 getEqInfo k UState { eqTel = eqs } =
   if k < 0 then __IMPOSSIBLE__ else domInfo $ telToList eqs !! k
 
 -- | Add a list of equations to the front of the equation telescope
-addEqs :: Telescope -> [Term] -> [Term] -> UnifyState -> UnifyState
+addEqs :: Telescope -> [Arg Term] -> [Arg Term] -> UnifyState -> UnifyState
 addEqs tel us vs s =
   s { eqTel = tel `abstract` eqTel s
     , eqLHS = us ++ eqLHS s
@@ -284,7 +377,7 @@
     }
   where k = size tel
 
-addEq :: Type -> Term -> Term -> UnifyState -> UnifyState
+addEq :: Type -> Arg Term -> Arg Term -> UnifyState -> UnifyState
 addEq a u v = addEqs (ExtendTel (defaultDom a) (Abs underscore EmptyTel)) [u] [v]
 
 
@@ -304,8 +397,8 @@
   where
     permuteFlex :: Permutation -> FlexibleVars -> FlexibleVars
     permuteFlex perm =
-      mapMaybe $ \(FlexibleVar h k x) ->
-        FlexibleVar h k <$> findIndex (x==) (permPicks perm)
+      mapMaybe $ \(FlexibleVar h k p x) ->
+        FlexibleVar h k p <$> findIndex (x==) (permPicks perm)
 
 applyUnder :: Int -> Telescope -> Term -> Telescope
 applyUnder k tel u
@@ -325,21 +418,23 @@
 
 -- | Solve the k'th equation with the given value, which can depend on
 --   regular variables but not on other equation variables.
-solveEq :: Int -> Term -> UnifyState -> UnifyState
-solveEq k u s = s
-    { eqTel    = applyUnder k (eqTel s) (raise k u)
+solveEq :: Int -> Term -> UnifyState -> (UnifyState, PatternSubstitution)
+solveEq k u s = (,sigma) $ s
+    { eqTel    = applyUnder k (eqTel s) u'
     , eqLHS    = dropAt k $ eqLHS s
     , eqRHS    = dropAt k $ eqRHS s
     }
   where
-
+    u'    = raise k u
+    n     = eqCount s
+    sigma = liftS (n-k-1) $ consS (DotP u') idS
 
 -- | Simplify the k'th equation with the given value (which can depend on other
 --   equation variables). Returns Nothing if there is a cycle.
-simplifyEq :: Int -> Term -> UnifyState -> Maybe UnifyState
+simplifyEq :: Int -> Term -> UnifyState -> Maybe (UnifyState, PatternSubstitution)
 simplifyEq k u s = case instantiateTelescope (eqTel s) k u of
   Nothing -> Nothing
-  Just (tel' , sigma , rho) -> Just $ UState
+  Just (tel' , sigma , rho) -> Just $ (,sigma) $ UState
     { varTel   = varTel s
     , flexVars = flexVars s
     , eqTel    = tel'
@@ -371,8 +466,6 @@
     , injectParameters   :: Args
     , injectIndices      :: Args
     , injectConstructor  :: ConHead
-    , injectArgsLeft     :: Args
-    , injectArgsRight    :: Args
     }
   | Conflict
     { conflictAt         :: Int
@@ -419,6 +512,73 @@
     , typeConArgsRight   :: Args
     } deriving (Show)
 
+instance PrettyTCM UnifyStep where
+  prettyTCM step = case step of
+    Deletion k a u v -> text "Deletion" $$ nest 2 (vcat $
+      [ text "position:   " <+> text (show k)
+      , text "type:       " <+> text (show a)
+      , text "lhs:        " <+> text (show u)
+      , text "rhs:        " <+> text (show v)
+      ])
+    Solution k a i u -> text "Solution" $$ nest 2 (vcat $
+      [ text "position:   " <+> text (show k)
+      , text "type:       " <+> text (show a)
+      , text "variable:   " <+> text (show i)
+      , text "term:       " <+> text (show u)
+      ])
+    Injectivity k a d pars ixs c -> text "Injectivity" $$ nest 2 (vcat $
+      [ text "position:   " <+> text (show k)
+      , text "type:       " <+> text (show a)
+      , text "datatype:   " <+> text (show d)
+      , text "parameters: " <+> text (show pars)
+      , text "indices:    " <+> text (show ixs)
+      , text "constructor:" <+> text (show c)
+      ])
+    Conflict k d pars c1 c2 -> text "Conflict" $$ nest 2 (vcat $
+      [ text "position:   " <+> text (show k)
+      , text "datatype:   " <+> text (show d)
+      , text "parameters: " <+> text (show pars)
+      , text "con1:       " <+> text (show c1)
+      , text "con2:       " <+> text (show c2)
+      ])
+    Cycle k d pars i u -> text "Cycle" $$ nest 2 (vcat $
+      [ text "position:   " <+> text (show k)
+      , text "datatype:   " <+> text (show d)
+      , text "parameters: " <+> text (show pars)
+      , text "variable:   " <+> text (show i)
+      , text "term:       " <+> text (show u)
+      ])
+    EtaExpandVar fi r pars -> text "EtaExpandVar" $$ nest 2 (vcat $
+      [ text "variable:   " <+> text (show fi)
+      , text "record type:" <+> text (show r)
+      , text "parameters: " <+> text (show pars)
+      ])
+    EtaExpandEquation k r pars -> text "EtaExpandVar" $$ nest 2 (vcat $
+      [ text "position:   " <+> text (show k)
+      , text "record type:" <+> text (show r)
+      , text "parameters: " <+> text (show pars)
+      ])
+    LitConflict k a u v -> text "LitConflict" $$ nest 2 (vcat $
+      [ text "position:   " <+> text (show k)
+      , text "type:       " <+> text (show a)
+      , text "lhs:        " <+> text (show u)
+      , text "rhs:        " <+> text (show v)
+      ])
+    StripSizeSuc k u v -> text "StripSizeSuc" $$ nest 2 (vcat $
+      [ text "position:   " <+> text (show k)
+      , text "lhs:        " <+> text (show u)
+      , text "rhs:        " <+> text (show v)
+      ])
+    SkipIrrelevantEquation k -> text "SkipIrrelevantEquation" $$ nest 2 (vcat $
+      [ text "position:   " <+> text (show k)
+      ])
+    TypeConInjectivity k d us vs -> text "TypeConInjectivity" $$ nest 2 (vcat $
+      [ text "position:   " <+> text (show k)
+      , text "datatype:   " <+> text (show d)
+      , text "lhs:        " <+> text (show us)
+      , text "rhs:        " <+> text (show vs)
+      ])
+
 type UnifyStrategy = UnifyState -> ListT TCM UnifyStep
 
 leftToRightStrategy :: UnifyStrategy
@@ -435,8 +595,8 @@
 completeStrategyAt k s = msum $ map (\strat -> strat k s) $
     [ skipIrrelevantStrategy
     , basicUnifyStrategy
-    , dataStrategy
     , literalStrategy
+    , dataStrategy
     , etaExpandVarStrategy
     , etaExpandEquationStrategy
     , injectiveTypeConStrategy
@@ -448,7 +608,6 @@
 isHom :: (Free' a All, Subst Term a) => Int -> a -> Maybe a
 isHom n x = do
   guard $ getAll $ runFree (\ (i,_) -> All (i >= n)) IgnoreNot x
-  --guard $ null $ allFreeVars x `IntSet.intersection` IntSet.fromAscList [0..k-1]
   return $ raise (-n) x
 
 -- | Checks whether the given term (of the given type) is beta-eta-equivalent
@@ -479,8 +638,9 @@
           guard =<< do liftTCM $ isEtaRecord d
           fs <- liftTCM $ map unArg . recFields . theDef <$> getConstInfo d
           is <- forM fs $ \f -> do
-            (_, fa) <- MaybeT $ projectTyped u a f
-            isEtaVarG (u `applyE` [Proj f]) fa mi (es++[Proj f])
+            let o = ProjSystem
+            (_, _, fa) <- MaybeT $ projectTyped u a o f
+            isEtaVarG (u `applyE` [Proj o f]) fa mi (es ++ [Proj o f])
           case (mi, is) of
             (Just i, _)     -> return i
             (Nothing, [])   -> mzero
@@ -500,17 +660,17 @@
     areEtaVarElims u a []    []    = return ()
     areEtaVarElims u a []    (_:_) = mzero
     areEtaVarElims u a (_:_) []    = mzero
-    areEtaVarElims u a (Proj f : es) (Proj f' : es') = do
+    areEtaVarElims u a (Proj o f : es) (Proj _ f' : es') = do
       guard $ f == f'
       a       <- liftTCM $ reduce a
-      (_, fa) <- MaybeT $ projectTyped u a f
-      areEtaVarElims (u `applyE` [Proj f]) fa es es'
+      (_, _, fa) <- MaybeT $ projectTyped u a o f
+      areEtaVarElims (u `applyE` [Proj o f]) fa es es'
     -- These two cases can occur only when we're looking at two different
     -- variables (i.e. one of function type and the other of record type) so
     -- it's definitely not the variable we're looking for (or someone is playing
     -- Jedi mind tricks on us)
-    areEtaVarElims u a (Proj  _ : _ ) (Apply _ : _  ) = mzero
-    areEtaVarElims u a (Apply _ : _ ) (Proj  _ : _  ) = mzero
+    areEtaVarElims u a (Proj{}  : _ ) (Apply _ : _  ) = mzero
+    areEtaVarElims u a (Apply _ : _ ) (Proj{}  : _  ) = mzero
     areEtaVarElims u a (Apply v : es) (Apply i : es') = do
       ifNotPiType a (const mzero) $ \dom cod -> do
       _ <- isEtaVarG (unArg v) (unDom dom) (Just $ unArg i) []
@@ -526,7 +686,7 @@
 basicUnifyStrategy k s = do
   Equal a u v <- liftTCM $ eqUnLevel (getEquality k s)
   ha <- mfromMaybe $ isHom n a
-  (mi, mj) <- liftTCM $ addCtxTel (varTel s) $ (,) <$> isEtaVar u ha <*> isEtaVar v ha
+  (mi, mj) <- liftTCM $ addContext (varTel s) $ (,) <$> isEtaVar u ha <*> isEtaVar v ha
   liftTCM $ reportSDoc "tc.lhs.unify" 30 $ text "isEtaVar results: " <+> text (show [mi,mj])
   case (mi, mj) of
     (Just i, Just j)
@@ -554,24 +714,24 @@
 
 dataStrategy :: Int -> UnifyStrategy
 dataStrategy k s = do
-  Equal a u v <- liftTCM $ eqConstructorForm =<< eqUnLevel (getEquality k s)
-  case a of
-    El _ (Def d es) -> do
+  Equal a u v <- liftTCM $ eqConstructorForm =<< eqUnLevel (getEqualityUnraised k s)
+  case ignoreSharing $ unEl a of
+    Def d es -> do
       npars <- mcatMaybes $ liftTCM $ getNumberOfParameters d
       let (pars,ixs) = splitAt npars $ fromMaybe __IMPOSSIBLE__ $ allApplyElims es
-      hpars <- mfromMaybe $ isHom (eqCount s) pars
+      hpars <- mfromMaybe $ isHom k pars
       liftTCM $ reportSDoc "tc.lhs.unify" 40 $ addContext (varTel s `abstract` eqTel s) $
         text "Found equation at datatype " <+> prettyTCM d
          <+> text " with (homogeneous) parameters " <+> prettyTCM hpars
-      case (u, v) of
-        (MetaV m es, Con c vs  ) -> do
-          us <- mcatMaybes $ liftTCM $ addContext (varTel s) $ instMetaCon m es d hpars c
-          return $ Injectivity k a d hpars ixs c us vs
-        (Con c us  , MetaV m es) -> do
-          vs <- mcatMaybes $ liftTCM $ addContext (varTel s) $ instMetaCon m es d hpars c
-          return $ Injectivity k a d hpars ixs c us vs
-        (Con c us  , Con c' vs ) | c == c' -> return $ Injectivity k a d hpars ixs c us vs
-        (Con c _   , Con c' _  ) -> return $ Conflict k d hpars c c'
+      case (ignoreSharing u, ignoreSharing v) of
+        (MetaV m es, Con c ci _   ) -> do
+          us <- mcatMaybes $ liftTCM $ addContext (varTel s) $ instMetaCon m es d hpars c ci
+          return $ Injectivity k a d hpars ixs c
+        (Con c ci _   , MetaV m es) -> do
+          vs <- mcatMaybes $ liftTCM $ addContext (varTel s) $ instMetaCon m es d hpars c ci
+          return $ Injectivity k a d hpars ixs c
+        (Con c _ _   , Con c' _ _  ) | c == c' -> return $ Injectivity k a d hpars ixs c
+        (Con c _ _   , Con c' _ _  ) -> return $ Conflict k d hpars c c'
         (Var i []  , v         ) -> ifOccursStronglyRigid i v $ return $ Cycle k d hpars i v
         (u         , Var j []  ) -> ifOccursStronglyRigid j u $ return $ Cycle k d hpars j u
         _ -> mzero
@@ -588,9 +748,10 @@
 
     -- Instantiate the meta with a constructor applied to fresh metas
     -- Returns the fresh metas if successful
-    instMetaCon :: MetaId -> Elims -> QName -> Args -> ConHead -> TCM (Maybe Args)
-    instMetaCon m es d pars c = case allApplyElims es of
-      Just us -> ifNotM (asks envAssignMetas) (return Nothing) $ do
+    instMetaCon :: MetaId -> Elims -> QName -> Args -> ConHead -> ConInfo -> TCM (Maybe Args)
+    instMetaCon m es d pars c ci = do
+      caseMaybe (allApplyElims es) (return Nothing) $ \ us -> do
+        ifNotM (asks envAssignMetas) (return Nothing) $ {-else-} tryMaybe $ do
           reportSDoc "tc.lhs.unify" 60 $
             text "Trying to instantiate the meta" <+> prettyTCM (MetaV m es) <+>
             text "with the constructor" <+> prettyTCM c <+> text "applied to fresh metas"
@@ -602,15 +763,29 @@
             reportSDoc "tc.lhs.unify" 80 $ text "Type of constructor: " <+> prettyTCM ctype
             withMetaInfo' mv $ do
               let perm = mvPermutation mv
-              tel <- permuteTel perm <$> (instantiateFull =<< getContextTelescope)
+              reportSDoc "tc.lhs.unify" 100 $ vcat
+                [ text "Permutation of meta: " <+> prettyTCM perm
+                ]
+              cxt <- instantiateFull =<< getContextTelescope
+              reportSDoc "tc.lhs.unify" 100 $ do
+                let flat = flattenTel cxt
+                let badRen  :: Substitution = renaming __IMPOSSIBLE__ perm
+                let goodRen :: Substitution = renaming __IMPOSSIBLE__ $ flipP perm
+                vcat
+                  [ text "Context of meta: " <+> (inTopContext $ prettyTCM cxt)
+                  , text "Flattened:       " <+> prettyTCM flat
+                  , text "Flattened (raw): " <+> text (show flat)
+                  , text "Bad renaming:    " <+> text (show badRen)
+                  , text "Good renaming:   " <+> text (show goodRen)
+                  , text "Raw permutation: " <+> prettyTCM (permute perm flat)
+                  ]
+              let tel = permuteTel perm cxt
               reportSDoc "tc.lhs.unify" 100 $ text "Context tel (for new metas): " <+> prettyTCM tel
               -- important: create the meta in the same environment as the original meta
               newArgsMetaCtx ctype tel perm us
           reportSDoc "tc.lhs.unify" 80 $ text "Generated meta args: " <+> prettyTCM margs
-          noConstraints $ assignV DirEq m us (Con c margs)
-          return $ Just margs
-        `catchError` \_ -> return Nothing
-      Nothing -> return Nothing
+          noConstraints $ assignV DirEq m us (Con c ci margs)
+          return margs
 
 checkEqualityStrategy :: Int -> UnifyStrategy
 checkEqualityStrategy k s = do
@@ -642,7 +817,7 @@
       ps       <- mfromMaybe $ allProjElims es
       guard $ not $ null ps
       liftTCM $ reportSDoc "tc.lhs.unify" 50 $
-        text "with projections " <+> prettyTCM ps
+        text "with projections " <+> prettyTCM (map snd ps)
       let b = getVarTypeUnraised (varCount s - 1 - i) s
       (d, pars) <- mcatMaybes $ liftTCM $ isEtaRecordType b
       liftTCM $ reportSDoc "tc.lhs.unify" 50 $
@@ -653,7 +828,7 @@
 etaExpandEquationStrategy :: Int -> UnifyStrategy
 etaExpandEquationStrategy k s = do
   let Equal a u v = getEqualityUnraised k s
-  (d, pars) <- mcatMaybes $ liftTCM $ addCtxTel tel $ isEtaRecordType a
+  (d, pars) <- mcatMaybes $ liftTCM $ addContext tel $ isEtaRecordType a
   sing <- liftTCM $ (Right True ==) <$> isSingletonRecord d pars
   projLeft <- liftTCM $ shouldProject u
   projRight <- liftTCM $ shouldProject v
@@ -663,7 +838,7 @@
     shouldProject :: Term -> TCM Bool
     shouldProject u = case ignoreSharing u of
       Def f es   -> usesCopatterns f
-      Con c us   -> isJust <$> isRecordConstructor (conName c)
+      Con c _ _  -> isJust <$> isRecordConstructor (conName c)
 
       Var _ _    -> return False
       Lam _ _    -> __IMPOSSIBLE__
@@ -681,7 +856,7 @@
 simplifySizesStrategy k s = do
   isSizeName <- liftTCM isSizeNameTest
   let Equal a u v = getEquality k s
-  case unEl a of
+  case ignoreSharing $ unEl a of
     Def d _ -> do
       guard $ isSizeName d
       su <- liftTCM $ sizeView u
@@ -699,14 +874,17 @@
   guard injTyCon
   eq <- liftTCM $ eqUnLevel $ getEquality k s
   case eq of
-    Equal a u@(Def d es) v@(Def d' es') | d == d' -> do
+    Equal a u@(ignoreSharing -> Def d es) v@(ignoreSharing -> Def d' es') | d == d' -> do
       -- d must be a data, record or axiom
       def <- liftTCM $ getConstInfo d
       guard $ case theDef def of
                 Datatype{} -> True
                 Record{}   -> True
                 Axiom{}    -> True
-                _          -> False
+                AbstractDefn -> False -- True triggers issue #2250
+                Function{}   -> False
+                Primitive{}  -> False
+                Constructor{}-> __IMPOSSIBLE__  -- Never a type!
       let us = fromMaybe __IMPOSSIBLE__ $ allApplyElims es
           vs = fromMaybe __IMPOSSIBLE__ $ allApplyElims es'
       return $ TypeConInjectivity k d us vs
@@ -731,36 +909,45 @@
 
 data UnifyOutput = UnifyOutput
   { unifySubst :: PatternSubstitution
+  , unifyProof :: PatternSubstitution
   , unifyLog   :: UnifyLog
   }
 
-instance Monoid UnifyOutput where
-  mempty        = UnifyOutput IdS []
-  x `mappend` y = UnifyOutput
+instance Semigroup UnifyOutput where
+  x <> y = UnifyOutput
     { unifySubst = unifySubst y `composeS` unifySubst x
+    , unifyProof = unifyProof y `composeS` unifyProof x
     , unifyLog   = unifyLog x ++ unifyLog y
     }
 
+instance Monoid UnifyOutput where
+  mempty  = UnifyOutput IdS IdS []
+  mappend = (<>)
+
 type UnifyM a = WriterT UnifyOutput TCM a
 
 tellUnifySubst :: PatternSubstitution -> UnifyM ()
-tellUnifySubst sub = do
-  tell $ UnifyOutput sub []
+tellUnifySubst sub = tell $ UnifyOutput sub IdS []
 
+tellUnifyProof :: PatternSubstitution -> UnifyM ()
+tellUnifyProof sub = tell $ UnifyOutput IdS sub []
+
 writeUnifyLog :: UnifyLogEntry -> UnifyM ()
-writeUnifyLog x = tell $ UnifyOutput IdS [x]
+writeUnifyLog x = tell $ UnifyOutput IdS IdS [x]
 
 runUnifyM :: UnifyM a -> TCM (a,UnifyOutput)
 runUnifyM = runWriterT
 
 unifyStep :: UnifyState -> UnifyStep -> UnifyM (UnificationResult' UnifyState)
 
-unifyStep s Deletion{ deleteAt = k , deleteType = a , deleteLeft = u , deleteRight = v } =
-  liftTCM $ do
-    addCtxTel (varTel s) $ noConstraints $ equalTerm a u v
-    ifM ((optWithoutK <$> pragmaOptions) `and2M` (not <$> isSet (unEl a)))
-    {-then-} (DontKnow <$> withoutKErr)
-    {-else-} (Unifies  <$> reduceEqTel (solveEq k u s))
+unifyStep s Deletion{ deleteAt = k , deleteType = a , deleteLeft = u , deleteRight = v } = do
+    liftTCM $ addContext (varTel s) $ noConstraints $ dontAssignMetas $ equalTerm a u v
+    ifM (liftTCM $ optWithoutK <$> pragmaOptions)
+    {-then-} (DontKnow <$> liftTCM withoutKErr)
+    {-else-} (do
+      let (s', sigma) = solveEq k u s
+      tellUnifyProof sigma
+      Unifies <$> liftTCM (reduceEqTel s'))
   `catchError` \err -> return $ DontKnow err
   where
     withoutKErr = addContext (varTel s) $ typeError_ $ WithoutKError a u u
@@ -769,7 +956,9 @@
   let m = varCount s
   caseMaybeM (trySolveVar (m-1-i) u s) (DontKnow <$> err) $ \(s',sub) -> do
     tellUnifySubst sub
-    Unifies <$> liftTCM (reduce $ solveEq k (applyPatSubst sub u) s')
+    let (s'', sigma) = solveEq k (applyPatSubst sub u) s'
+    tellUnifyProof sigma
+    Unifies <$> liftTCM (reduce s'')
   where
     trySolveVar i u s = case solveVar i u s of
       Just x  -> return $ Just x
@@ -779,64 +968,85 @@
         return $ solveVar i u s
     err = addContext (varTel s) $ typeError_ $ UnificationRecursiveEq a i u
 
-unifyStep s (Injectivity k a d pars ixs c lhs rhs) = do
+unifyStep s (Injectivity k a d pars ixs c) = do
   withoutK <- liftTCM $ optWithoutK <$> pragmaOptions
-  ctype    <- (`piApply` pars) . defType <$> liftTCM (getConstInfo $ conName c)
+  let n = eqCount s
+
+  -- Get constructor telescope and target indices
+  ctype <- (`piApply` pars) . defType <$> liftTCM (getConInfo c)
   reportSDoc "tc.lhs.unify" 40 $ text "Constructor type: " <+> prettyTCM ctype
   TelV ctel ctarget <- liftTCM $ telView ctype
-  (lhs, rhs) <- liftTCM $ reduce (lhs,rhs)
-  case ignoreSharing  $ unEl ctarget of
-    Def d' es | d == d' -> do
-      let args = fromMaybe __IMPOSSIBLE__ $ allApplyElims es
-          cixs = map unArg $ drop (length pars) args
-          ceq  = Con c $ teleArgs ctel
-      let mis  = mfilter fastDistinct $ forM ixs $ \ix ->
-                   case ignoreSharing $ unArg ix of
-                     Var i [] | i < eqCount s -> Just i
-                     _        -> Nothing
-      case mis of
-        Nothing | withoutK -> DontKnow <$> err
-        Nothing -> do
-          return $ Unifies $
-            addEqs ctel (map unArg lhs) (map unArg rhs) $
-              solveEq k ceq s
-        Just is -> do
-          let n  = eqCount s
-              js = is ++ [n-1-k]
-          caseMaybeM (trySplitTelescopeExact js (eqTel s)) (DontKnow <$> err) $
-            \(SplitTel tel1 tel2 perm) -> do
-            reportSDoc "tc.lhs.unify" 40 $ addCtxTel (varTel s) $ sep $
-              [ text "split telescope" <+> prettyTCM (eqTel s) <+> text ("at " ++ show js)
-              , text "  into" <+> prettyTCM tel1
-              , text "  and " <+> addCtxTel tel1 (prettyTCM tel2)
-              , text "  perm =" <+> text (show perm)
-              ]
-            let n1   = size tel1
-                n2   = size tel2
-                sub1 = renaming perm :: Substitution -- or renamingR?
-                sub2 = (ceq : reverse cixs) ++# raiseS (size ctel)
-            Unifies <$> liftTCM (reduceEqTel $ s
-              { eqTel    = ctel `abstract` (applySubst sub2 tel2)
-              , eqLHS    = map unArg lhs ++ drop n1 (permute perm $ eqLHS s)
-              , eqRHS    = map unArg rhs ++ drop n1 (permute perm $ eqRHS s)
-              })
-    _ -> __IMPOSSIBLE__
-  where
-    n = eqCount s
+  let cixs = case ignoreSharing $ unEl ctarget of
+               Def d' es | d == d' ->
+                 let args = fromMaybe __IMPOSSIBLE__ $ allApplyElims es
+                 in  drop (length pars) args
+               _ -> __IMPOSSIBLE__
 
-    err = addContext (varTel s `abstract` eqTel s) $ typeError_
-        (UnifyIndicesNotVars
-          a
-          (Con c $ raise n lhs)
-          (Con c $ raise n rhs)
-          ixs)
+  -- Get index telescope of the datatype
+  dtype    <- (`piApply` pars) . defType <$> liftTCM (getConstInfo d)
+  reportSDoc "tc.lhs.unify" 40 $ text "Datatype type: " <+> prettyTCM dtype
 
-    trySplitTelescopeExact js tel = case splitTelescopeExact js tel of
-      Just x  -> return $ Just x
-      Nothing -> do
-        tel <- liftTCM $ normalise tel
-        return $ splitTelescopeExact js tel
+  -- Split equation telescope into parts before and after current equation
+  let (eqListTel1, _ : eqListTel2) = genericSplitAt k $ telToList $ eqTel s
+      (eqTel1, eqTel2) = (telFromList eqListTel1, telFromList eqListTel2)
 
+  -- This is where the magic of higher-dimensional unification happens
+  -- We need to generalize the indices `ixs` to the target indices of the
+  -- constructor `cixs`. This is done by calling the unification algorithm
+  -- recursively (this doesn't get stuck in a loop because a type should
+  -- never be indexed over itself). Note the similarity with the
+  -- computeNeighbourhood function in Agda.TypeChecking.Coverage.
+  res <- liftTCM $ addContext (varTel s) $ unifyIndices
+           (eqTel1 `abstract` ctel)
+           (allFlexVars $ eqTel1 `abstract` ctel)
+           dtype
+           (raise (size ctel) ixs)
+           (raiseFrom (size ctel) (size eqTel1) cixs)
+  case res of
+    -- Higher-dimensional unification can never end in a conflict,
+    -- because `cong c1 ...` and `cong c2 ...` don't even have the
+    -- same type for distinct constructors c1 and c2.
+    NoUnify _ -> __IMPOSSIBLE__
+
+    -- TODO: we could still make progress here if not --without-K,
+    -- but I'm not sure if it's necessary.
+    DontKnow _ -> liftTCM $ DontKnow <$> err
+
+    Unifies (eqTel1', rho0, _) -> do
+      -- Split ps0 into parts for eqTel1 and ctel
+      let (rho1, rho2) = splitS (size ctel) rho0
+
+      -- Compute new equation telescope context and substitution
+      let ceq     = ConP c noConPatternInfo $ applySubst rho2 $ teleNamedArgs ctel
+          rho3    = consS ceq rho1
+          eqTel2' = applyPatSubst rho3 eqTel2
+          eqTel'  = eqTel1' `abstract` eqTel2'
+          rho     = liftS (size eqTel2) rho3
+
+      tellUnifyProof rho
+
+      eqTel' <- liftTCM $ reduce eqTel'
+
+      -- Compute new lhs and rhs by matching the old ones against rho
+      (lhs', rhs') <- liftTCM . reduce =<< do
+        let ps = applySubst rho $ teleNamedArgs $ eqTel s
+        (lhsMatch, _) <- liftTCM $ runReduceM $ Match.matchPatterns ps $ eqLHS s
+        (rhsMatch, _) <- liftTCM $ runReduceM $ Match.matchPatterns ps $ eqRHS s
+        case (lhsMatch, rhsMatch) of
+          (Match.Yes _ lhs', Match.Yes _ rhs') -> return
+            (reverse $ Match.matchedArgs __IMPOSSIBLE__ (size eqTel') lhs',
+             reverse $ Match.matchedArgs __IMPOSSIBLE__ (size eqTel') rhs')
+          _ -> __IMPOSSIBLE__
+
+      return $ Unifies $ s { eqTel = eqTel' , eqLHS = lhs' , eqRHS = rhs' }
+
+  where
+    err :: TCM TCErr
+    err = let n           = eqCount s
+              Equal a u v = getEquality k s
+          in addContext (varTel s `abstract` eqTel s) $ typeError_
+               (UnifyIndicesNotVars a (raise n u) (raise n v) (raise (n-k) ixs))
+
 unifyStep s Conflict
   { conflictConLeft    = c
   , conflictConRight   = c'
@@ -854,7 +1064,7 @@
   c       <- liftTCM $ getRecordConstructor d
   let nfields         = size delta
       (varTel', rho)  = expandTelescopeVar (varTel s) (m-1-i) delta c
-      projectFlexible = [ FlexibleVar (flexHiding fi) (projFlexKind j) (i+j) | j <- [0..nfields-1] ]
+      projectFlexible = [ FlexibleVar (flexHiding fi) (projFlexKind j) (flexPos fi) (i+j) | j <- [0..nfields-1] ]
   tellUnifySubst $ rho
   Unifies <$> liftTCM (reduce $ UState
     { varTel   = varTel'
@@ -885,15 +1095,17 @@
   c     <- liftTCM $ getRecordConstructor d
   lhs   <- expandKth $ eqLHS s
   rhs   <- expandKth $ eqRHS s
+  let (tel, sigma) = expandTelescopeVar (eqTel s) k delta c
+  tellUnifyProof sigma
   Unifies <$> liftTCM (reduceEqTel $ s
-    { eqTel    = fst $ expandTelescopeVar (eqTel s) k delta c
+    { eqTel    = tel
     , eqLHS    = lhs
     , eqRHS    = rhs
     })
   where
     expandKth us = do
       let (us1,v:us2) = fromMaybe __IMPOSSIBLE__ $ splitExactlyAt k us
-      vs <- liftTCM $ map unArg . snd <$> etaExpandRecord d pars v
+      vs <- liftTCM $ snd <$> etaExpandRecord d pars (unArg v)
       vs <- liftTCM $ reduce vs
       return $ us1 ++ vs ++ us2
 
@@ -905,28 +1117,39 @@
         (typeError_ $ UnequalTerms CmpEq (Lit l) (Lit l') a)
 
 unifyStep s (StripSizeSuc k u v) = do
-  sz <- liftTCM sizeType
+  sizeTy <- liftTCM sizeType
+  sizeSu <- liftTCM $ sizeSuc 1 (var 0)
+  let n          = eqCount s
+      sub        = liftS (n-k-1) $ consS sizeSu $ raiseS 1
+      eqFlatTel  = flattenTel $ eqTel s
+      eqFlatTel' = applySubst sub $ updateAt k (fmap $ const sizeTy) $ eqFlatTel
+      eqTel'     = unflattenTel (teleNames $ eqTel s) eqFlatTel'
+  -- TODO: tellUnifyProof sub
+  -- but sizeSu is not a constructor, so sub is not a PatternSubstitution!
   return $ Unifies $ s
-    { eqTel = unflattenTel (teleNames $ eqTel s) $
-        updateAt k (fmap $ const sz) $ flattenTel $ eqTel s --TODO: is this necessary?
-    , eqLHS = updateAt k (const u) $ eqLHS s
-    , eqRHS = updateAt k (const v) $ eqRHS s
+    { eqTel = eqTel'
+    , eqLHS = updateAt k (const $ defaultArg u) $ eqLHS s
+    , eqRHS = updateAt k (const $ defaultArg v) $ eqRHS s
     }
 
 unifyStep s (SkipIrrelevantEquation k) = do
   let lhs = eqLHS s
-  return $ Unifies $ solveEq k (DontCare (lhs !! k)) s
+      (s', sigma) = solveEq k (DontCare $ unArg $ lhs !! k) s
+  tellUnifyProof sigma
+  return $ Unifies s'
 
 unifyStep s (TypeConInjectivity k d us vs) = do
   dtype <- defType <$> liftTCM (getConstInfo d)
   TelV dtel _ <- liftTCM $ telView dtype
-  let n = eqCount s
+  let n   = eqCount s
       m   = size dtel
       deq = Def d $ map Apply $ teleArgs dtel
+  -- TODO: tellUnifyProof ???
+  -- but d is not a constructor...
   Unifies <$> liftTCM (reduceEqTel $ s
     { eqTel = dtel `abstract` applyUnder k (eqTel s) (raise k deq)
-    , eqLHS = map unArg us ++ dropAt k (eqLHS s)
-    , eqRHS = map unArg vs ++ dropAt k (eqRHS s)
+    , eqLHS = us ++ dropAt k (eqLHS s)
+    , eqRHS = vs ++ dropAt k (eqRHS s)
     })
 
 unify :: UnifyState -> UnifyStrategy -> UnifyM (UnificationResult' UnifyState)
@@ -946,7 +1169,7 @@
                  -> UnifyM (UnificationResult' UnifyState)
                  -> UnifyM (UnificationResult' UnifyState)
     tryUnifyStep step fallback = do
-      reportSDoc "tc.lhs.unify" 20 $ text "trying unifyStep" <+> text (show step)
+      reportSDoc "tc.lhs.unify" 20 $ text "trying unifyStep" <+> prettyTCM step
       x <- unifyStep s step
       case x of
         Unifies s'   -> do
@@ -964,32 +1187,5 @@
     failure :: UnifyM (UnificationResult' a)
     failure = do
       err <- addContext (varTel s) $ typeError_ $
-               UnificationStuck (eqTel s) (eqLHS s) (eqRHS s)
+               UnificationStuck (eqTel s) (map unArg $ eqLHS s) (map unArg $ eqRHS s)
       return $ DontKnow err
-
-isSet :: Term -> TCM Bool
-isSet a = do
-  a <- reduce a
-  case ignoreSharing a of
-    Def d es -> do
-      let args = fromMaybe __IMPOSSIBLE__ $ allApplyElims es
-      Defn{ defType = dtype, theDef = def } <- getConstInfo d
-      reportSDoc "tc.lhs.unify.isset" 50 $ text "Checking whether " <+> prettyTCM a <+> text " is a set..."
-      case def of
-        Datatype{ dataPars = npars, dataCons = cs, dataMutual = [], dataAbstr = ConcreteDef } -> do
-           let pars       = take npars args
-               TelV tel _ = telView' $ dtype `piApply` pars
-               ixtypes    = map (unEl . unDom) $ flattenTel tel
-           ifNotM (allM ixtypes isSet) (return False) $ allM cs $ \c -> do
-             ctype <- defType <$> getConstInfo c
-             checkConstructorType d $ ctype `piApply` pars
-        Record{ recConType = ctype } -> checkConstructorType d $ ctype `piApply` args
-        _ -> return False
-    _ -> return False
-  where
-    checkConstructorType :: QName -> Type -> TCM Bool
-    checkConstructorType d a = do
-      let TelV tel _ = telView' a
-      allM (map (unEl . unDom) $ flattenTel tel) $ \b -> case ignoreSharing b of
-        Def d' _ | d == d' -> return True
-        _ -> isSet b
diff --git a/src/full/Agda/TypeChecking/Rules/Record.hs b/src/full/Agda/TypeChecking/Rules/Record.hs
--- a/src/full/Agda/TypeChecking/Rules/Record.hs
+++ b/src/full/Agda/TypeChecking/Rules/Record.hs
@@ -2,10 +2,15 @@
 
 module Agda.TypeChecking.Rules.Record where
 
-import Control.Applicative
+import Prelude hiding (null)
+
+import Control.Applicative hiding (empty)
 import Control.Monad
 import Data.Maybe
+import qualified Data.Set as Set
 
+import Agda.Interaction.Options
+
 import qualified Agda.Syntax.Abstract as A
 import Agda.Syntax.Common
 import Agda.Syntax.Internal
@@ -23,16 +28,14 @@
 import Agda.TypeChecking.Irrelevance
 import Agda.TypeChecking.CompiledClause.Compile
 
-import Agda.TypeChecking.Rules.Data ( bindParameters, fitsIn )
+import Agda.TypeChecking.Rules.Data ( bindParameters, fitsIn, forceSort)
 import Agda.TypeChecking.Rules.Term ( isType_ )
 import {-# SOURCE #-} Agda.TypeChecking.Rules.Decl (checkDecl)
 
-import Agda.Utils.Size
-import Agda.Utils.Permutation
 import Agda.Utils.Monad
-
-import Agda.Interaction.Options
-
+import Agda.Utils.Null
+import Agda.Utils.Permutation
+import Agda.Utils.Size
 
 #include "undefined.h"
 import Agda.Utils.Impossible
@@ -58,7 +61,7 @@
   :: Info.DefInfo              -- ^ Position and other info.
   -> QName                     -- ^ Record type identifier.
   -> Maybe (Ranged Induction)  -- ^ Optional: (co)inductive declaration.
-  -> Maybe Bool
+  -> Maybe Bool                -- ^ Optional: user specified eta/no-eta
   -> Maybe QName               -- ^ Optional: constructor name.
   -> [A.LamBinding]            -- ^ Record parameters.
   -> A.Expr                    -- ^ Approximate type of constructor (@fields@ -> Set).
@@ -83,7 +86,7 @@
       -- Check and evaluate field types.
       reportSDoc "tc.rec" 15 $ text "checking fields"
       -- WRONG: contype <- workOnTypes $ killRange <$> (instantiateFull =<< isType_ contel)
-      contype <- killRange <$> (instantiateFull =<< isType_ contel)
+      contype <- instantiateFull =<< isType_ contel
       reportSDoc "tc.rec" 20 $ vcat
         [ text "contype = " <+> prettyTCM contype ]
 
@@ -98,16 +101,16 @@
       -- Compute correct type of constructor
 
       -- t = tel -> t0 where t0 must be a sort s
-      t0' <- normalise t0
-      s <- case ignoreSharing $ unEl t0' of
-        Sort s  -> return s
-        _       -> typeError $ ShouldBeASort t0
-      gamma <- getContextTelescope  -- the record params (incl. module params)
-      reportSDoc "tc.rec" 20 $ vcat
-        [ text "gamma = " <+> inTopContext (prettyTCM gamma) ]
+      TelV idxTel s <- telView t0
+      unless (null idxTel) $ typeError $ ShouldBeASort t0
+      s <- forceSort s
 
+      reportSDoc "tc.rec" 20 $ do
+        gamma <- getContextTelescope  -- the record params (incl. module params)
+        text "gamma = " <+> inTopContext (prettyTCM gamma)
+
       -- record type (name applied to parameters)
-      let rect = El s $ Def name $ map Apply $ teleArgs gamma
+      rect <- El s . Def name . map Apply <$> getContextArgs
 
       -- Put in @rect@ as correct target of constructor type.
       -- Andreas, 2011-05-10 use telePi_ instead of telePi to preserve
@@ -139,37 +142,56 @@
           indCo = rangedThing <$> ind
           -- A constructor is inductive unless declared coinductive.
           conInduction = fromMaybe Inductive indCo
-          haveEta      = maybe (Inferred $ conInduction == Inductive && etaenabled) Specified eta
+          -- Andreas, 2016-09-20, issue #2197.
+          -- Eta is inferred by the positivity checker.
+          -- We should turn it off until it is proven to be safe.
+          haveEta      = maybe (Inferred False) Specified eta
+          -- haveEta      = maybe (Inferred $ conInduction == Inductive && etaenabled) Specified eta
           con = ConHead conName conInduction $ map unArg fs
 
       reportSDoc "tc.rec" 30 $ text "record constructor is " <+> text (show con)
-      addConstant name $ defaultDefn defaultArgInfo name t0
-                       $ Record { recPars           = 0
-                                , recClause         = Nothing
-                                , recConHead        = con
-                                , recNamedCon       = hasNamedCon
-                                , recConType        = contype  -- addConstant adds params!
-                                , recFields         = fs
-                                , recTel            = ftel     -- addConstant adds params!
-                                , recAbstr          = Info.defAbstract i
-                                , recEtaEquality'   = haveEta
-                                , recInduction      = indCo    -- we retain the original user declaration, in case the record turns out to be recursive
-                                -- determined by positivity checker:
-                                , recRecursive      = False
-                                , recMutual         = []
-                                }
 
-      -- Add record constructor to signature
-      -- Andreas, 2011-05-19 moved this here, it was below the record module
-      --   creation
-      addConstant conName $
-        defaultDefn defaultArgInfo conName contype $
-             Constructor { conPars   = 0
-                         , conSrcCon = con
-                         , conData   = name
-                         , conAbstr  = Info.defAbstract conInfo
-                         , conInd    = conInduction
-                         }
+      -- Add the record definition.
+
+      -- Andreas, 2016-06-17, Issue #2018:
+      -- Do not rely on @addConstant@ to put in the record parameters,
+      -- as they might be renamed in the context.
+      -- By putting them ourselves (e.g. by using the original type @t@)
+      -- we make sure we get the original names!
+      let npars = size tel
+          telh  = fmap hideAndRelParams tel
+      escapeContext npars $ do
+        addConstant name $
+          defaultDefn defaultArgInfo name t $
+            Record
+              { recPars           = npars
+              , recClause         = Nothing
+              , recConHead        = con
+              , recNamedCon       = hasNamedCon
+              , recFields         = fs
+              , recTel            = telh `abstract` ftel
+              , recAbstr          = Info.defAbstract i
+              , recEtaEquality'   = haveEta
+              , recInduction      = indCo
+                  -- We retain the original user declaration [(co)inductive]
+                  -- in case the record turns out to be recursive.
+              -- Determined by positivity checker:
+              , recRecursive      = False
+              , recMutual         = []
+              }
+
+        -- Add record constructor to signature
+        addConstant conName $
+          defaultDefn defaultArgInfo conName (telh `abstract` contype) $
+            Constructor
+              { conPars   = npars
+              , conSrcCon = con
+              , conData   = name
+              , conAbstr  = Info.defAbstract conInfo
+              , conInd    = conInduction
+              , conErased = []
+              }
+
       -- Declare the constructor as eligible for instance search
       when (Info.defInstance i == InstanceDef) $ do
         addNamedInstance conName name
@@ -202,7 +224,7 @@
         , nest 2 $ do
            tel <- getContextTelescope
            text (show tel) $+$ do
-           inContext [] $ do
+           inTopContext $ do
              prettyTCM tel $+$ do
                telA <- reify tel
                text (show telA) $+$ do
@@ -212,7 +234,7 @@
 -}
 
       let info = setRelevance recordRelevance defaultArgInfo
-          addRecordVar = addCtxString "" $ Dom info rect
+          addRecordVar = addContext' ("", Dom info rect)
           -- the record variable has the empty name by intention, see issue 208
 
       let m = qnameToMName name  -- Name of record module.
@@ -251,7 +273,8 @@
           -- record type.
           -- See test/Succeed/ProjectionsTakeModuleTelAsParameters.agda.
           tel' <- getContextTelescope
-          checkRecordProjections m name con tel' (raise 1 ftel) fields
+          setDefaultModuleParameters m
+          checkRecordProjections m name hasNamedCon con tel' (raise 1 ftel) fields
 
         -- Andreas 2012-02-13: postpone polarity computation until after positivity check
         -- computePolarity name
@@ -273,9 +296,9 @@
     [@fs@   ]  the fields to be checked
 -}
 checkRecordProjections ::
-  ModuleName -> QName -> ConHead -> Telescope -> Telescope ->
+  ModuleName -> QName -> Bool -> ConHead -> Telescope -> Telescope ->
   [A.Declaration] -> TCM ()
-checkRecordProjections m r con tel ftel fs = do
+checkRecordProjections m r hasNamedCon con tel ftel fs = do
     checkProjs EmptyTel ftel fs
   where
 
@@ -299,7 +322,7 @@
           , text "tel   =" <+> (inTopContext . prettyTCM $ tel)
           , text "ftel1 =" <+> prettyTCM ftel1
           , text "t     =" <+> prettyTCM t
-          , text "ftel2 =" <+> addCtxTel ftel1 (underAbstraction_ ftel2 prettyTCM)
+          , text "ftel2 =" <+> addContext ftel1 (underAbstraction_ ftel2 prettyTCM)
           ]
         ]
 
@@ -324,12 +347,12 @@
       -- where Δ = Γ, tel is the current context
       let finalt   = telePi (replaceEmptyName "r" tel) t
           projname = qualify m $ qnameName x
-          projcall = Var 0 [Proj projname]
+          projcall o = Var 0 [Proj o projname]
           rel      = getRelevance ai
           -- the recursive call
           recurse  = checkProjs (abstract ftel1 $ ExtendTel (Dom ai t)
                                  $ Abs (nameToArgName $ qnameName projname) EmptyTel)
-                                (ftel2 `absApp` projcall) fs
+                                (ftel2 `absApp` projcall ProjSystem) fs
 
       reportSDoc "tc.rec.proj" 25 $ nest 2 $ text "finalt=" <+> do
         inTopContext $ prettyTCM finalt
@@ -356,47 +379,38 @@
         -- compute body modification for irrelevant projections
         let bodyMod = case rel of
               Relevant   -> id
+              NonStrict  -> id
               Irrelevant -> DontCare
               _          -> __IMPOSSIBLE__
 
         let -- Andreas, 2010-09-09: comment for existing code
             -- split the telescope into parameters (ptel) and the type or the record
             -- (rt) which should be  R ptel
-            (ptel,[rt]) = splitAt (size tel - 1) $ telToList tel
-            projArgI    = domInfo rt
-            cpi    = ConPatternInfo (Just ConPRec) (Just $ argFromDom $ fmap snd rt)
+            telList = telToList tel
+            (_ptel,[rt]) = splitAt (size tel - 1) telList
+            cpo    = if hasNamedCon then ConOCon else ConORec
+            cpi    = ConPatternInfo (Just cpo) (Just $ argFromDom $ fmap snd rt)
             conp   = defaultArg $ ConP con cpi $
-                     [ Arg info $ unnamed $ VarP "x" | Dom info _ <- telToList ftel ]
-            nobind 0 = id
-            nobind n = Bind . Abs "_" . nobind (n - 1)
-            body   = nobind (size ftel1)
-                   $ Bind . Abs "x"
-                   $ nobind (size ftel2)
-                   $ Body $ bodyMod $ var (size ftel2)
+                     [ Arg info $ unnamed $ varP "x" | Dom info _ <- telToList ftel ]
+            body   = Just $ bodyMod $ var (size ftel2)
             cltel  = ftel
             clause = Clause { clauseRange = getRange info
                             , clauseTel       = killRange cltel
-                            , namedClausePats = [Named Nothing <$> numberPatVars (idP $ size ftel) conp]
+                            , namedClausePats = [Named Nothing <$> numberPatVars __IMPOSSIBLE__ (idP $ size ftel) conp]
                             , clauseBody      = body
                             , clauseType      = Just $ Arg ai t
                             , clauseCatchall  = False
                             }
 
-        -- Andreas, 2013-10-20
-        -- creating the projection construction function
-        let core = Lam projArgI $ Abs "r" $ bodyMod $ projcall
-            -- leading lambdas are to ignore parameter applications
-            proj = teleNoAbs ptel core
-            -- proj = foldr (\ (Dom ai (x, _)) -> Lam ai . NoAbs x) core ptel
-            projection = Projection
-              { projProper   = Just projname
+        let projection = Projection
+              { projProper   = True
+              , projOrig     = projname
               -- name of the record type:
-              , projFromType = r
+              , projFromType = defaultArg r
               -- index of the record argument (in the type),
               -- start counting with 1:
-              , projIndex    = size ptel + 1  -- which is @size tel@
-              , projDropPars = proj
-              , projArgInfo  = projArgI
+              , projIndex    = size tel -- which is @size ptel + 1@
+              , projLams     = ProjLams $ map (\ (Dom ai (x,_)) -> Arg ai x) telList
               }
 
         reportSDoc "tc.rec.proj" 80 $ sep
@@ -406,7 +420,7 @@
         reportSDoc "tc.rec.proj" 70 $ sep
           [ text "adding projection"
           , nest 2 $ prettyTCM projname <+> text (show (clausePats clause)) <+> text "=" <+>
-                       inTopContext (addCtxTel ftel (prettyTCM (clauseBody clause)))
+                       inTopContext (addContext ftel (maybe (text "_|_") prettyTCM (clauseBody clause)))
           ]
         reportSDoc "tc.rec.proj" 10 $ sep
           [ text "adding projection"
@@ -427,22 +441,13 @@
         escapeContext (size tel) $ do
           addConstant projname $
             (defaultDefn ai projname (killRange finalt)
-              Function { funClauses        = [clause]
-                       , funCompiled       = Just cc
-                       , funTreeless       = Nothing
-                       , funDelayed        = NotDelayed
-                       , funInv            = NotInjective
-                       , funAbstr          = ConcreteDef
-                       , funMutual         = []
-                       , funProjection     = Just projection
-                       , funSmashable      = True
-                       , funStatic         = False
-                       , funInline         = False
-                       , funTerminates     = Just True
-                       , funExtLam         = Nothing
-                       , funWith           = Nothing
-                       , funCopatternLHS   = isCopatternLHS [clause]
-                       })
+              emptyFunction
+                { funClauses        = [clause]
+                , funCompiled       = Just cc
+                , funProjection     = Just projection
+                , funTerminates     = Just True
+                , funCopatternLHS   = isCopatternLHS [clause]
+                })
               { defArgOccurrences = [StrictPos] }
           computePolarity projname
           when (Info.defInstance info == InstanceDef) $
diff --git a/src/full/Agda/TypeChecking/Rules/Term.hs b/src/full/Agda/TypeChecking/Rules/Term.hs
--- a/src/full/Agda/TypeChecking/Rules/Term.hs
+++ b/src/full/Agda/TypeChecking/Rules/Term.hs
@@ -1,17 +1,7 @@
 {-# LANGUAGE CPP                      #-}
-{-# LANGUAGE FlexibleInstances        #-}
-{-# LANGUAGE LambdaCase               #-}
-{-# LANGUAGE NamedFieldPuns           #-}
 {-# LANGUAGE NondecreasingIndentation #-}
-{-# LANGUAGE MultiParamTypeClasses    #-}
-{-# LANGUAGE PatternGuards            #-}
 {-# LANGUAGE ScopedTypeVariables      #-}
-{-# LANGUAGE TupleSections            #-}
 
-#if __GLASGOW_HASKELL__ >= 710
-{-# LANGUAGE FlexibleContexts #-}
-#endif
-
 module Agda.TypeChecking.Rules.Term where
 
 import Prelude hiding (null)
@@ -19,6 +9,7 @@
 import Control.Applicative hiding (empty)
 import Control.Arrow ((&&&), (***), first, second)
 import Control.Monad.Trans
+import Control.Monad.Trans.Maybe
 import Control.Monad.State (get, put)
 import Control.Monad.Reader
 
@@ -27,6 +18,7 @@
 import Data.Monoid (mappend)
 import Data.List hiding (sort, null)
 import qualified Data.Map as Map
+import qualified Data.Set as Set
 import Data.Traversable (sequenceA)
 import Data.Void
 
@@ -75,9 +67,10 @@
 import Agda.TypeChecking.Records
 import Agda.TypeChecking.Reduce
 import Agda.TypeChecking.SizedTypes
+import Agda.TypeChecking.SizedTypes.Solve
 import Agda.TypeChecking.Substitute
 import Agda.TypeChecking.Telescope
-import Agda.TypeChecking.Rules.LHS (checkLeftHandSide, LHSResult(..))
+import Agda.TypeChecking.Rules.LHS
 
 import {-# SOURCE #-} Agda.TypeChecking.Empty (isEmptyType)
 import {-# SOURCE #-} Agda.TypeChecking.Rules.Decl (checkSectionApplication)
@@ -90,8 +83,9 @@
   , runExceptT
   )
 
-import Agda.Utils.Functor (($>))
+import Agda.Utils.Functor
 import Agda.Utils.Lens
+import Agda.Utils.List (groupOn)
 import Agda.Utils.Maybe
 import Agda.Utils.Monad
 import Agda.Utils.Null
@@ -136,8 +130,9 @@
       return t'
     A.Set _ n    -> do
       return $ sort (mkType n)
-    A.App i s (Arg (ArgInfo NotHidden r) l)
-      | A.Set _ 0 <- unScope s ->
+    A.App i s arg
+      | getHiding arg == NotHidden,
+        A.Set _ 0 <- unScope s ->
       ifNotM hasUniversePolymorphism
           (typeError $ GenericError "Use --universe-polymorphism to enable level arguments to Set")
       $ {- else -} do
@@ -146,8 +141,36 @@
         --   Set : (NonStrict) Level -> Set\omega
         n   <- levelView =<< do
           applyRelevanceToContext NonStrict $
-            checkExpr (namedThing l) lvl
+            checkNamedArg arg lvl
         return $ sort (Type n)
+
+    -- Issue #707: Check an existing interaction point
+    A.QuestionMark minfo ii -> caseMaybeM (lookupInteractionMeta ii) fallback $ \ x -> do
+      -- -- | Just x <- A.metaNumber minfo -> do
+      reportSDoc "tc.ip" 20 $ fsep
+        [ text "Rechecking meta "
+        , prettyTCM x
+        , text $ " for interaction point " ++ show ii
+        ]
+      mv <- lookupMeta x
+      let s0 = jMetaType . mvJudgement $ mv
+      -- Andreas, 2016-10-14, issue #2257
+      -- The meta was created in a context of length @n@.
+      let n  = length . envContext . clEnv . miClosRange . mvInfo $ mv
+      (vs, rest) <- splitAt n <$> getContextArgs
+      reportSDoc "tc.ip" 20 $ vcat
+        [ text "  s0   = " <+> prettyTCM s0
+        , text "  vs   = " <+> prettyTCM vs
+        , text "  rest = " <+> prettyTCM rest
+        ]
+      -- We assume the meta variable use here is in an extension of the original context.
+      -- If not we revert to the old buggy behavior of #707 (see test/Succeed/Issue2257b).
+      if (length vs /= n) then fallback else do
+      s1  <- piApplyM s0 vs
+      case ignoreSharing $ unEl s1 of
+        Sort s -> return $ El s $ MetaV x $ map Apply vs
+        _ -> __IMPOSSIBLE__
+
     _ -> fallback
 
 ptsRule :: (LensSort a, LensSort b) => a -> b -> TCM Sort
@@ -174,8 +197,8 @@
 
 -- | Check that an expression is a type which is equal to a given type.
 isTypeEqualTo :: A.Expr -> Type -> TCM Type
-isTypeEqualTo e t = case e of
-  A.ScopedExpr _ e -> isTypeEqualTo e t
+isTypeEqualTo e0 t = scopedExpr e0 >>= \case
+  A.ScopedExpr{} -> __IMPOSSIBLE__
   A.Underscore i | A.metaNumber i == Nothing -> return t
   e -> workOnTypes $ do
     t' <- isType e (getSort t)
@@ -201,7 +224,7 @@
                 a <- newTypeMeta sa
                 x <- freshName_ name
                 let arg = setHiding h $ defaultDom a
-                b <- addCtx x arg $ newTypeMeta sb
+                b <- addContext (x, arg) $ newTypeMeta sb
                 let ty = El s' $ Pi arg (Abs (show x) b)
                 equalType (El s t') ty
                 ty' <- reduce ty
@@ -257,20 +280,20 @@
     -- Andreas, 2011-04-26 irrelevant function arguments may appear
     -- non-strictly in the codomain type
     -- 2011-10-04 if flag --experimental-irrelevance is set
-    allowed <- optExperimentalIrrelevance <$> pragmaOptions
-    t <- modEnv lamOrPi allowed $ isType_ e
-    let info' = mapRelevance (modRel lamOrPi allowed) info
-    addContext (xs, Dom info' t) $
+    experimental <- optExperimentalIrrelevance <$> pragmaOptions
+    t <- modEnv lamOrPi $ isType_ e
+    let info' = mapRelevance (modRel lamOrPi experimental) info
+    addContext' (xs, Dom info' t) $
       ret $ bindsWithHidingToTel xs (Dom info t)
     where
         -- if we are checking a typed lambda, we resurrect before we check the
         -- types, but do not modify the new context entries
         -- otherwise, if we are checking a pi, we do not resurrect, but
         -- modify the new context entries
-        modEnv LamNotPi True = doWorkOnTypes
-        modEnv _        _    = id
-        modRel PiNotLam True = irrToNonStrict
-        modRel _        _    = id
+        modEnv LamNotPi = workOnTypes
+        modEnv _        = id
+        modRel PiNotLam xp = if xp then irrToNonStrict else nonStrictToRel
+        modRel _        _  = id
 checkTypedBinding lamOrPi info (A.TLet _ lbs) ret = do
     checkLetBindings lbs (ret [])
 
@@ -316,13 +339,13 @@
         pid <- newProblem_ $ leqType (telePi tel t1) target
         -- Now check body : ?t₁
         -- WRONG: v <- addContext tel $ checkExpr body t1
-        v <- addContext (xs, argsT) $ checkExpr body t1
+        v <- addContext' (xs, argsT) $ checkExpr body t1
         -- Block on the type comparison
         blockTermOnProblem target (teleLam tel v) pid
        else do
         -- Now check body : ?t₁
         -- WRONG: v <- addContext tel $ checkExpr body t1
-        v <- addContext (xs, argsT) $ checkExpr body t1
+        v <- addContext' (xs, argsT) $ checkExpr body t1
         -- Block on the type comparison
         coerce (teleLam tel v) (telePi tel t1) target
 
@@ -352,8 +375,8 @@
       where
         [WithHiding h x] = xs
         -- Andreas, Issue 630: take name from function type if lambda name is "_"
-        add y dom | isNoName x = addContext (y, dom)
-                  | otherwise  = addContext (x, dom)
+        add y dom | isNoName x = addContext' (y, dom)
+                  | otherwise  = addContext' (x, dom)
     useTargetType _ _ = __IMPOSSIBLE__
 
 -- | Checking a lambda whose domain type has already been checked.
@@ -416,7 +439,7 @@
             -- Otherwise, we found a hidden argument that we can insert.
             let x = absName b
             Lam (domInfo dom) . Abs x <$> do
-              addContext (x, dom) $ insertHiddenLambdas h (absBody b) postpone ret
+              addContext' (x, dom) $ insertHiddenLambdas h (absBody b) postpone ret
 
       _ -> typeError . GenericDocError =<< do
         text "Expected " <+> prettyTCM target <+> text " to be a function type"
@@ -449,31 +472,19 @@
             (\ d -> (defaultDefn (setRelevance rel info') aux t' d)
                     { defPolarity       = [Nonvariant]
                     , defArgOccurrences = [Unused] })
-            $ Function
+            $ emptyFunction
               { funClauses        =
                   [Clause
                     { clauseRange     = getRange e
                     , clauseTel       = telFromList [fmap ("()",) dom]
-                    , namedClausePats = [Arg info' $ Named (Just $ unranged $ absName b) $ VarP (0,"()")]
-                    , clauseBody      = Bind $ NoAbs "()" NoBody
+                    , namedClausePats = [Arg info' $ Named (Just $ unranged $ absName b) $ debruijnNamedVar "()" 0]
+                    , clauseBody      = Nothing
                     , clauseType      = Just $ setRelevance rel $ defaultArg $ absBody b
                     , clauseCatchall  = False
                     }
                   ]
               , funCompiled       = Just Fail
-              , funTreeless       = Nothing
-              , funDelayed        = NotDelayed
-              , funInv            = NotInjective
-              , funAbstr          = ConcreteDef
-              , funMutual         = []
-              , funProjection     = Nothing
-              , funSmashable      = False -- there is no body anyway, smashing doesn't make sense
-              , funStatic         = False
-              , funInline         = False
               , funTerminates     = Just True
-              , funExtLam         = Nothing
-              , funWith           = Nothing
-              , funCopatternLHS   = False
               }
           -- Andreas 2012-01-30: since aux is lifted to toplevel
           -- it needs to be applied to the current telescope (issue 557)
@@ -486,11 +497,18 @@
 checkExtendedLambda :: A.ExprInfo -> A.DefInfo -> QName -> [A.Clause] ->
                        A.Expr -> Type -> TCM Term
 checkExtendedLambda i di qname cs e t = do
+   -- Andreas, 2016-06-16 issue #2045
+   -- Try to get rid of unsolved size metas before we
+   -- fix the type of the extended lambda auxiliary function
+   solveSizeConstraints DontDefaultToInfty
    t <- instantiateFull t
    ifBlockedType t (\ m t' -> postponeTypeCheckingProblem_ $ CheckExpr e t') $ \ t -> do
      j   <- currentOrFreshMutualBlock
      rel <- asks envRelevance
      let info = setRelevance rel defaultArgInfo
+     -- Andreas, 2016-07-13, issue 2028.
+     -- Save the state to rollback the changes to the signature.
+     st <- get
      -- Andreas, 2013-12-28: add extendedlambda as @Function@, not as @Axiom@;
      -- otherwise, @addClause@ in @checkFunDef'@ fails (see issue 1009).
      addConstant qname =<< do
@@ -503,7 +521,7 @@
      args     <- getContextArgs
      freevars <- getCurrentModuleFreeVars
      let argsNoParam = genericDrop freevars args -- don't count module parameters
-     let (hid, notHid) = partition isHidden argsNoParam
+     let (hid, notHid) = partition notVisible argsNoParam
      reportSDoc "tc.term.exlam" 30 $ vcat $
        [ text "dropped args: " <+> prettyTCM (take freevars args)
        , text "hidden  args: " <+> prettyTCM hid
@@ -521,11 +539,14 @@
        -- In this case, we want to postpone.
        Just (err, x) -> do
          -- Note that we messed up the state a bit.  We might want to unroll these state changes.
-         -- However, they are harmless:
+         -- However, they are mostly harmless:
          -- 1. We created a new mutual block id.
          -- 2. We added a constant without definition.
-         -- TODO: roll back the state.
 
+         -- In fact, they are not so harmless, see issue 2028!
+         -- Thus, reset the state!
+         put st
+
          -- The meta might not be known in the reset state, as it could have been created
          -- somewhere on the way to the type error.
          mm <- Map.lookup x <$> getMetaStore
@@ -535,9 +556,8 @@
              -- TODO: mine for a meta in t
              -- For now, we fail.
              throwError err
-           -- Case: we know the meta here.  It cannot be instantiated yet.
-           Just InstV{} -> __IMPOSSIBLE__
-           Just InstS{} -> __IMPOSSIBLE__
+           -- Case: we know the meta here.
+           Just InstV{} -> __IMPOSSIBLE__  -- It cannot be instantiated yet.
            Just{} -> do
              -- It has to be blocked on some meta, so we can postpone,
              -- being sure it will be retired when a meta is solved
@@ -559,12 +579,16 @@
 --   * If another error was thrown or the type @a@ is not blocked, reraise the error.
 --
 catchIlltypedPatternBlockedOnMeta :: TCM () -> TCM (Maybe (TCErr, MetaId))
-catchIlltypedPatternBlockedOnMeta m = (Nothing <$ m) `catchError` \ err -> do
+catchIlltypedPatternBlockedOnMeta m = (Nothing <$ do disableDestructiveUpdate m)
+  `catchError` \ err -> do
   let reraise = throwError err
   case err of
-    TypeError s cl@(Closure sig env scope (IlltypedPattern p a)) ->
-      enterClosure cl $ \ _ -> do
-        ifBlockedType a (\ x _ -> return $ Just (err, x)) $ {- else -} \ _ -> reraise
+    TypeError s cl@Closure{ clValue = IlltypedPattern p a } -> do
+      mx <- localState $ do
+        put s
+        enterClosure cl $ \ _ -> do
+          ifBlockedType a (\ x _ -> return $ Just x) $ {- else -} \ _ -> return Nothing
+      caseMaybe mx reraise $ \ x -> return $ Just (err, x)
     _ -> reraise
 
 ---------------------------------------------------------------------------
@@ -644,7 +668,7 @@
         _ -> __IMPOSSIBLE__
       -- Don't need to block here!
       reportSDoc "tc.term.rec" 20 $ text $ "finished record expression"
-      return $ Con con args
+      return $ Con con ConORec args
     _         -> typeError $ ShouldBeRecordType t
 
   where
@@ -762,6 +786,14 @@
       postponeTypeCheckingProblem_ (CheckArgs exph r es t0 t $ \vs t -> k (us ++ vs) t)
       -- if unsuccessful, postpone checking until t0 unblocks
 
+
+-- | Remove top layers of scope info of expression and set the scope accordingly
+--   in the 'TCState'.
+
+scopedExpr :: A.Expr -> TCM A.Expr
+scopedExpr (A.ScopedExpr scope e) = setScope scope >> scopedExpr e
+scopedExpr e                      = return e
+
 -- | Type check an expression.
 checkExpr :: A.Expr -> Type -> TCM Term
 checkExpr e t0 =
@@ -778,9 +810,6 @@
     reportSDoc "tc.term.expr.top" 15 $
         text "    --> " <+> prettyTCM t
 
-    let scopedExpr (A.ScopedExpr scope e) = setScope scope >> scopedExpr e
-        scopedExpr e                      = return e
-
     e <- scopedExpr e
 
     case e of
@@ -795,7 +824,7 @@
             -- expression is not a matching hidden lambda or question mark
             , not (hiddenLambdaOrHole h e)
             -> do
-                x <- freshName rx $ notInScopeName $ absName b
+                x <- unshadowName <=< freshName rx $ notInScopeName $ absName b
                 reportSLn "tc.term.expr.impl" 15 $ "Inserting implicit lambda"
                 checkExpr (A.Lam (A.ExprRange re) (domainFree info x) e) t
             where
@@ -809,28 +838,17 @@
                   A.QuestionMark{}        -> True
                   _                       -> False
 
-                hiddenLHS (A.Clause (A.LHS _ (A.LHSHead _ (a : _)) _) _ _ _) = notVisible a
+                hiddenLHS (A.Clause (A.LHS _ (A.LHSHead _ (a : _)) _) _ _ _ _) = notVisible a
                 hiddenLHS _ = False
 
         -- a meta variable without arguments: type check directly for efficiency
-        A.QuestionMark i ii -> do
-          reportSDoc "tc.interaction" 20 $ sep
-            [ text "Found interaction point"
-            , text (show ii)
-            , text ":"
-            , prettyTCM t0
-            ]
-          reportSDoc "tc.interaction" 40 $ sep
-            [ text "Raw:"
-            , text (show t0)
-            ]
-          checkMeta (newQuestionMark ii) t0 i -- Andreas, 2013-05-22 use unreduced type t0!
-        A.Underscore i   -> checkMeta (newValueMeta RunMetaOccursCheck) t0 i
+        A.QuestionMark i ii -> checkQuestionMark (newValueMeta' DontRunMetaOccursCheck) t0 i ii
+        A.Underscore i -> checkUnderscore t0 i
 
         A.WithApp _ e es -> typeError $ NotImplemented "type checking of with application"
 
         -- check |- Set l : t  (requires universe polymorphism)
-        A.App i s (Arg ai l)
+        A.App i s arg@(Arg ai l)
           | A.Set _ 0 <- unScope s, visible ai ->
           ifNotM hasUniversePolymorphism
               (typeError $ GenericError "Use --universe-polymorphism to enable level arguments to Set")
@@ -840,7 +858,7 @@
             --   Set : (NonStrict) Level -> Set\omega
             n   <- levelView =<< do
               applyRelevanceToContext NonStrict $
-                checkExpr (namedThing l) lvl
+                checkNamedArg arg lvl
             -- check that Set (l+1) <= t
             reportSDoc "tc.univ.poly" 10 $
               text "checking Set " <+> prettyTCM n <+>
@@ -850,7 +868,9 @@
         e0@(A.App i q (Arg ai e))
           | A.Quote _ <- unScope q, visible ai -> do
           let quoted (A.Def x) = return x
-              quoted (A.Proj x) = return x
+              quoted (A.Macro x) = return x
+              quoted (A.Proj o (AmbQ [x])) = return x
+              quoted (A.Proj o (AmbQ xs))  = typeError $ GenericError $ "quote: Ambigous name: " ++ show xs
               quoted (A.Con (AmbQ [x])) = return x
               quoted (A.Con (AmbQ xs))  = typeError $ GenericError $ "quote: Ambigous name: " ++ show xs
               quoted (A.ScopedExpr _ e) = quoted e
@@ -861,7 +881,7 @@
 
           | A.QuoteTerm _ <- unScope q ->
              do (et, _)   <- inferExpr (namedThing e)
-                et'       <- etaContract =<< normalise et
+                et'       <- etaContract =<< instantiateFull et
                 let metas = allMetas et'
                 case metas of
                   _:_ -> postponeTypeCheckingProblem (CheckExpr e0 t) $ andM $ map isInstantiatedMeta metas
@@ -952,12 +972,19 @@
 
         A.ETel _   -> __IMPOSSIBLE__
 
+        A.Dot{} -> typeError $ GenericError $ "Invalid dotted expression"
+
         -- Application
         _   | Application hd args <- appView e -> checkApplication hd args e t
 
+---------------------------------------------------------------------------
+-- * Reflection
+---------------------------------------------------------------------------
+
+-- | DOCUMENT ME!
 quoteGoal :: Type -> TCM (Either [MetaId] Term)
 quoteGoal t = do
-  t' <- etaContract =<< normalise t
+  t' <- etaContract =<< instantiateFull t
   let metas = allMetas t'
   case metas of
     _:_ -> return $ Left metas
@@ -965,10 +992,11 @@
       quotedGoal <- quoteTerm (unEl t')
       return $ Right quotedGoal
 
+-- | DOCUMENT ME!
 quoteContext :: TCM (Either [MetaId] Term)
 quoteContext = do
   contextTypes  <- map (fmap snd) <$> getContext
-  contextTypes  <- etaContract =<< normalise contextTypes
+  contextTypes  <- etaContract =<< instantiateFull contextTypes
   let metas = allMetas contextTypes
   case metas of
     _:_ -> return $ Left metas
@@ -976,6 +1004,205 @@
       quotedContext <- buildList <*> mapM quoteDom contextTypes
       return $ Right quotedContext
 
+-- | Unquote a TCM computation in a given hole.
+unquoteM :: A.Expr -> Term -> Type -> TCM Term -> TCM Term
+unquoteM tac hole holeType k = do
+  tac <- checkExpr tac =<< (el primAgdaTerm --> el (primAgdaTCM <#> primLevelZero <@> primUnit))
+  inFreshModuleIfFreeParams $ unquoteTactic tac hole holeType k
+
+-- | DOCUMENT ME!
+unquoteTactic :: Term -> Term -> Type -> TCM Term -> TCM Term
+unquoteTactic tac hole goal k = do
+  ok  <- runUnquoteM $ unquoteTCM tac hole
+  case ok of
+    Left (BlockedOnMeta oldState x) -> do
+      put oldState
+      mi <- Map.lookup x <$> getMetaStore
+      (r, unblock) <- case mi of
+        Nothing -> do -- fresh meta: need to block on something else!
+          otherMetas <- allMetas <$> instantiateFull goal
+          case otherMetas of
+            []  -> return (noRange,     return False) -- Nothing to block on, leave it yellow. Alternative: fail.
+            x:_ -> return (noRange,     isInstantiatedMeta x)  -- range?
+        Just mi -> return (getRange mi, isInstantiatedMeta x)
+      setCurrentRange r $
+        postponeTypeCheckingProblem (UnquoteTactic tac hole goal) unblock
+    Left err -> typeError $ UnquoteFailed err
+    Right _ -> k
+
+---------------------------------------------------------------------------
+-- * Projections
+---------------------------------------------------------------------------
+
+-- | Inferring the type of an overloaded projection application.
+--   See 'inferOrCheckProjApp'.
+
+inferProjApp :: A.Expr -> ProjOrigin -> [QName] -> A.Args -> TCM (Term, Type)
+inferProjApp e o ds args0 = inferOrCheckProjApp e o ds args0 Nothing
+
+-- | Checking the type of an overloaded projection application.
+--   See 'inferOrCheckProjApp'.
+
+checkProjApp  :: A.Expr -> ProjOrigin -> [QName] -> A.Args -> Type -> TCM Term
+checkProjApp e o ds args0 t = do
+  (v, ti) <- inferOrCheckProjApp e o ds args0 (Just t)
+  coerce v ti t
+
+-- | Inferring or Checking an overloaded projection application.
+--
+--   The overloaded projection is disambiguated by inferring the type of its
+--   principal argument, which is the first visible argument.
+
+inferOrCheckProjApp
+  :: A.Expr
+     -- ^ The whole expression which constitutes the application.
+  -> ProjOrigin
+     -- ^ The origin of the projection involved in this projection application.
+  -> [QName]
+     -- ^ The projection name (potentially ambiguous).  List must not be empty.
+  -> A.Args
+     -- ^ The arguments to the projection.
+  -> Maybe Type
+     -- ^ The expected type of the expression (if 'Nothing', infer it).
+  -> TCM (Term, Type)
+     -- ^ The type-checked expression and its type (if successful).
+inferOrCheckProjApp e o ds args mt = do
+  reportSDoc "tc.proj.amb" 20 $ vcat
+    [ text "checking ambiguous projection"
+    , text $ "  ds   = " ++ show ds
+    , text   "  args = " <+> sep (map prettyTCM args)
+    , text   "  t    = " <+> caseMaybe mt (text "Nothing") prettyTCM
+    ]
+
+  let refuse :: String -> TCM (Term, Type)
+      refuse reason = typeError $ GenericError $
+        "Cannot resolve overloaded projection "
+        ++ show (A.nameConcrete $ A.qnameName $ head ds)
+        ++ " because " ++ reason
+      refuseNotApplied = refuse "it is not applied to a visible argument"
+      refuseNoMatching = refuse "no matching candidate found"
+      refuseNotRecordType = refuse "principal argument is not of record type"
+
+      -- Postpone the whole type checking problem
+      -- if type of principal argument (or the type where we get it from)
+      -- is blocked by meta m.
+      postpone m = do
+        tc <- caseMaybe mt newTypeMeta_ return
+        v <- postponeTypeCheckingProblem (CheckExpr e tc) $ isInstantiatedMeta m
+        return (v, tc)
+
+  -- The following cases need to be considered:
+  -- 1. No arguments to the projection.
+  -- 2. Arguments (parameters), but not the principal argument.
+  -- 3. Argument(s) including the principal argument.
+
+  -- For now, we only allow ambiguous projections if the first visible
+  -- argument is the record value.
+
+  case filter (visible . getHiding . snd) $ zip [0..] args of
+
+    -- Case: we have no visible argument to the projection.
+    -- In inference mode, we really need the visible argument, postponing does not help
+    [] -> caseMaybe mt refuseNotApplied $ \ t -> do
+      -- If we have the type, we can try to get the type of the principal argument.
+      -- It is the first visible argument.
+      TelV _ptel core <- telViewUpTo' (-1) (not . visible) t
+      ifBlockedType core (\ m _ -> postpone m) $ {-else-} \ core -> do
+      ifNotPiType core (\ _ -> refuseNotApplied) $ {-else-} \ dom _b -> do
+      ifBlockedType (unDom dom) (\ m _ -> postpone m) $ {-else-} \ ta -> do
+      caseMaybeM (isRecordType ta) refuseNotRecordType $ \ (_q, _pars, defn) -> do
+      case defn of
+        Record { recFields = fs } -> do
+          case catMaybes $ for fs $ \ (Arg _ f) -> find (f ==) ds of
+            [] -> refuseNoMatching
+            [d] -> do
+              storeDisambiguatedName d
+              (,t) <$> checkHeadApplication e t (A.Proj o $ AmbQ [d]) args
+            _ -> __IMPOSSIBLE__
+        _ -> __IMPOSSIBLE__
+
+    -- Case: we have a visible argument
+    ((k, arg) : _) -> do
+      (v0, ta) <- inferExpr $ namedArg arg
+      reportSDoc "tc.proj.amb" 25 $ vcat
+        [ text "  principal arg " <+> prettyTCM arg
+        , text "  has type "      <+> prettyTCM ta
+        ]
+      -- ta should be a record type (after introducing the hidden args in v0)
+      (vargs, ta) <- implicitArgs (-1) (not . visible) ta
+      let v = v0 `apply` vargs
+      ifBlockedType ta (\ m _ -> postpone m) {-else-} $ \ ta -> do
+      caseMaybeM (isRecordType ta) refuseNotRecordType $ \ (q, _pars0, _) -> do
+
+          -- try to project it with all of the possible projections
+          let try d = do
+              reportSDoc "tc.proj.amb" 30 $ vcat
+                [ text $ "trying projection " ++ show d
+                , text "  td  = " <+> caseMaybeM (getDefType d ta) (text "Nothing") prettyTCM
+                ]
+              -- get the original projection name
+              Projection{ projProper = proper, projOrig = orig } <- MaybeT $ isProjection d
+              guard proper
+              -- try to eliminate
+              (dom, u, tb) <- MaybeT (projectTyped v ta o d `catchError` \ _ -> return Nothing)
+              reportSDoc "tc.proj.amb" 30 $ vcat
+                [ text "  dom = " <+> prettyTCM dom
+                , text "  u   = " <+> prettyTCM u
+                , text "  tb  = " <+> prettyTCM tb
+                ]
+              (q', pars, _) <- MaybeT $ isRecordType $ unDom dom
+              reportSDoc "tc.proj.amb" 30 $ vcat
+                [ text "  q   = " <+> prettyTCM q
+                , text "  q'  = " <+> prettyTCM q'
+                ]
+              guard (q == q')
+              -- Get the type of the projection and check
+              -- that the first visible argument is the record value.
+              tfull <- lift $ defType <$> getConstInfo d
+              TelV tel _ <- lift $ telViewUpTo' (-1) (not . visible) tfull
+              reportSDoc "tc.proj.amb" 30 $ vcat
+                [ text $ "  size tel  = " ++ show (size tel)
+                , text $ "  size pars = " ++ show (size pars)
+                ]
+              -- See issue 1960 for when the following assertion fails for
+              -- the correct disambiguation.
+              -- guard (size tel == size pars)
+              return (orig, (d, (pars, (dom, u, tb))))
+
+          cands <- groupOn fst . catMaybes <$> mapM (runMaybeT . try) ds
+          case cands of
+            [] -> refuseNoMatching
+            [[]] -> refuseNoMatching
+            (_:_:_) -> refuse $ "several matching candidates found: "
+                 ++ show (map (fst . snd) $ concat cands)
+            -- case: just one matching projection d
+            -- the term u = d v
+            -- the type tb is the type of this application
+            [ (_orig, (d, (pars, (_dom,u,tb)))) : _ ] -> do
+              storeDisambiguatedName d
+
+              -- Check parameters
+              tfull <- typeOfConst d
+              (_,_) <- checkKnownArguments (take k args) pars tfull
+
+              -- Check remaining arguments
+              let tc = fromMaybe typeDontCare mt
+              let r  = getRange e
+              z <- runExceptT $ checkArguments ExpandLast r (drop (k+1) args) tb tc
+              case z of
+                Right (us, trest) -> return (u `apply` us, trest)
+                -- We managed to check a part of es and got us1, but es2 remain.
+                Left (us1, es2, trest1) -> do
+                  -- In the inference case:
+                  -- To create a postponed type checking problem,
+                  -- we do not use typeDontCare, but create a meta.
+                  tc <- caseMaybe mt newTypeMeta_ return
+                  v <- postponeTypeCheckingProblem_ $
+                    CheckArgs ExpandLast r es2 trest1 tc $ \ us2 trest ->
+                      coerce (u `apply` us1 `apply` us2) trest tc
+                  return (v, tc)
+
+
 -- | @checkApplication hd args e t@ checks an application.
 --   Precondition: @Application hs args = appView e@
 --
@@ -984,8 +1211,29 @@
 --   and resolves pattern synonyms.
 checkApplication :: A.Expr -> A.Args -> A.Expr -> Type -> TCM Term
 checkApplication hd args e t = do
-  case hd of
+  reportSDoc "tc.check.app" 20 $ vcat
+    [ text "checkApplication"
+    , nest 2 $ text "hd   = " <+> prettyA hd
+    , nest 2 $ text "args = " <+> sep (map prettyA args)
+    , nest 2 $ text "e    = " <+> prettyA e
+    , nest 2 $ text "t    = " <+> prettyTCM t
+    ]
+  reportSDoc "tc.check.app" 70 $ vcat
+    [ text "checkApplication (raw)"
+    , nest 2 $ text $ "hd   = " ++ show hd
+    , nest 2 $ text $ "args = " ++ show (deepUnscope args)
+    , nest 2 $ text $ "e    = " ++ show (deepUnscope e)
+    , nest 2 $ text $ "t    = " ++ show t
+    ]
+  case unScope hd of
+    A.Proj _ (AmbQ []) -> __IMPOSSIBLE__
 
+    -- Subcase: unambiguous projection
+    A.Proj _ (AmbQ [_]) -> checkHeadApplication e t hd args
+
+    -- Subcase: ambiguous projection
+    A.Proj o (AmbQ ds@(_:_:_)) -> checkProjApp e o ds args t
+
     -- Subcase: ambiguous constructor
     A.Con (AmbQ cs@(_:_:_)) -> do
       -- First we should figure out which constructor we want.
@@ -1008,7 +1256,7 @@
       let getCon :: TCM (Maybe ConHead)
           getCon = do
             TelV tel t1 <- telView t
-            addCtxTel tel $ do
+            addContext tel $ do
              reportSDoc "tc.check.term.con" 40 $ nest 2 $
                text "target type: " <+> prettyTCM t1
              ifBlockedType t1 (\ m t -> return Nothing) $ \ t' ->
@@ -1050,7 +1298,7 @@
     -- Subcase: macro
     A.Macro x -> do
       -- First go: no parameters
-      TelV tel _ <- telView =<< normalise . defType =<< getConstInfo x
+      TelV tel _ <- telView =<< normalise . defType =<< instantiateDef =<< getConstInfo x
 
       tTerm <- primAgdaTerm
       tName <- primQName
@@ -1087,7 +1335,7 @@
     -- Subcase: unquote
     A.Unquote _
       | [arg] <- args -> do
-          hole <- newValueMeta RunMetaOccursCheck t
+          (_, hole) <- newValueMeta RunMetaOccursCheck t
           unquoteM (namedArg arg) hole t $ return hole
       | arg : args <- args -> do
           -- Example: unquote v a b : A
@@ -1096,13 +1344,13 @@
           --  Unify Z a b == A
           --  Run the tactic on H
           tel    <- metaTel args                    -- (x : X) (y : Y x)
-          target <- addCtxTel tel newTypeMeta_      -- Z x y
+          target <- addContext tel newTypeMeta_      -- Z x y
           let holeType = telePi_ tel target         -- (x : X) (y : Y x) → Z x y
           (vs, EmptyTel) <- checkArguments_ ExpandLast (getRange args) args tel
                                                     -- a b : (x : X) (y : Y x)
           let rho = reverse (map unArg vs) ++# IdS  -- [x := a, y := b]
           equalType (applySubst rho target) t       -- Z a b == A
-          hole <- newValueMeta RunMetaOccursCheck holeType
+          (_, hole) <- newValueMeta RunMetaOccursCheck holeType
           unquoteM (namedArg arg) hole holeType $ return $ apply hole vs
       where
         metaTel :: [Arg a] -> TCM Telescope
@@ -1110,72 +1358,55 @@
         metaTel (arg : args) = do
           a <- newTypeMeta_
           let dom = a <$ domFromArg arg
-          ExtendTel dom . Abs "x" <$> addCtxString "x" dom (metaTel args)
+          ExtendTel dom . Abs "x" <$> addContext ("x", dom) (metaTel args)
 
     -- Subcase: defined symbol or variable.
     _ -> checkHeadApplication e t hd args
 
--- | Unquote a TCM computation in a given hole.
-unquoteM :: A.Expr -> Term -> Type -> TCM Term -> TCM Term
-unquoteM tac hole holeType k = do
-  tac <- checkExpr tac =<< (el primAgdaTerm --> el (primAgdaTCM <#> primLevelZero <@> primUnit))
-  inFreshModuleIfFreeParams $ unquoteTactic tac hole holeType k
-
-unquoteTactic :: Term -> Term -> Type -> TCM Term -> TCM Term
-unquoteTactic tac hole goal k = do
-  ok  <- runUnquoteM $ unquoteTCM tac hole
-  case ok of
-    Left (BlockedOnMeta oldState x) -> do
-      put oldState
-      mi <- Map.lookup x <$> getMetaStore
-      (r, unblock) <- case mi of
-        Nothing -> do -- fresh meta: need to block on something else!
-          otherMetas <- allMetas <$> instantiateFull goal
-          case otherMetas of
-            []  -> return (noRange,     return False) -- Nothing to block on, leave it yellow. Alternative: fail.
-            x:_ -> return (noRange,     isInstantiatedMeta x)  -- range?
-        Just mi -> return (getRange mi, isInstantiatedMeta x)
-      setCurrentRange r $
-        postponeTypeCheckingProblem (UnquoteTactic tac hole goal) unblock
-    Left err -> typeError $ UnquoteFailed err
-    Right _ -> k
-
--- | Turn a domain-free binding (e.g. lambda) into a domain-full one,
---   by inserting an underscore for the missing type.
-domainFree :: ArgInfo -> A.Name -> A.LamBinding
-domainFree info x =
-  A.DomainFull $ A.TypedBindings r $ Arg info $ A.TBind r [pure x] $ A.Underscore underscoreInfo
-  where
-    r = getRange x
-    underscoreInfo = A.MetaInfo
-      { A.metaRange          = r
-      , A.metaScope          = emptyScopeInfo
-      , A.metaNumber         = Nothing
-      , A.metaNameSuggestion = show $ A.nameConcrete x
-      }
-
 ---------------------------------------------------------------------------
 -- * Meta variables
 ---------------------------------------------------------------------------
 
-checkMeta :: (Type -> TCM Term) -> Type -> A.MetaInfo -> TCM Term
+-- | Check an interaction point without arguments.
+checkQuestionMark :: (Type -> TCM (MetaId, Term)) -> Type -> A.MetaInfo -> InteractionId -> TCM Term
+checkQuestionMark new t0 i ii = do
+  reportSDoc "tc.interaction" 20 $ sep
+    [ text "Found interaction point"
+    , text (show ii)
+    , text ":"
+    , prettyTCM t0
+    ]
+  reportSDoc "tc.interaction" 60 $ sep
+    [ text "Raw:"
+    , text (show t0)
+    ]
+  checkMeta (newQuestionMark' new ii) t0 i -- Andreas, 2013-05-22 use unreduced type t0!
+
+-- | Check an underscore without arguments.
+checkUnderscore :: Type -> A.MetaInfo -> TCM Term
+checkUnderscore = checkMeta (newValueMeta RunMetaOccursCheck)
+
+-- | Type check a meta variable.
+checkMeta :: (Type -> TCM (MetaId, Term)) -> Type -> A.MetaInfo -> TCM Term
 checkMeta newMeta t i = fst <$> checkOrInferMeta newMeta (Just t) i
 
-inferMeta :: (Type -> TCM Term) -> A.MetaInfo -> TCM (Args -> Term, Type)
+-- | Infer the type of a meta variable.
+--   If it is a new one, we create a new meta for its type.
+inferMeta :: (Type -> TCM (MetaId, Term)) -> A.MetaInfo -> TCM (Args -> Term, Type)
 inferMeta newMeta i = mapFst apply <$> checkOrInferMeta newMeta Nothing i
 
 -- | Type check a meta variable.
 --   If its type is not given, we return its type, or a fresh one, if it is a new meta.
 --   If its type is given, we check that the meta has this type, and we return the same
 --   type.
-checkOrInferMeta :: (Type -> TCM Term) -> Maybe Type -> A.MetaInfo -> TCM (Term, Type)
+checkOrInferMeta :: (Type -> TCM (MetaId, Term)) -> Maybe Type -> A.MetaInfo -> TCM (Term, Type)
 checkOrInferMeta newMeta mt i = do
   case A.metaNumber i of
     Nothing -> do
       setScope (A.metaScope i)
       t <- maybe (workOnTypes $ newTypeMeta_) return mt
-      v <- newMeta t
-      setValueMetaName v (A.metaNameSuggestion i)
+      (x, v) <- newMeta t
+      setMetaNameSuggestion x (A.metaNameSuggestion i)
       return (v, t)
     -- Rechecking an existing metavariable
     Just x -> do
@@ -1185,17 +1416,31 @@
         Nothing -> return (v, t')
         Just t  -> (,t) <$> coerce v t' t
 
+-- | Turn a domain-free binding (e.g. lambda) into a domain-full one,
+--   by inserting an underscore for the missing type.
+domainFree :: ArgInfo -> A.Name -> A.LamBinding
+domainFree info x =
+  A.DomainFull $ A.TypedBindings r $ Arg info $ A.TBind r [pure x] $ A.Underscore underscoreInfo
+  where
+    r = getRange x
+    underscoreInfo = A.MetaInfo
+      { A.metaRange          = r
+      , A.metaScope          = emptyScopeInfo
+      , A.metaNumber         = Nothing
+      , A.metaNameSuggestion = show $ A.nameConcrete x
+      }
+
 ---------------------------------------------------------------------------
 -- * Applications
 ---------------------------------------------------------------------------
 
-inferHeadDef :: QName -> TCM (Args -> Term, Type)
-inferHeadDef x = do
+inferHeadDef :: ProjOrigin -> QName -> TCM (Args -> Term, Type)
+inferHeadDef o x = do
   proj <- isProjection x
   let app =
         case proj of
-          Nothing -> \ f args -> return $ Def f $ map Apply args
-          Just p  -> \ f args -> return $ projDropPars p `apply` args
+          Nothing -> \ args -> Def x $ map Apply args
+          Just p  -> \ args -> projDropParsApply p o args
   mapFst apply <$> inferDef app x
 
 -- | Infer the type of a head thing (variable, function symbol, or constructor).
@@ -1214,8 +1459,9 @@
       when (unusableRelevance $ getRelevance a) $
         typeError $ VariableIsIrrelevant x
       return (apply u, unDom a)
-    (A.Def x) -> inferHeadDef x
-    (A.Proj x) -> inferHeadDef x
+    (A.Def x) -> inferHeadDef ProjPrefix x
+    (A.Proj o (AmbQ [d])) -> inferHeadDef o d
+    (A.Proj{}) -> __IMPOSSIBLE__ -- inferHead will only be called on unambiguous projections
     (A.Con (AmbQ [c])) -> do
 
       -- Constructors are polymorphic internally.
@@ -1224,7 +1470,8 @@
 
       -- First, inferDef will try to apply the constructor
       -- to the free parameters of the current context. We ignore that.
-      (u, a) <- inferDef (\ c _ -> getOrigConTerm c) c
+      con <- getOrigConHead c
+      (u, a) <- inferDef (\ _ -> Con con ConOCon []) c
 
       -- Next get the number of parameters in the current context.
       Constructor{conPars = n} <- theDef <$> (instantiateDef =<< getConstInfo c)
@@ -1240,9 +1487,9 @@
       (term, t) <- inferExpr e
       return (apply term, t)
 
-inferDef :: (QName -> Args -> TCM Term) -> QName -> TCM (Term, Type)
+inferDef :: (Args -> Term) -> QName -> TCM (Term, Type)
 inferDef mkTerm x =
-    traceCall (InferDef (getRange x) x) $ do
+    traceCall (InferDef x) $ do
     -- getConstInfo retrieves the *absolute* (closed) type of x
     -- instantiateDef relativizes it to the current context
     d  <- instantiateDef =<< getConstInfo x
@@ -1262,7 +1509,7 @@
       text "inferred def " <+> prettyTCM x <+> hsep (map prettyTCM vs)
     let t = defType d
     reportSDoc "tc.term.def" 10 $ nest 2 $ text " : " <+> prettyTCM t
-    v  <- mkTerm x vs
+    let v = mkTerm vs -- applies x to vs, dropping parameters
     reportSDoc "tc.term.def" 10 $ nest 2 $ text " --> " <+> prettyTCM v
     return (v, t)
 
@@ -1315,7 +1562,7 @@
            reportSDoc "tc.term.con" 20 $ nest 2 $ text "ctype' =" <+> prettyTCM ctype'
            -- get the parameter names
            let TelV ptel _ = telView'UpTo n ctype
-           let pnames = map (fst . unDom) $ telToList ptel
+           let pnames = map (fmap fst) $ telToList ptel
            -- drop the parameter arguments
                args' = dropArgs pnames args
            -- check the non-parameter arguments
@@ -1324,7 +1571,7 @@
              reportSDoc "tc.term.con" 20 $ nest 2 $ vcat
                [ text "us     =" <+> prettyTCM us
                , text "t'     =" <+> prettyTCM t' ]
-             coerce (Con c us) t' t
+             coerce (Con c ConOCon us) t' t
       _ -> do
         reportSDoc "tc.term.con" 50 $ nest 2 $ text "we are not at a datatype, falling back"
         fallback
@@ -1337,22 +1584,32 @@
     --
     -- Andreas, 2012-04-18: if all inital args are underscores, ignore them
     checkForParams args =
-      let (hargs, rest) = span isHidden args
+      let (hargs, rest) = span (not . visible) args
           notUnderscore A.Underscore{} = False
           notUnderscore _              = True
       in  any notUnderscore $ map (unScope . namedArg) hargs
 
     -- Drop the constructor arguments that correspond to parameters.
-    dropArgs [] args                                   = args
-    dropArgs ps []                                     = args
-    dropArgs ps args@(arg : _) | not (isHidden arg) = args
-    dropArgs (p:ps) args@(arg : args')
-      | elem name [Nothing, Just p] = dropArgs ps args'
-      | otherwise                   = dropArgs ps args
+    dropArgs [] args                = args
+    dropArgs ps []                  = args
+    dropArgs ps args@(arg : args')
+      | Just p   <- name,
+        Just ps' <- namedPar p ps   = dropArgs ps' args'
+      | Nothing  <- name,
+        Just ps' <- unnamedPar h ps = dropArgs ps' args'
+      | otherwise                   = args
       where
         name = fmap rangedThing . nameOf $ unArg arg
+        h    = getHiding arg
 
+        namedPar   x = dropPar ((x ==) . unDom)
+        unnamedPar h = dropPar ((h ==) . getHiding)
 
+        dropPar this (p : ps) | this p    = Just ps
+                              | otherwise = dropPar this ps
+        dropPar _ [] = Nothing
+
+
 {- UNUSED CODE, BUT DON'T REMOVE (2012-04-18)
 
     -- Split the arguments to a constructor into those corresponding
@@ -1414,12 +1671,12 @@
           -- Andreas, 2011-05-10 report error about types rather  telescopes
           -- compareTel CmpLeq eTel fTel >> return () -- This will fail!
 
-        reportSDoc "tc.term.con" 10 $ addCtxTel eTel $ vcat
+        reportSDoc "tc.term.con" 10 $ addContext eTel $ vcat
           [ text "checking" <+>
             prettyTCM fType <+> text "?<=" <+> prettyTCM eType
           ]
         blockTerm t $ f vs <$ workOnTypes (do
-          addCtxTel eTel $ leqType fType eType
+          addContext eTel $ leqType fType eType
           compareTel t t1 CmpLeq eTel fTel)
 
     (A.Def c) | Just c == (nameOfSharp <$> kit) -> do
@@ -1442,9 +1699,9 @@
       -- postpone checking of patterns when we don't know their types (Issue480).
       forcedType <- do
         lvl <- levelType
-        l   <- newValueMeta RunMetaOccursCheck lvl
+        (_, l) <- newValueMeta RunMetaOccursCheck lvl
         lv  <- levelView l
-        a   <- newValueMeta RunMetaOccursCheck (sort $ Type lv)
+        (_, a) <- newValueMeta RunMetaOccursCheck (sort $ Type lv)
         return $ El (Type lv) $ Def inf [Apply $ setHiding Hidden $ defaultArg l, Apply $ defaultArg a]
 
       wrapper <- inFreshModuleIfFreeParams $ do
@@ -1454,14 +1711,14 @@
 
         -- Define and type check the fresh function.
         rel <- asks envRelevance
+        abs <- aModeToDef <$> asks envAbstractMode
         let info   = A.mkDefInfo (A.nameConcrete $ A.qnameName c') noFixity'
-                                 PublicAccess ConcreteDef noRange
-            core   = A.LHSProj { A.lhsDestructor = flat
-                               , A.lhsPatsLeft   = []
+                                 PublicAccess abs noRange
+            core   = A.LHSProj { A.lhsDestructor = AmbQ [flat]
                                , A.lhsFocus      = defaultNamedArg $ A.LHSHead c' []
                                , A.lhsPatsRight  = [] }
-            clause = A.Clause (A.LHS (A.LHSRange noRange) core [])
-                              (A.RHS arg)
+            clause = A.Clause (A.LHS (A.LHSRange noRange) core []) []
+                              (A.RHS arg Nothing)
                               [] False
 
         i <- currentOrFreshMutualBlock
@@ -1520,11 +1777,82 @@
     Right e  -> return e
     Left err -> throwError err
 
+-- | Check arguments whose value we already know.
+--
+--   This function can be used to check user-supplied parameters
+--   we have already computed by inference.
+--
+--   Precondition: The type @t@ of the head has enough domains.
+
+checkKnownArguments
+  :: [NamedArg A.Expr]  -- ^ User-supplied arguments (hidden ones may be missing).
+  -> Args               -- ^ Inferred arguments (including hidden ones).
+  -> Type               -- ^ Type of the head (must be Pi-type with enough domains).
+  -> TCM (Args, Type)   -- ^ Remaining inferred arguments, remaining type.
+checkKnownArguments []           vs t = return (vs, t)
+checkKnownArguments (arg : args) vs t = do
+  (vs', t') <- traceCall (SetRange $ getRange arg) $ checkKnownArgument arg vs t
+  checkKnownArguments args vs' t'
+
+-- | Check an argument whose value we already know.
+
+checkKnownArgument
+  :: NamedArg A.Expr    -- ^ User-supplied argument.
+  -> Args               -- ^ Inferred arguments (including hidden ones).
+  -> Type               -- ^ Type of the head (must be Pi-type with enough domains).
+  -> TCM (Args, Type)   -- ^ Remaining inferred arguments, remaining type.
+checkKnownArgument arg [] _ = genericDocError =<< do
+  text "Invalid projection parameter " <+> prettyA arg
+checkKnownArgument arg@(Arg info e) (Arg _infov v : vs) t = do
+  (Dom info' a, b) <- mustBePi t
+  -- Skip the arguments from vs that do not correspond to e
+  if not (getHiding info == getHiding info'
+          && (notHidden info || maybe True ((absName b ==) . rangedThing) (nameOf e)))
+    -- Continue with the next one
+    then checkKnownArgument arg vs (b `absApp` v)
+    -- Found the right argument
+    else do
+      u <- checkNamedArg arg a
+      equalTerm a u v
+      return (vs, b `absApp` v)
+
+-- | Check a single argument.
+
+checkNamedArg :: NamedArg A.Expr -> Type -> TCM Term
+checkNamedArg arg@(Arg info e0) t0 = do
+  let e = namedThing e0
+  let x = maybe "" rangedThing $ nameOf e0
+  traceCall (CheckExprCall e t0) $ do
+    reportSDoc "tc.term.args.named" 15 $ do
+        text "Checking named arg" <+> sep
+          [ fsep [ prettyTCM arg, text ":", prettyTCM t0 ]
+          ]
+    reportSLn "tc.term.args.named" 75 $ "  arg = " ++ show (deepUnscope arg)
+    let checkU = checkMeta (newMetaArg info x) t0
+    let checkQ = checkQuestionMark (newInteractionMetaArg info x) t0
+    if not $ isHole e then checkExpr e t0 else localScope $ do
+      -- Note: we need localScope here,
+      -- as scopedExpr manipulates the scope in the state.
+      -- However, we may not pull localScope over checkExpr!
+      -- This is why we first test for isHole, and only do
+      -- scope manipulations if we actually handle the checking
+      -- of e here (and not pass it to checkExpr).
+      scopedExpr e >>= \case
+        A.Underscore i ->  checkU i
+        A.QuestionMark i ii -> checkQ i ii
+        _ -> __IMPOSSIBLE__
+  where
+  isHole A.Underscore{} = True
+  isHole A.QuestionMark{} = True
+  isHole (A.ScopedExpr _ e) = isHole e
+  isHole _ = False
+
 -- | Check a list of arguments: @checkArgs args t0 t1@ checks that
 --   @t0 = Delta -> t0'@ and @args : Delta@. Inserts hidden arguments to
 --   make this happen.  Returns the evaluated arguments @vs@, the remaining
 --   type @t0'@ (which should be a subtype of @t1@) and any constraints @cs@
 --   that have to be solved for everything to be well-formed.
+
 checkArguments :: ExpandHidden -> Range -> [NamedArg A.Expr] -> Type -> Type ->
                   ExceptT (Args, [NamedArg A.Expr], Type) TCM (Args, Type)
 
@@ -1598,7 +1926,7 @@
           Pi (Dom info' a) b
             | getHiding info == getHiding info'
               && (notHidden info || maybe True ((absName b ==) . rangedThing) (nameOf e)) -> do
-                u <- lift $ applyRelevanceToContext (getRelevance info') $
+                u <- lift $ applyRelevanceToContext (getRelevance info') $ do
                  -- Andreas, 2014-05-30 experiment to check non-dependent arguments
                  -- after the spine has been processed.  Allows to propagate type info
                  -- from ascribed type into extended-lambdas.  Would solve issue 1159.
@@ -1612,7 +1940,8 @@
                  -- Thus, the following naive use violates some invariant.
                  -- if not $ isBinderUsed b
                  -- then postponeTypeCheckingProblem (CheckExpr (namedThing e) a) (return True) else
-                  checkExpr (namedThing e) a
+                  let e' = e { nameOf = maybe (Just $ unranged $ absName b) Just (nameOf e) }
+                  checkNamedArg (Arg info' e') a
                 -- save relevance info' from domain in argument
                 addCheckedArgs us (Arg info' u) $
                   checkArguments exh (fuseRange r e) args (absApp b u) t1
@@ -1660,11 +1989,14 @@
 inferExpr' :: ExpandHidden -> A.Expr -> TCM (Term, Type)
 inferExpr' exh e = case e of
   _ | Application hd args <- appView e, defOrVar hd -> traceCall (InferExpr e) $ do
-    (f, t0) <- inferHead hd
-    res <- runExceptT $ checkArguments exh (getRange hd) args t0 (sort Prop)
-    case res of
-      Right (vs, t1) -> return (f vs, t1)
-      Left t1 -> fallback -- blocked on type t1
+    case hd of
+      A.Proj o (AmbQ ds@(_:_:_)) -> inferProjApp e o ds args
+      _ -> do
+        (f, t0) <- inferHead hd
+        res <- runExceptT $ checkArguments exh (getRange hd) args t0 (sort Prop)
+        case res of
+          Right (vs, t1) -> return (f vs, t1)
+          Left t1 -> fallback -- blocked on type t1
   _ -> fallback
   where
     fallback = do
@@ -1712,13 +2044,8 @@
 -- | Check whether a de Bruijn index is bound by a module telescope.
 isModuleFreeVar :: Int -> TCM Bool
 isModuleFreeVar i = do
-  nfv <- getCurrentModuleFreeVars
-  n   <- getContextSize
-  -- The first de Bruijn index that points to a module
-  -- free variable.
-  let firstModuleVar = n - nfv
-  when (firstModuleVar < 0) __IMPOSSIBLE__
-  return $ i >= firstModuleVar
+  params <- moduleParamsToApply =<< currentModule
+  return $ any ((== Var i []) . unArg) params
 
 -- | Infer the type of an expression, and if it is of the form
 --   @{tel} -> D vs@ for some datatype @D@ then insert the hidden
@@ -1734,7 +2061,15 @@
     -- Andreas 2014-11-06, issue 1342.
     -- Check that we do not `with` on a module parameter!
     case ignoreSharing v0 of
-      Var i [] -> whenM (isModuleFreeVar i) $ typeError $ WithOnFreeVariable e
+      Var i [] -> whenM (isModuleFreeVar i) $ do
+        reportSDoc "tc.with.infer" 80 $ vcat
+          [ text $ "with expression is variable " ++ show i
+          , text "current modules = " <+> do text . show =<< currentModule
+          , text "current module free vars = " <+> do text . show =<< getCurrentModuleFreeVars
+          , text "context size = " <+> do text . show =<< getContextSize
+          , text "current context = " <+> do prettyTCM =<< getContextTelescope
+          ]
+        typeError $ WithOnFreeVariable e v0
       _        -> return ()
     -- Possibly insert hidden arguments.
     TelV tel t0 <- telViewUpTo' (-1) ((NotHidden /=) . getHiding) t
@@ -1777,9 +2112,12 @@
         , text "t     =" <+> prettyTCM t
         ]
       ]
-    checkLeftHandSide (CheckPattern p EmptyTel t) Nothing [p0] t0 $ \ (LHSResult delta ps _t _perm) -> do
-      -- A single pattern in internal syntax is returned.
-      let p = case ps of [p] -> namedArg p; _ -> __IMPOSSIBLE__
+    fvs <- getContextSize
+    checkLeftHandSide (CheckPattern p EmptyTel t) Nothing [p0] t0 Nothing $ \ (LHSResult _ delta0 ps _t _ asb) -> bindAsPatterns asb $ do
+          -- After dropping the free variable patterns there should be a single pattern left.
+      let p = case drop fvs ps of [p] -> namedArg p; _ -> __IMPOSSIBLE__
+          -- Also strip the context variables from the telescope
+          delta = telFromList $ drop fvs $ telToList delta0
       reportSDoc "tc.term.let.pattern" 20 $ nest 2 $ vcat
         [ text "p (I) =" <+> text (show p)
         , text "delta =" <+> text (show delta)
@@ -1789,7 +2127,25 @@
       -- We remove the bindings for the pattern variables from the context.
       cxt0 <- getContext
       let (binds, cxt) = splitAt (size delta) cxt0
-      escapeContext (length binds) $ do
+          toDrop       = length binds
+
+          -- We create a substitution for the let-bound variables
+          -- (unfortunately, we cannot refer to x in internal syntax
+          -- so we have to copy v).
+          sigma = zipWith ($) fs (repeat v)
+          -- We apply the types of the let bound-variables to this substitution.
+          -- The 0th variable in a context is the last one, so we reverse.
+          -- Further, we need to lower all other de Bruijn indices by
+          -- the size of delta, so we append the identity substitution.
+          sub    = parallelS (reverse sigma)
+
+          -- Outer let-bindings will have been rebound by checkLeftHandSide, so
+          -- we need to strenghten those as well. Don't use a strengthening
+          -- subsititution since @-patterns in the pattern binding will reference
+          -- the pattern variables.
+          subLetBind (OpenThing cxt va) = OpenThing (drop toDrop cxt) (applySubst sub va)
+      escapeContext toDrop $ updateModuleParameters sub
+                           $ locally eLetBindings (fmap subLetBind) $ do
         reportSDoc "tc.term.let.pattern" 20 $ nest 2 $ vcat
           [ text "delta =" <+> prettyTCM delta
           , text "binds =" <+> text (show binds) -- prettyTCM binds
@@ -1799,15 +2155,6 @@
        x <- freshNoName (getRange e)
        addLetBinding Relevant x v t $ do
  -}
-        -- We create a substitution for the let-bound variables
-        -- (unfortunately, we cannot refer to x in internal syntax
-        -- so we have to copy v).
-        let sigma = zipWith ($) fs (repeat v)
-        -- We apply the types of the let bound-variables to this substitution.
-        -- The 0th variable in a context is the last one, so we reverse.
-        -- Further, we need to lower all other de Bruijn indices by
-        -- the size of delta, so we append the identity substitution.
-        let sub    = parallelS (reverse sigma)
         let fdelta = flattenTel delta
         reportSDoc "tc.term.let.pattern" 20 $ nest 2 $ vcat
           [ text "fdelta =" <+> text (show fdelta)
@@ -1822,7 +2169,7 @@
         -- We add all the bindings to the context.
         foldr (uncurry4 addLetBinding) ret $ zip4 infos xs sigma ts
 
-checkLetBinding (A.LetApply i x modapp rd rm _adir) ret = do
+checkLetBinding (A.LetApply i x modapp copyInfo _adir) ret = do
   -- Any variables in the context that doesn't belong to the current
   -- module should go with the new module.
   -- Example: @f x y = let open M t in u@.
@@ -1837,7 +2184,7 @@
     , text "module  =" <+> (prettyTCM =<< currentModule)
     , text "fv      =" <+> (text $ show fv)
     ]
-  checkSectionApplication i x modapp rd rm
+  checkSectionApplication i x modapp copyInfo
   withAnonymousModule x new ret
 -- LetOpen and LetDeclaredVariable are only used for highlighting.
 checkLetBinding A.LetOpen{} ret = ret
diff --git a/src/full/Agda/TypeChecking/Serialise.hs b/src/full/Agda/TypeChecking/Serialise.hs
--- a/src/full/Agda/TypeChecking/Serialise.hs
+++ b/src/full/Agda/TypeChecking/Serialise.hs
@@ -10,6 +10,9 @@
 -- -!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-
 -- NOTE: Every time the interface format is changed the interface
 -- version number should be bumped _in the same patch_.
+--
+-- See 'currentInterfaceVersion' below.
+--
 -- -!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-!-
 
 module Agda.TypeChecking.Serialise
@@ -58,7 +61,7 @@
 -- 32-bit machines). Word64 does not have these problems.
 
 currentInterfaceVersion :: Word64
-currentInterfaceVersion = 20160414 * 10 + 0
+currentInterfaceVersion = 20161119 * 10 + 0
 
 -- | Encodes something. To ensure relocatability file paths in
 -- positions are replaced with module names.
diff --git a/src/full/Agda/TypeChecking/Serialise/Base.hs b/src/full/Agda/TypeChecking/Serialise/Base.hs
--- a/src/full/Agda/TypeChecking/Serialise/Base.hs
+++ b/src/full/Agda/TypeChecking/Serialise/Base.hs
@@ -1,5 +1,4 @@
 {-# LANGUAGE CPP                       #-}
-{-# LANGUAGE ExistentialQuantification #-}
 {-# LANGUAGE ScopedTypeVariables       #-}
 
 module Agda.TypeChecking.Serialise.Base where
diff --git a/src/full/Agda/TypeChecking/Serialise/Instances/Abstract.hs b/src/full/Agda/TypeChecking/Serialise/Instances/Abstract.hs
--- a/src/full/Agda/TypeChecking/Serialise/Instances/Abstract.hs
+++ b/src/full/Agda/TypeChecking/Serialise/Instances/Abstract.hs
@@ -46,12 +46,14 @@
     valu _   = malformed
 
 instance EmbPrj Access where
-  icod_ PrivateAccess = icode0 0
+  icod_ (PrivateAccess UserWritten) = icode0 0
+  icod_ PrivateAccess{} = icode0 1
   icod_ PublicAccess  = icode0'
   icod_ OnlyQualified = icode0 2
 
   value = vcase valu where
-    valu [0] = valu0 PrivateAccess
+    valu [0] = valu0 $ PrivateAccess UserWritten
+    valu [1] = valu0 $ PrivateAccess Inserted
     valu []  = valu0 PublicAccess
     valu [2] = valu0 OnlyQualified
     valu _   = malformed
@@ -125,9 +127,10 @@
   icod_ (A.DefP _ a b)        = icode2 2 a b
   icod_ (A.WildP _)           = icode0 3
   icod_ (A.AsP _ a b)         = icode2 4 a b
-  icod_ (A.DotP _ a)          = icode1 5 a
+  icod_ (A.DotP _ a b)        = icode2 5 a b
   icod_ (A.AbsurdP _)         = icode0 6
   icod_ (A.LitP a)            = icode1 7 a
+  icod_ (A.ProjP _ a b)       = icode2 8 a b
   icod_ (A.PatternSynP _ a b) = icode2 9 a b
   icod_ (A.RecP _ a)          = icode1 10 a
 
@@ -137,9 +140,10 @@
     valu [2, a, b]    = valu2 (A.DefP i) a b
     valu [3]          = valu0 (A.WildP i)
     valu [4, a, b]    = valu2 (A.AsP i) a b
-    valu [5, a]       = valu1 (A.DotP i) a
+    valu [5, a, b]    = valu2 (A.DotP i) a b
     valu [6]          = valu0 (A.AbsurdP i)
     valu [7, a]       = valu1 (A.LitP) a
+    valu [8, a, b]    = valu2 (A.ProjP i) a b
     valu [9, a, b]    = valu2 (A.PatternSynP i) a b
     valu [10, a]      = valu1 (A.RecP i) a
     valu _            = malformed
diff --git a/src/full/Agda/TypeChecking/Serialise/Instances/Common.hs b/src/full/Agda/TypeChecking/Serialise/Instances/Common.hs
--- a/src/full/Agda/TypeChecking/Serialise/Instances/Common.hs
+++ b/src/full/Agda/TypeChecking/Serialise/Instances/Common.hs
@@ -1,16 +1,10 @@
 {-# LANGUAGE CPP                       #-}
 {-# LANGUAGE DeriveDataTypeable        #-}
-{-# LANGUAGE ExistentialQuantification #-}
-{-# LANGUAGE FlexibleInstances         #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE ScopedTypeVariables       #-}
 
-#if __GLASGOW_HASKELL__ >= 710
-{-# LANGUAGE FlexibleContexts #-}
-#endif
-
 #if __GLASGOW_HASKELL__ <= 708
-{-# LANGUAGE OverlappingInstances #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE OverlappingInstances       #-}
 #endif
 
 {-# OPTIONS_GHC -fno-warn-orphans #-}
@@ -35,7 +29,9 @@
 import qualified Data.Set as Set
 import Data.Sequence (Seq)
 import qualified Data.Sequence as Seq
+#if __GLASGOW_HASKELL__ <= 708
 import Data.Typeable (Typeable)
+#endif
 import Data.Void
 
 import Agda.Syntax.Common
@@ -236,7 +232,9 @@
 -- | Ranges that should be serialised properly.
 
 newtype SerialisedRange = SerialisedRange { underlyingRange :: Range }
+#if __GLASGOW_HASKELL__ <= 708
   deriving (Typeable)
+#endif
 
 instance EmbPrj SerialisedRange where
   icod_ (SerialisedRange r) =
@@ -301,11 +299,11 @@
     valu _         = malformed
 
 instance EmbPrj Agda.Syntax.Fixity.Fixity' where
-  icod_ (Fixity' a b) = icode2' a b
+  icod_ (Fixity' a b _) = icode2' a b  -- discard theNameRange
 
   value = vcase valu where
-    valu [a,b] = valu2 Fixity' a b
-    valu _     = malformed
+    valu [a, b] = valu2 (\ f n -> Fixity' f n noRange) a b
+    valu _      = malformed
 
 instance EmbPrj GenPart where
   icod_ (BindHole a)   = icode1 0 a
@@ -370,11 +368,11 @@
     valu _      = malformed
 
 instance EmbPrj ArgInfo where
-  icod_ (ArgInfo h r) = icode2' h r
+  icod_ (ArgInfo h r o v) = icode4' h r o v
 
   value = vcase valu where
-    valu [h, r] = valu2 ArgInfo h r
-    valu _      = malformed
+    valu [h, r, o, v] = valu4 ArgInfo h r o v
+    valu _            = malformed
 
 instance EmbPrj NameId where
   icod_ (NameId a b) = icode2' a b
@@ -443,14 +441,34 @@
   value 5 = return UnusedArg
   value _ = malformed
 
-instance EmbPrj ConPOrigin where
-  icod_ ConPImplicit = return 0
-  icod_ ConPCon      = return 1
-  icod_ ConPRec      = return 2
+instance EmbPrj Origin where
+  icod_ UserWritten = return 0
+  icod_ Inserted    = return 1
+  icod_ Reflected   = return 2
 
-  value 0 = return ConPImplicit
-  value 1 = return ConPCon
-  value 2 = return ConPRec
+  value 0 = return UserWritten
+  value 1 = return Inserted
+  value 2 = return Reflected
+  value _ = malformed
+
+instance EmbPrj ConOrigin where
+  icod_ ConOSystem = return 0
+  icod_ ConOCon    = return 1
+  icod_ ConORec    = return 2
+
+  value 0 = return ConOSystem
+  value 1 = return ConOCon
+  value 2 = return ConORec
+  value _ = malformed
+
+instance EmbPrj ProjOrigin where
+  icod_ ProjPrefix  = return 0
+  icod_ ProjPostfix = return 1
+  icod_ ProjSystem  = return 2
+
+  value 0 = return ProjPrefix
+  value 1 = return ProjPostfix
+  value 2 = return ProjSystem
   value _ = malformed
 
 instance EmbPrj Agda.Syntax.Literal.Literal where
diff --git a/src/full/Agda/TypeChecking/Serialise/Instances/Compilers.hs b/src/full/Agda/TypeChecking/Serialise/Instances/Compilers.hs
--- a/src/full/Agda/TypeChecking/Serialise/Instances/Compilers.hs
+++ b/src/full/Agda/TypeChecking/Serialise/Instances/Compilers.hs
@@ -56,6 +56,7 @@
   icod_ (JS.BinOp e op f) = icode3 13 e op f
   icod_ (JS.PreOp op e)   = icode2 14 op e
   icod_ (JS.Const i)      = icode1 15 i
+  icod_ (JS.PlainJS a)    = icode1 16 a
 
   value = vcase valu where
     valu [0]           = valu0 JS.Self
@@ -74,6 +75,7 @@
     valu [13, a, b, c] = valu3 JS.BinOp a b c
     valu [14, a, b]    = valu2 JS.PreOp a b
     valu [15, a]       = valu1 JS.Const a
+    valu [16, a]       = valu1 JS.PlainJS a
     valu _             = malformed
 
 instance EmbPrj JS.LocalId where
diff --git a/src/full/Agda/TypeChecking/Serialise/Instances/Highlighting.hs b/src/full/Agda/TypeChecking/Serialise/Instances/Highlighting.hs
--- a/src/full/Agda/TypeChecking/Serialise/Instances/Highlighting.hs
+++ b/src/full/Agda/TypeChecking/Serialise/Instances/Highlighting.hs
@@ -69,6 +69,7 @@
   icod_ HP.IncompletePattern  = icode0 4
   icod_ HP.TypeChecks         = icode0 5
   icod_ HP.UnsolvedConstraint = icode0 6
+  icod_ HP.PositivityProblem  = icode0 7
 
   value = vcase valu where
     valu [0] = valu0 HP.Error
@@ -78,6 +79,7 @@
     valu [4] = valu0 HP.IncompletePattern
     valu [5] = valu0 HP.TypeChecks
     valu [6] = valu0 HP.UnsolvedConstraint
+    valu [7] = valu0 HP.PositivityProblem
     valu _   = malformed
 
 instance EmbPrj HP.Aspects where
diff --git a/src/full/Agda/TypeChecking/Serialise/Instances/Internal.hs b/src/full/Agda/TypeChecking/Serialise/Instances/Internal.hs
--- a/src/full/Agda/TypeChecking/Serialise/Instances/Internal.hs
+++ b/src/full/Agda/TypeChecking/Serialise/Instances/Internal.hs
@@ -61,13 +61,13 @@
     valu _      = malformed
 
 instance EmbPrj a => EmbPrj (Elim' a) where
-  icod_ (Apply a) = icode1' a
-  icod_ (Proj  a) = icode1 0 a
+  icod_ (Apply a)  = icode1' a
+  icod_ (Proj a b) = icode2 0 a b
 
   value = vcase valu where
-    valu [a]    = valu1 Apply a
-    valu [0, a] = valu1 Proj a
-    valu _      = malformed
+    valu [a]       = valu1 Apply a
+    valu [0, a, b] = valu2 Proj a b
+    valu _         = malformed
 
 instance EmbPrj I.ConHead where
   icod_ (ConHead a b c) = icode3' a b c
@@ -98,7 +98,7 @@
   icod_ (Lam      a b) = icode2 1 a b
   icod_ (Lit      a  ) = icode1 2 a
   icod_ (Def      a b) = icode2 3 a b
-  icod_ (Con      a b) = icode2 4 a b
+  icod_ (Con    a b c) = icode3 4 a b c
   icod_ (Pi       a b) = icode2 5 a b
   icod_ (Sort     a  ) = icode1 7 a
   icod_ (MetaV    a b) = __IMPOSSIBLE__
@@ -113,7 +113,7 @@
     valu [1, a, b] = valu2 Lam   a b
     valu [2, a]    = valu1 Lit   a
     valu [3, a, b] = valu2 Def   a b
-    valu [4, a, b] = valu2 Con   a b
+    valu [4, a, b, c] = valu3 Con a b c
     valu [5, a, b] = valu2 Pi    a b
     valu [7, a]    = valu1 Sort  a
     valu [8, a]    = valu1 DontCare a
@@ -177,6 +177,15 @@
     valu [a, b] = valu2 OpenThing a b
     valu _      = malformed
 
+instance EmbPrj a => EmbPrj (Local a) where
+  icod_ (Local a b) = icode2' a b
+  icod_ (Global a)  = icode1' a
+
+  value = vcase valu where
+    valu [a, b] = valu2 Local a b
+    valu [a]    = valu1 Global a
+    valu _      = malformed
+
 instance EmbPrj CtxId where
   icod_ (CtxId a) = icode a
   value n         = CtxId `fmap` value n
@@ -184,14 +193,14 @@
 instance EmbPrj DisplayTerm where
   icod_ (DTerm    a  )   = icode1' a
   icod_ (DDot     a  )   = icode1 1 a
-  icod_ (DCon     a b)   = icode2 2 a b
+  icod_ (DCon     a b c) = icode3 2 a b c
   icod_ (DDef     a b)   = icode2 3 a b
   icod_ (DWithApp a b c) = icode3 4 a b c
 
   value = vcase valu where
     valu [a]          = valu1 DTerm a
     valu [1, a]       = valu1 DDot a
-    valu [2, a, b]    = valu2 DCon a b
+    valu [2, a, b, c] = valu3 DCon a b c
     valu [3, a, b]    = valu2 DDef a b
     valu [4, a, b, c] = valu3 DWithApp a b c
     valu _            = malformed
@@ -201,14 +210,14 @@
   value n         = MutId `fmap` value n
 
 instance EmbPrj Definition where
-  icod_ (Defn a b c d e f g h i j k) = icode11' a b (P.killRange c) d e f g h i j k
+  icod_ (Defn a b c d e f g h i j k l) = icode12' a b (P.killRange c) d e f g h i j k l
 
   value = vcase valu where
-    valu [a, b, c, d, e, f, g, h, i, j, k] = valu11 Defn a b c d e f g h i j k
-    valu _                                 = malformed
+    valu [a, b, c, d, e, f, g, h, i, j, k, l] = valu12 Defn a b c d e f g h i j k l
+    valu _                                    = malformed
 
 instance EmbPrj NLPat where
-  icod_ (PVar a b)      = icode2 0 a b
+  icod_ (PVar a b c)    = icode3 0 a b c
   icod_ (PWild)         = icode0 1
   icod_ (PDef a b)      = icode2 2 a b
   icod_ (PLam a b)      = icode2 3 a b
@@ -217,29 +226,43 @@
   icod_ (PTerm a)       = icode1 6 a
 
   value = vcase valu where
-    valu [0, a, b] = valu2 PVar a b
-    valu [1]       = valu0 PWild
-    valu [2, a, b] = valu2 PDef a b
-    valu [3, a, b] = valu2 PLam a b
-    valu [4, a, b] = valu2 PPi a b
-    valu [5, a, b] = valu2 PBoundVar a b
-    valu [6, a]    = valu1 PTerm a
-    valu _         = malformed
+    valu [0, a, b, c] = valu3 PVar a b c
+    valu [1]          = valu0 PWild
+    valu [2, a, b]    = valu2 PDef a b
+    valu [3, a, b]    = valu2 PLam a b
+    valu [4, a, b]    = valu2 PPi a b
+    valu [5, a, b]    = valu2 PBoundVar a b
+    valu [6, a]       = valu1 PTerm a
+    valu _            = malformed
 
+instance EmbPrj NLPType where
+  icod_ (NLPType a b) = icode2' a b
+
+  value = vcase valu where
+    valu [a, b] = valu2 NLPType a b
+    valu _      = malformed
+
 instance EmbPrj RewriteRule where
-  icod_ (RewriteRule a b c d e) = icode5' a b c d e
+  icod_ (RewriteRule a b c d e f) = icode6' a b c d e f
 
   value = vcase valu where
-    valu [a, b, c, d, e] = valu5 RewriteRule a b c d e
-    valu _               = malformed
+    valu [a, b, c, d, e, f] = valu6 RewriteRule a b c d e f
+    valu _                  = malformed
 
 instance EmbPrj Projection where
   icod_ (Projection a b c d e) = icode5' a b c d e
 
   value = vcase valu where
     valu [a, b, c, d, e] = valu5 Projection a b c d e
-    valu _               = malformed
+    valu _ = malformed
 
+instance EmbPrj ProjLams where
+  icod_ (ProjLams a) = icode1' a
+
+  value = vcase valu where
+    valu [a] = valu1 ProjLams a
+    valu _   = malformed
+
 instance EmbPrj ExtLamInfo where
   icod_ (ExtLamInfo a b) = icode2' a b
 
@@ -285,22 +308,34 @@
     valu _     = malformed
 
 instance EmbPrj Defn where
-  icod_ Axiom                                       = icode0 0
-  icod_ (Function    a b _ c d e f g h i j k l m n) = icode14 1 a b c d e f g h i j k l m n
-  icod_ (Datatype    a b c d e f g h i j)           = icode10 2 a b c d e f g h i j
-  icod_ (Record      a b c d e f g h i j k l)       = icode12 3 a b c d e f g h i j k l
-  icod_ (Constructor a b c d e)                     = icode5 4 a b c d e
-  icod_ (Primitive   a b c d)                       = icode4 5 a b c d
+  icod_ Axiom                                   = icode0 0
+  icod_ (Function    a b _ c d e f g h i j k m) = icode12 1 a b c d e f g h i j k m
+  icod_ (Datatype    a b c d e f g h i j)       = icode10 2 a b c d e f g h i j
+  icod_ (Record      a b c d e f g h i j k)     = icode11 3 a b c d e f g h i j k
+  icod_ (Constructor a b c d e f)               = icode6 4 a b c d e f
+  icod_ (Primitive   a b c d)                   = icode4 5 a b c d
+  icod_ AbstractDefn                            = __IMPOSSIBLE__
 
   value = vcase valu where
-    valu [0]                                           = valu0 Axiom
-    valu [1, a, b, c, d, e, f, g, h, i, j, k, l, m, n] = valu14 (\ a b -> Function a b Nothing) a b c d e f g h i j k l m n
-    valu [2, a, b, c, d, e, f, g, h, i, j]             = valu10 Datatype a b c d e f g h i j
-    valu [3, a, b, c, d, e, f, g, h, i, j, k, l]       = valu12 Record  a b c d e f g h i j k l
-    valu [4, a, b, c, d, e]                            = valu5 Constructor a b c d e
-    valu [5, a, b, c, d]                               = valu4 Primitive   a b c d
-    valu _                                             = malformed
+    valu [0]                                     = valu0 Axiom
+    valu [1, a, b, c, d, e, f, g, h, i, j, k, m] = valu12 (\ a b -> Function a b Nothing) a b c d e f g h i j k m
+    valu [2, a, b, c, d, e, f, g, h, i, j]       = valu10 Datatype a b c d e f g h i j
+    valu [3, a, b, c, d, e, f, g, h, i, j, k]    = valu11 Record  a b c d e f g h i j k
+    valu [4, a, b, c, d, e, f]                   = valu6 Constructor a b c d e f
+    valu [5, a, b, c, d]                         = valu4 Primitive   a b c d
+    valu _                                       = malformed
 
+instance EmbPrj FunctionFlag where
+  icod_ FunStatic       = icode0 0
+  icod_ FunInline       = icode0 1
+  icod_ FunMacro        = icode0 2
+
+  value = vcase valu where
+    valu [0] = valu0 FunStatic
+    valu [1] = valu0 FunInline
+    valu [2] = valu0 FunMacro
+    valu _   = malformed
+
 instance EmbPrj a => EmbPrj (WithArity a) where
   icod_ (WithArity a b) = icode2' a b
 
@@ -353,37 +388,33 @@
     valu [a, b, c, d, e, f] = valu6 Clause a b c d e f
     valu _                  = malformed
 
-instance EmbPrj a => EmbPrj (I.ClauseBodyF a) where
-  icod_ (Body   a) = icode1 0 a
-  icod_ (Bind   a) = icode1' a
-  icod_ NoBody     = icode0'
+instance EmbPrj I.ConPatternInfo where
+  icod_ (ConPatternInfo a b) = icode2' a b
 
   value = vcase valu where
-    valu [0, a] = valu1 Body   a
-    valu [a]    = valu1 Bind   a
-    valu []     = valu0 NoBody
+    valu [a, b] = valu2 ConPatternInfo a b
     valu _      = malformed
 
-instance EmbPrj I.ConPatternInfo where
-  icod_ (ConPatternInfo a b) = icode2' a b
+instance EmbPrj I.DBPatVar where
+  icod_ (DBPatVar a b) = icode2' a b
 
   value = vcase valu where
-    valu [a, b] = valu2 ConPatternInfo a b
+    valu [a, b] = valu2 DBPatVar a b
     valu _      = malformed
 
 instance EmbPrj a => EmbPrj (I.Pattern' a) where
   icod_ (VarP a    ) = icode1' a
-  icod_ (ConP a b c) = icode3' a b c
+  icod_ (ConP a b c) = icode3 1 a b c
   icod_ (LitP a    ) = icode1 2 a
   icod_ (DotP a    ) = icode1 3 a
-  icod_ (ProjP a   ) = icode1 4 a
+  icod_ (ProjP a b ) = icode2 4 a b
 
   value = vcase valu where
     valu [a]       = valu1 VarP a
-    valu [a, b, c] = valu3 ConP a b c
+    valu [1, a, b, c] = valu3 ConP a b c
     valu [2, a]    = valu1 LitP a
     valu [3, a]    = valu1 DotP a
-    valu [4, a]    = valu1 ProjP a
+    valu [4, a, b] = valu2 ProjP a b
     valu _         = malformed
 
 instance EmbPrj a => EmbPrj (Builtin a) where
diff --git a/src/full/Agda/TypeChecking/SizedTypes.hs b/src/full/Agda/TypeChecking/SizedTypes.hs
--- a/src/full/Agda/TypeChecking/SizedTypes.hs
+++ b/src/full/Agda/TypeChecking/SizedTypes.hs
@@ -1,6 +1,5 @@
 {-# LANGUAGE CPP                      #-}
 {-# LANGUAGE NondecreasingIndentation #-}
-{-# LANGUAGE PatternGuards            #-}
 
 module Agda.TypeChecking.SizedTypes where
 
@@ -180,7 +179,7 @@
       n <- getContextSize
       let tel | n > 0     = telFromList $ genericDrop n $ telToList tel0
               | otherwise = tel0
-      addCtxTel tel $ do
+      addContext tel $ do
         v <- sizeSuc 1 $ raise (size tel) v `apply` teleArgs tel
         -- compareSizes CmpLeq v u
         size <- sizeType
diff --git a/src/full/Agda/TypeChecking/SizedTypes/Solve.hs b/src/full/Agda/TypeChecking/SizedTypes/Solve.hs
--- a/src/full/Agda/TypeChecking/SizedTypes/Solve.hs
+++ b/src/full/Agda/TypeChecking/SizedTypes/Solve.hs
@@ -1,10 +1,6 @@
 {-# LANGUAGE CPP                   #-}
 {-# LANGUAGE NondecreasingIndentation #-}
-{-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE PatternGuards         #-}
 {-# LANGUAGE ScopedTypeVariables   #-}
-{-# LANGUAGE TupleSections         #-}
 
 -- | Solving size constraints under hypotheses.
 --
@@ -54,13 +50,20 @@
 
 module Agda.TypeChecking.SizedTypes.Solve where
 
-import Control.Monad (unless)
+import Prelude hiding (null)
+
+import Control.Monad hiding (forM, forM_)
+import Control.Monad.Trans.Maybe
+import Control.Monad.Reader (asks)
+
 import Data.Foldable (Foldable, foldMap, forM_)
 import Data.Function
-import Data.List
-import Data.Monoid (mappend)
+import qualified Data.List as List
+import Data.Monoid
 import qualified Data.Map as Map
+import Data.Set (Set)
 import qualified Data.Set as Set
+import qualified Data.Traversable as Trav
 import Data.Traversable (Traversable, forM)
 
 import Agda.Interaction.Options
@@ -71,15 +74,13 @@
 import Agda.TypeChecking.Monad as TCM hiding (Offset)
 import Agda.TypeChecking.Monad.Builtin
 import Agda.TypeChecking.Pretty
+import Agda.TypeChecking.Free
 import Agda.TypeChecking.Reduce
 import Agda.TypeChecking.MetaVars
--- import {-# SOURCE #-} Agda.TypeChecking.MetaVars
 import Agda.TypeChecking.Substitute
 import Agda.TypeChecking.Telescope
 import Agda.TypeChecking.Conversion
 import Agda.TypeChecking.Constraints as C
--- import {-# SOURCE #-} Agda.TypeChecking.Conversion
--- import {-# SOURCE #-} Agda.TypeChecking.Constraints
 
 import qualified Agda.TypeChecking.SizedTypes as S
 import Agda.TypeChecking.SizedTypes.Syntax as Size
@@ -91,21 +92,28 @@
 import Agda.Utils.Except ( MonadError(catchError) )
 import Agda.Utils.Function
 import Agda.Utils.Functor
+import Agda.Utils.Lens
 
 #if MIN_VERSION_base(4,8,0)
-import Agda.Utils.List hiding ( uncons )
+import qualified Agda.Utils.List as List hiding ( uncons )
 #else
-import Agda.Utils.List
+import qualified Agda.Utils.List as List
 #endif
 
 import Agda.Utils.Maybe
 import Agda.Utils.Monad
+import Agda.Utils.Null
 import Agda.Utils.Size
 import Agda.Utils.Tuple
+import qualified Agda.Utils.VarSet as VarSet
 
+import qualified Agda.Utils.Either as Either
+
 #include "undefined.h"
 import Agda.Utils.Impossible
 
+type CC = Closure TCM.Constraint
+
 -- | Flag to control the behavior of size solver.
 data DefaultToInfty
   = DefaultToInfty      -- ^ Instantiate all unconstrained size variables to ∞.
@@ -113,65 +121,277 @@
   deriving (Eq, Ord, Show)
 
 -- | Solve size constraints involving hypotheses.
+
 solveSizeConstraints :: DefaultToInfty -> TCM ()
 solveSizeConstraints flag =  do
-  -- Get the constraints.
-  cs0 <- S.getSizeConstraints
+
+  -- 1. Get the constraints normalised.
+
+  cs0 <- mapM (mapClosure normalise) =<< S.getSizeConstraints
+  unless (null cs0) $
+    reportSDoc "tc.size.solve" 40 $ vcat $
+      [ text $ "Solving constraints (" ++ show flag ++ ")"
+      ] ++ map prettyTCM cs0
   let -- Error for giving up
       cannotSolve = typeError . GenericDocError =<<
-        vcat (text "Cannot solve size constraints" : map prettyTCM
-                   cs0)
-  unless (null cs0) $ solveSizeConstraints_ cs0
+        vcat (text "Cannot solve size constraints" : map prettyTCM cs0)
 
+  -- 2. Cluster the constraints by common size metas.
+
+  -- Get all size metas.
+  sizeMetaSet <- Set.fromList . map (\ (x, _t, _tel) -> x) <$> S.getSizeMetas True
+
+  -- Pair each constraint with its list of size metas occurring in it.
+  cms <- forM cs0 $ \ cl -> enterClosure cl $ \ c -> do
+
+    -- @allMetas@ does not reduce or instantiate;
+    -- this is why we require the size constraints to be normalised.
+    return (cl, map metaId . Set.toList $
+      sizeMetaSet `Set.intersection` Set.fromList (allMetas c))
+
+  -- Now, some constraints may have no metas (clcs), the others have at least one (othercs).
+  let classify :: (a, [b]) -> Either a (a, (b,[b]))
+      classify (cl, [])     = Left  cl
+      classify (cl, (x:xs)) = Right (cl, (x,xs))
+  let (clcs, othercs) = List.mapEither classify cms
+
+  -- We cluster the constraints by their metas.
+  let ccs = cluster' othercs
+
+  -- 3. Solve each cluster
+
+  -- Solve the closed constraints, one by one.
+
+  forM_ clcs $ \ c -> () <$ solveSizeConstraints_ flag [c]
+
+  -- Solve the clusters.
+
+  constrainedMetas <- Set.unions <$> do
+    forM  (ccs) $ \ (cs :: [CC]) -> do
+      when (null cs) __IMPOSSIBLE__
+
+      -- Convert each constraint in the cluster to the largest context.
+      -- (Keep fingers crossed).
+
+      enterClosure (List.maximumBy (compare `on` (length . envContext . clEnv)) cs) $ \ _ -> do
+        -- Get all constraints that can be cast to the longest context.
+        cs' :: [TCM.Constraint] <- catMaybes <$> do
+          mapM (runMaybeT . castConstraintToCurrentContext) cs
+
+        reportSDoc "tc.size.solve" 20 $ vcat $
+          [ text "converted size constraints to context: " <+> do
+              tel <- getContextTelescope
+              inTopContext $ prettyTCM tel
+          ] ++ map (nest 2 . prettyTCM) cs'
+
+        -- Solve the converted constraints.
+        solveSizeConstraints_ flag =<<  mapM buildClosure cs'
+
+  -- 4. Possibly set remaining metas to infinity.
+
   -- Andreas, issue 1862: do not default to ∞ always, could be too early.
   when (flag == DefaultToInfty) $ do
 
-  -- Set the unconstrained size metas to ∞.
-  ms <- S.getSizeMetas False -- do not get interaction metas
-  unless (null ms) $ do
-    inf <- primSizeInf
-    forM_ ms $ \ (m, t, tel) -> unlessM (isFrozen m) $ do
-      reportSDoc "tc.size.solve" 20 $
-        text "solution " <+> prettyTCM (MetaV m []) <+>
-        text " := "      <+> prettyTCM inf
-      assignMeta 0 m t (downFrom $ size tel) inf
+    -- let constrainedMetas = Set.fromList $ concat $
+    --       for cs0 $ \ Closure{ clValue = ValueCmp _ _ u v } ->
+    --         allMetas u ++ allMetas v
 
-  -- Double check.
-  unless (null cs0 && null ms) $ do
-    flip catchError (const cannotSolve) $
-      noConstraints $
-        forM_ cs0 $ \ cl -> enterClosure cl solveConstraint
+    -- Set the unconstrained size metas to ∞.
+    ms <- S.getSizeMetas False -- do not get interaction metas
+    unless (null ms) $ do
+      inf <- primSizeInf
+      forM_ ms $ \ (m, t, tel) -> do
+        unless (m `Set.member` constrainedMetas) $ do
+        unlessM (isFrozen m) $ do
+        reportSDoc "tc.size.solve" 20 $
+          text "solution " <+> prettyTCM (MetaV m []) <+>
+          text " := "      <+> prettyTCM inf
+        assignMeta 0 m t (List.downFrom $ size tel) inf
 
-solveSizeConstraints_ :: [Closure TCM.Constraint] -> TCM ()
-solveSizeConstraints_ cs0 = do
+  -- -- Double check.
+  -- unless (null cs0 && null ms) $ do
+  --   flip catchError (const cannotSolve) $
+  --     noConstraints $
+  --       forM_ cs0 $ \ cl -> enterClosure cl solveConstraint
+
+  -- 5. Make sure we did not lose any constraints.
+  forM_ cs0 $ \ cl -> enterClosure cl solveConstraint
+
+
+-- | TODO: this does not actually work!
+--
+--   We would like to use a constraint @c@ created in context @Δ@ from module @N@
+--   in the current context @Γ@ and current module @M@.
+--
+--   @Δ@ is module tel @Δ₁@ of @N@ extended by some local bindings @Δ₂@.
+--   @Γ@ is the current context.
+--   The module parameter substitution from current @M@ to @N@ be
+--   @Γ ⊢ σ : Δ₁@.
+--
+--   If @M == N@, we do not need the parameter substitution.  We try raising.
+--
+--   We first strengthen @Δ ⊢ c@ to live in @Δ₁@ and obtain @c₁ = strengthen Δ₂ c@.
+--   We then transport @c₁@ to @Γ@ and obtain @c₂ = applySubst σ c₁@.
+--
+--   This works for different modules, but if @M == N@ we should not strengthen
+--   and then weaken, because strengthening is a partial operation.
+--   We should rather lift the substitution @σ@ by @Δ₂@ and then
+--   raise by @Γ₂ - Δ₂@.
+--   This "raising" might be a strengthening if @Γ₂@ is shorter than @Δ₂@.
+--
+--   (TODO: If the module substitution does not exist, because @N@ is not
+--   a parent of @M@, we cannot use the constraint, as it has been created
+--   in an unrelated context.)
+
+castConstraintToCurrentContext' :: Closure TCM.Constraint -> MaybeT TCM TCM.Constraint
+castConstraintToCurrentContext' cl = do
+  let modN  = envCurrentModule $ clEnv cl
+      delta = envContext $ clEnv cl
+  -- The module telescope of the constraint.
+  -- The constraint could come from the module telescope of the top level module.
+  -- In this case, it does not live in any module!
+  -- Thus, getSection can return Nothing.
+  delta1 <- liftTCM $ maybe empty (^. secTelescope) <$> getSection modN
+  -- The number of locals of the constraint.
+  let delta2 = size delta - size delta1
+  unless (delta2 >= 0) __IMPOSSIBLE__
+
+  -- The current module M and context Γ.
+  modM  <- currentModule
+  gamma <- liftTCM $ getContextSize
+  -- The current module telescope.
+  -- Could also be empty, if we are in the front matter or telescope of the top-level module.
+  gamma1 <-liftTCM $ maybe empty (^. secTelescope) <$> getSection modM
+  -- The current locals.
+  let gamma2 = gamma - size gamma1
+
+  -- Γ ⊢ σ : Δ₁
+  sigma <- liftTCM $ getModuleParameterSub modN
+
+  -- Debug printing.
+  reportSDoc "tc.constr.cast" 40 $ text "casting constraint" $$ do
+    tel <- getContextTelescope
+    inTopContext $ nest 2 $ vcat $
+      [ text "current module                = " <+> prettyTCM modM
+      , text "current module telescope      = " <+> prettyTCM gamma1
+      , text "current context               = " <+> prettyTCM tel
+      , text "constraint module             = " <+> prettyTCM modN
+      , text "constraint module telescope   = " <+> prettyTCM delta1
+      , text "constraint context            = " <+> (prettyTCM =<< enterClosure cl (const $ getContextTelescope))
+      , text "constraint                    = " <+> enterClosure cl prettyTCM
+      , text "module parameter substitution = " <+> prettyTCM sigma
+      ]
+
+  -- If gamma2 < 0, we must be in the wrong context.
+  -- E.g. we could have switched to the empty context even though
+  -- we are still inside a module with parameters.
+  -- In this case, we cannot safely convert the constraint,
+  -- since the module parameter substitution may be wrong.
+  guard (gamma2 >= 0)
+
+  -- Shortcut for modN == modM:
+  -- Raise constraint from Δ to Γ, if possible.
+  -- This might save us some strengthening.
+  if modN == modM then raiseMaybe (gamma - size delta) $ clValue cl else do
+
+  -- Strengthen constraint to Δ₁ ⊢ c
+  c <- raiseMaybe (-delta2) $ clValue cl
+
+  -- Ulf, 2016-11-09: I don't understand what this function does when M and N
+  -- are not related. Certainly things can go terribly wrong (see
+  -- test/Succeed/Issue2223b.agda)
+  fv <- liftTCM $ getModuleFreeVars modN
+  guard $ fv == size delta1
+
+  -- Γ ⊢ c[σ]
+  return $ applySubst sigma c
+  where
+    raiseMaybe n c = do
+      -- Fine if we have to weaken or strengthening is safe.
+      guard $ n >= 0 || List.all (>= -n) (VarSet.toList $ allVars $ freeVars c)
+      return $ raise n c
+
+
+-- | A hazardous hack, may the Gods have mercy on us.
+--
+--   To cast to the current context, we match the context of the
+--   given constraint by 'CtxId', and as fallback, by variable name (douh!).
+--
+--   This hack lets issue 2046 go through.
+
+castConstraintToCurrentContext :: Closure TCM.Constraint -> MaybeT TCM TCM.Constraint
+castConstraintToCurrentContext cl = do
+  -- The target context
+  gamma <- asks envContext
+  -- The context where the constraint lives.
+  let delta = envContext $ clEnv cl
+  -- The constraint
+  let c = clValue cl
+  let findInGamma (Ctx cid (Dom _ (x, t))) =
+        -- try to find same CtxId (safe)
+        case List.findIndex ((cid ==) . ctxId) gamma of
+          Just i -> Just i
+          Nothing ->
+            -- match by name (hazardous)
+            -- This is one of the seven deadly sins (not respecting alpha).
+            List.findIndex ((x ==) . fst . unDom . ctxEntry) gamma
+  let cand = map findInGamma delta
+  -- The domain of our substitution
+  let coveredVars = VarSet.fromList $ catMaybes $ zipWith ($>) cand [0..]
+  -- Check that all the free variables of the constraint are contained in
+  -- coveredVars.
+  -- We ignore the free variables occurring in sorts.
+  guard $ getAll $ runFree (\ (i, _) -> All $ i `VarSet.member` coveredVars) IgnoreAll c
+  -- Turn cand into a substitution.
+  -- Since we ignored the free variables in sorts, we better patch up
+  -- the substitution with some dummy term (Sort Prop) rather than __IMPOSSIBLE__.
+  let dummy = Sort Prop
+  let sigma = parallelS $ map (maybe dummy var) cand
+  -- Apply substitution to constraint and pray that the Gods are merciful on us.
+  return $ applySubst sigma c
+  -- Note: the resulting constraint may not well-typed.
+  -- Even if it is, it may map variables to their wrong counterpart.
+
+-- | Return the size metas occurring in the simplified constraints.
+--   A constraint like @↑ _j =< ∞ : Size@ simplifies to nothing,
+--   so @_j@ would not be in this set.
+solveSizeConstraints_ :: DefaultToInfty -> [CC] -> TCM (Set MetaId)
+solveSizeConstraints_ flag cs0 = do
   -- Pair constraints with their representation as size constraints.
   -- Discard constraints that do not have such a representation.
-  ccs <- catMaybes <$> do
-    forM cs0 $ \ c -> fmap (c,) <$> computeSizeConstraint c
+  ccs :: [(CC,HypSizeConstraint)] <- catMaybes <$> do
+    forM cs0 $ \ c0 -> fmap (c0,) <$> computeSizeConstraint c0
 
   -- Simplify constraints and check for obvious inconsistencies.
-  cs <- concat <$> do
-    forM ccs $ \ (c, HypSizeConstraint cxt hids hs sc) -> do
-      case simplify1 (\ c -> return [c]) sc of
+  ccs' <- concat <$> do
+    forM ccs $ \ (c0, HypSizeConstraint cxt hids hs sc) -> do
+      case simplify1 (\ sc -> return [sc]) sc of
         Left _ -> typeError . GenericDocError =<< do
-          text "Contradictory size constraint" <+> prettyTCM c
-        Right cs -> return $ HypSizeConstraint cxt hids hs <$> cs
+          text "Contradictory size constraint" <+> prettyTCM c0
+        Right cs -> return $ (c0,) . HypSizeConstraint cxt hids hs <$> cs
 
   -- Cluster constraints according to the meta variables they mention.
   -- @csNoM@ are the constraints that do not mention any meta.
-  let (csNoM, csMs) = (`partitionMaybe` cs) $ \ c ->
-        fmap (c,) $ uncons $ map (metaId . sizeMetaId) $ Set.toList $ flexs c
+  let (csNoM, csMs) = (`List.partitionMaybe` ccs') $ \ p@(c0, c) ->
+        fmap (p,) $ List.uncons $ map (metaId . sizeMetaId) $ Set.toList $ flexs c
   -- @css@ are the clusters of constraints.
+      css :: [[(CC,HypSizeConstraint)]]
       css = cluster' csMs
-  -- There should be no constraints that do not mention a meta?
-  unless (null csNoM) __IMPOSSIBLE__
 
+  -- Check that the closed constraints are valid.
+  solveCluster flag csNoM
+
   -- Now, process the clusters.
-  forM_ css solveCluster
+  forM_ css $ solveCluster flag
 
-solveCluster :: [HypSizeConstraint] -> TCM ()
-solveCluster [] = __IMPOSSIBLE__
-solveCluster cs = do
+  return $ Set.mapMonotonic sizeMetaId $ flexs $ map (snd . fst) csMs
+
+-- | Solve a cluster of constraints sharing some metas.
+--
+solveCluster :: DefaultToInfty -> [(CC,HypSizeConstraint)] -> TCM ()
+solveCluster flag [] = return ()
+solveCluster flag ccs = do
+  let cs = map snd ccs
   let err reason = typeError . GenericDocError =<< do
         vcat $
           [ text $ "Cannot solve size constraints" ] ++ map prettyTCM cs ++
@@ -200,7 +420,7 @@
 -}
   -- We rely on the fact that contexts are only extended...
   -- Just take the longest context.
-  let HypSizeConstraint gamma hids hs _ = maximumBy (compare `on` (length . sizeContext)) cs
+  let HypSizeConstraint gamma hids hs _ = List.maximumBy (compare `on` (length . sizeContext)) cs
   -- Length of longest context.
   let n = size gamma
 
@@ -258,23 +478,31 @@
   -- There cannot be negative cycles in hypotheses graph due to scoping.
   let hg = fromRight __IMPOSSIBLE__ $ hypGraph (rigids csF) hyps
 
-  -- Construct the constraint graph.
-  --    g :: Size.Graph NamedRigid Int Label
-  g <- either err return $ constraintGraph csF hg
-  reportSDoc "tc.size.solve" 40 $ vcat $
-    [ text "Constraint graph"
-    , text (show g)
-    ]
+  -- -- Construct the constraint graph.
+  -- --    g :: Size.Graph NamedRigid Int Label
+  -- g <- either err return $ constraintGraph csF hg
+  -- reportSDoc "tc.size.solve" 40 $ vcat $
+  --   [ text "Constraint graph"
+  --   , text (show g)
+  --   ]
 
-  sol :: Solution NamedRigid Int <- either err return $ solveGraph Map.empty hg g
-  either err return $ verifySolution hg csF sol
+  -- sol :: Solution NamedRigid Int <- either err return $ solveGraph Map.empty hg g
+  -- either err return $ verifySolution hg csF sol
+
+  -- Andreas, 2016-07-13, issue 2096.
+  -- Running the solver once might result in unsolvable left-over constraints.
+  -- We need to iterate the solver to detect this.
+  sol :: Solution NamedRigid Int <- either err return $
+    iterateSolver Map.empty hg csF Map.empty
+
   -- Convert solution to meta instantiation.
   forM_ (Map.assocs sol) $ \ (m, a) -> do
     unless (validOffset a) __IMPOSSIBLE__
     -- Solution does not contain metas
     u <- unSizeExpr $ fmap __IMPOSSIBLE__ a
     let x = MetaId m
-    let SizeMeta _ xs = fromMaybe __IMPOSSIBLE__ $ find ((m==) . metaId . sizeMetaId) metas
+    let SizeMeta _ xs = fromMaybe __IMPOSSIBLE__ $
+          List.find ((m==) . metaId . sizeMetaId) metas
     -- Check that solution is well-scoped
     let ys = rigidIndex <$> Set.toList (rigids a)
         ok = all (`elem` xs) ys -- TODO: more efficient
@@ -282,11 +510,68 @@
     u <- if ok then return u else primSizeInf
     t <- getMetaType x
     reportSDoc "tc.size.solve" 20 $ inTopContext $ modifyContext (const gamma) $ do
-      text "solution " <+> prettyTCM (MetaV x []) <+> text " := " <+> prettyTCM u
+      let args = map (Apply . defaultArg . var) xs
+      text "solution " <+> prettyTCM (MetaV x args) <+> text " := " <+> prettyTCM u
+    reportSDoc "tc.size.solve" 60 $ vcat
+      [ text $ "  xs = " ++ show xs
+      , text $ "  u  = " ++ show u
+      ]
     assignMeta n x t xs u
+    -- WRONG:
+    -- let partialSubst = List.sort $ zip xs $ map var $ downFrom n
+    -- assignMeta' n x t (length xs) partialSubst u
+    -- WRONG: assign DirEq x (map (defaultArg . var) xs) u
 
+  -- Possibly set remaining size metas to ∞ (issue 1862)
+  -- unless we have an interaction meta in the cluster (issue 2095).
 
+  ims <- Set.fromList <$> getInteractionMetas
 
+  --  ms = unsolved size metas from cluster
+  let ms = Set.fromList (map sizeMetaId metas) Set.\\  -- Some CPP or ghc does not like trailing backslash, thus, this comment!
+             Set.mapMonotonic MetaId (Map.keysSet sol)
+  --  Make sure they do not contain an interaction point
+  let noIP = Set.null $ Set.intersection ims ms
+
+  unless (null ms) $ reportSDoc "tc.size.solve" 30 $ fsep $
+    [ text "cluster did not solve these size metas: " ] ++ map prettyTCM (Set.toList ms)
+
+  solvedAll <- do
+    -- If no metas are left, we have solved this cluster completely.
+    if Set.null ms                then return True  else do
+    -- Otherwise, we can solve it completely if we are allowed to set to ∞.
+    if flag == DontDefaultToInfty then return False else do
+    -- Which is only the case when we have no interaction points in the cluster.
+    if not noIP                   then return False else do
+    -- Try to set all unconstrained size metas to ∞.
+    inf <- primSizeInf
+    and <$> do
+      forM (Set.toList ms) $ \ m -> do
+        -- If one variable is frozen, we cannot set it (and hence not all) to ∞
+        let no = do
+              reportSDoc "tc.size.solve" 30 $
+                prettyTCM (MetaV m []) <+> text "is frozen, cannot set it to ∞"
+              return False
+        ifM (isFrozen m) no $ {-else-} do
+          reportSDoc "tc.size.solve" 20 $
+            text "solution " <+> prettyTCM (MetaV m []) <+>
+            text " := "      <+> prettyTCM inf
+          t <- jMetaType . mvJudgement <$> lookupMeta m
+          TelV tel core <- telView t
+          unlessM (isJust <$> isSizeType core) __IMPOSSIBLE__
+          assignMeta 0 m t (List.downFrom $ size tel) inf
+          return True
+
+  -- Double check.
+  when solvedAll $ do
+    let cs0 = map fst ccs
+        -- Error for giving up
+        cannotSolve = typeError . GenericDocError =<<
+          vcat (text "Cannot solve size constraints" : map prettyTCM cs0)
+    flip catchError (const cannotSolve) $
+      noConstraints $
+        forM_ cs0 $ \ cl -> enterClosure cl solveConstraint
+
 -- | Collect constraints from a typing context, looking for SIZELT hypotheses.
 getSizeHypotheses :: Context -> TCM [(CtxId, SizeConstraint)]
 getSizeHypotheses gamma = inTopContext $ modifyContext (const gamma) $ do
@@ -452,7 +737,9 @@
 instance PrettyTCM HypSizeConstraint where
   prettyTCM (HypSizeConstraint cxt _ hs c) =
     inTopContext $ modifyContext (const cxt) $ do
+      let cxtNames = reverse $ map (fst . unDom . ctxEntry) cxt
       -- text ("[#cxt=" ++ show (size cxt) ++ "]") <+> do
+      prettyList (map prettyTCM cxtNames) <+> do
       applyUnless (null hs)
        (((hcat $ punctuate (text ", ") $ map prettyTCM hs) <+> text "|-") <+>)
        (prettyTCM c)
@@ -493,7 +780,7 @@
     OtherSize u -> case ignoreSharing u of
       Var i []    -> (\ x -> Just $ Rigid (NamedRigid x i) 0) . show <$> nameOfBV i
 --      MetaV m es  -> return $ Just $ Flex (SizeMeta m es) 0
-      MetaV m es | Just xs <- mapM isVar es, fastDistinct xs
+      MetaV m es | Just xs <- mapM isVar es, List.fastDistinct xs
                   -> return $ Just $ Flex (SizeMeta m xs) 0
       _           -> return Nothing
   where
diff --git a/src/full/Agda/TypeChecking/SizedTypes/Syntax.hs b/src/full/Agda/TypeChecking/SizedTypes/Syntax.hs
--- a/src/full/Agda/TypeChecking/SizedTypes/Syntax.hs
+++ b/src/full/Agda/TypeChecking/SizedTypes/Syntax.hs
@@ -1,10 +1,4 @@
-{-# LANGUAGE DeriveFoldable             #-}
-{-# LANGUAGE DeriveFunctor              #-}
-{-# LANGUAGE DeriveTraversable          #-}
-{-# LANGUAGE FlexibleInstances          #-}
-{-# LANGUAGE FunctionalDependencies     #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
-{-# LANGUAGE MultiParamTypeClasses      #-}
 {-# LANGUAGE NoMonomorphismRestriction  #-}
 {-# LANGUAGE UndecidableInstances       #-}
 
@@ -19,8 +13,6 @@
 import qualified Data.Set as Set
 import Data.Traversable (Traversable)
 
-import Test.QuickCheck
-
 import Agda.TypeChecking.SizedTypes.Utils
 
 -- * Syntax
@@ -38,13 +30,6 @@
 instance Plus Offset Offset Offset where
   plus (O x) (O y) = O (plus x y)
 
-instance Arbitrary Offset where
-  arbitrary = do
-    NonNegative x <- arbitrary
-    return x
-
-  shrink (O x) = map O $ filter (>= 0) (shrink x)
-
 -- | Fixed size variables @i@.
 newtype Rigid  = RigidId { rigidId :: String }
   deriving (Eq, Ord)
@@ -89,9 +74,6 @@
 instance Top Cmp where
   top = Le
 
-instance Arbitrary Cmp where
-  arbitrary = arbitraryBoundedEnum
-
 -- | Constraint: an inequation between size expressions,
 --   e.g. @X < ∞@ or @i + 3 ≤ j@.
 data Constraint' rigid flex = Constraint
@@ -150,6 +132,9 @@
 instance Substitute r f a => Substitute r f [a] where
   subst = map . subst
 
+instance Substitute r f a => Substitute r f (Map k a) where
+  subst = fmap . subst
+
 -- | Add offset to size expression.
 instance Plus (SizeExpr' r f) Offset (SizeExpr' r f) where
   plus e m =
@@ -163,7 +148,7 @@
 
 type CTrans r f = Constraint' r f -> Either String [Constraint' r f]
 
--- | Returns 'Nothing' if we have a contradictory constraint.
+-- | Returns an error message if we have a contradictory constraint.
 simplify1 :: (Show f, Show r, Eq r) => CTrans r f -> CTrans r f
 simplify1 test c = do
   let err = Left $ "size constraint " ++ show c ++ " is inconsistent"
diff --git a/src/full/Agda/TypeChecking/SizedTypes/Tests.hs b/src/full/Agda/TypeChecking/SizedTypes/Tests.hs
deleted file mode 100644
--- a/src/full/Agda/TypeChecking/SizedTypes/Tests.hs
+++ /dev/null
@@ -1,145 +0,0 @@
-{-# LANGUAGE TemplateHaskell #-}
-
-module Agda.TypeChecking.SizedTypes.Tests where
-
-import Test.QuickCheck
-
-import Agda.TypeChecking.SizedTypes.Syntax
-import Agda.TypeChecking.SizedTypes.WarshallSolver
-import Agda.TypeChecking.SizedTypes.Utils
-
--- * Label interpretation
-
-type Relation a = a -> a -> Bool
-
-class AsWeightRelation b where
-  eval :: b -> Relation Weight
-
-instance AsWeightRelation Cmp where
-  eval Le = (<=)
-  eval Lt = (<)
-
-instance AsWeightRelation Label where
-  eval (Label cmp w) x y = eval cmp x (y `plus` w)
-  eval LInf          _ _ = True
-
-prop_MeetSound :: Label -> Label -> Weight -> Weight -> Property
-prop_MeetSound l l' x y =
-  eval l x y && eval l' x y ==> eval (meet l l') x y
-
-prop_MeetComplete :: Label -> Label -> Weight -> Weight -> Property
-prop_MeetComplete l l' x y =
-  eval (meet l l') x y ==> eval l x y && eval l' x y
-
-prop_ComposeSound :: Label -> Label -> Weight -> Weight -> Weight -> Property
-prop_ComposeSound l1 l2 x y z =
-  eval l1 x y && eval l2 y z ==> eval (compose l1 l2) x z
-
-prop_ComposeComplete :: Label -> Label -> Offset -> Weight -> Property
-prop_ComposeComplete l1 l2 k z = let x = Offset k in
-  eval (compose l1 l2) x z ==>
-    let y = z + toWeight l2
-    in  eval l1 x y -- && eval l2 y z -- does not hold for l2 = \infty
-    -- Andreas, 2014-05-20, Issue 1134
-    -- If we replace the \infty with its unicode, issue 1134 is triggered:
-    -- "... GHC 7.6.3 and quickcheck 2.6.
-    -- It turns out that for some reason Gentoo eclass unsets locale
-    -- to POSIX when building haskell packages. So the issue is easy
-    -- to reproduce with `LANG=POSIX ./setup build`."
-    --
-    -- Funnily, the offending unicode symbol is in a comment.
-    -- Some issue for TemplateHaskell / QuickCheck.
-
--- * Generic properties
-
-propCommutative :: Eq b => (a -> a -> b) -> a -> a -> Bool
-propCommutative o x y = x `o` y == y `o` x
-
-propAssociative :: Eq a => (a -> a -> a) -> a -> a -> a -> Bool
-propAssociative o x y z = x `o` (y `o` z) == (x `o` y) `o` z
-
-propIdempotent :: Eq a => (a -> a -> a) -> a -> Bool
-propIdempotent o x = (x `o` x) == x
-
-propUnit :: Eq a => (a -> a -> a) -> a -> a -> Bool
-propUnit o u x = u `o` x == x && x `o` u == x
-
-propZero :: Eq a => (a -> a -> a) -> a -> a -> Bool
-propZero o z x = z `o` x == z && x `o` z == z
-
-propDistL :: Eq b => (a -> b -> b) -> (b -> b -> b) -> a -> b -> b -> Bool
-propDistL o p x y z = x `o` (y `p` z) == (x `o` y) `p` (x `o` z)
-
-propDistR :: Eq a => (a -> b -> a) -> (a -> a -> a) -> a -> a -> b -> Bool
-propDistR o p x y z = (x `p` y) `o` z == (x `o` z) `p` (y `o` z)
-
-propDistributive :: Eq a =>
-                    (a -> a -> a) -> (a -> a -> a) -> a -> a -> a -> Bool
-propDistributive o p x y z = propDistL o p x y z && propDistR o p x y z
-
-propSemiLattice :: Eq a => (a -> a -> a) -> a -> a -> a -> Bool
-propSemiLattice o x y z =
-  propCommutative o x y && propAssociative o x y z && propIdempotent o x
-
-propBoundedSemiLattice :: Eq a => (a -> a -> a) -> a -> a -> a -> a -> Bool
-propBoundedSemiLattice o u x y z = propSemiLattice o x y z && propUnit o u x
-
-propMonoid :: Eq a => (a -> a -> a) -> a -> a -> a -> a -> Bool
-propMonoid o u x y z = propAssociative o x y z && propUnit o u x
-
-propDioid :: Eq a =>
-             (a -> a -> a) -> a -> (a -> a -> a) -> a -> a -> a -> a -> Bool
-propDioid p n o u x y z = propBoundedSemiLattice p n x y z
-                       && propMonoid o u x y z
-                       && propDistributive o p x y z
-                       && propZero o n x
-
--- | Properties of 'Dioid' class.
-propDioid_Gen :: Dioid a => a -> a -> a -> Bool
-propDioid_Gen = propDioid meet top compose unitCompose
-
--- | @Weight@ instance.
-prop_Dioid_Weight :: Weight -> Weight -> Weight -> Bool
-prop_Dioid_Weight x y z = propDioid_Gen x y z
-
--- | @Label@ instance.
-prop_SemiLattice_Label :: Label -> Label -> Label -> Bool
-prop_SemiLattice_Label x y z = propSemiLattice meet x y z
-
-prop_Unit_Label :: Label -> Bool
-prop_Unit_Label x = propUnit meet top x
-
-prop_BoundedSemiLattice_Label :: Label -> Label -> Label -> Bool
-prop_BoundedSemiLattice_Label x y z = propBoundedSemiLattice meet top x y z
-
-prop_Monoid_Label :: Label -> Label -> Label -> Bool
-prop_Monoid_Label x y z = propMonoid compose unitCompose x y z
-
-prop_DistL_Label :: Label -> Label -> Label -> Bool
-prop_DistL_Label x y z = propDistL compose meet x y z
-
-prop_DistR_Label :: Label -> Label -> Label -> Bool
-prop_DistR_Label x y z = propDistR compose meet x y z
-
-prop_Dist_Label :: Label -> Label -> Label -> Bool
-prop_Dist_Label x y z = propDistributive compose meet x y z
-
-prop_Zero_Label :: Label -> Bool
-prop_Zero_Label x = propZero compose top x
-
-prop_Dioid_Label :: Label -> Label -> Label -> Bool
-prop_Dioid_Label x y z = propDioid_Gen x y z
-
-------------------------------------------------------------------------
--- * All tests
-------------------------------------------------------------------------
-
--- Template Haskell hack to make the following $quickCheckAll work
--- under ghc-7.8.
-return [] -- KEEP!
-
--- | Runs all tests starting with "prop_" in this file.
-tests :: IO Bool
-tests = do
-  putStrLn "Agda.TypeChecking.SizedTypes.Tests"
-  $quickCheckAll
diff --git a/src/full/Agda/TypeChecking/SizedTypes/Utils.hs b/src/full/Agda/TypeChecking/SizedTypes/Utils.hs
--- a/src/full/Agda/TypeChecking/SizedTypes/Utils.hs
+++ b/src/full/Agda/TypeChecking/SizedTypes/Utils.hs
@@ -1,4 +1,3 @@
-{-# LANGUAGE MultiParamTypeClasses #-}
 
 module Agda.TypeChecking.SizedTypes.Utils where
 
diff --git a/src/full/Agda/TypeChecking/SizedTypes/WarshallSolver.hs b/src/full/Agda/TypeChecking/SizedTypes/WarshallSolver.hs
--- a/src/full/Agda/TypeChecking/SizedTypes/WarshallSolver.hs
+++ b/src/full/Agda/TypeChecking/SizedTypes/WarshallSolver.hs
@@ -1,15 +1,7 @@
 {-# LANGUAGE CPP                       #-}
-{-# LANGUAGE FlexibleInstances         #-}
-{-# LANGUAGE MultiParamTypeClasses     #-}
 {-# LANGUAGE NoMonomorphismRestriction #-}
-{-# LANGUAGE PatternGuards             #-}
 {-# LANGUAGE ScopedTypeVariables       #-}
-{-# LANGUAGE TupleSections             #-}
 
-#if __GLASGOW_HASKELL__ >= 710
-{-# LANGUAGE FlexibleContexts #-}
-#endif
-
 module Agda.TypeChecking.SizedTypes.WarshallSolver where
 
 import Prelude hiding (truncate)
@@ -26,8 +18,6 @@
 import qualified Data.Map as Map
 import Data.Traversable (for)
 
-import Test.QuickCheck (Arbitrary(..), frequency, choose)
-
 import Agda.TypeChecking.SizedTypes.Syntax
 import Agda.TypeChecking.SizedTypes.Utils
 
@@ -147,12 +137,6 @@
 instance Plus Weight Offset Weight where
   plus w k = w + (Offset k)
 
-instance Arbitrary Weight where
-  arbitrary = frequency
-    [ (1, return Infinity)
-    , (5, Offset . O <$> choose (0, 200))
-    ]
-
 -- | Test for negativity, used to detect negative cycles.
 class Negative a where
   negative :: a -> Bool
@@ -226,12 +210,6 @@
   isTop Label{}       = False
   isTop LInf          = True
 
-instance Arbitrary Label where
-  arbitrary = frequency
-    [ (1, return LInf)
-    , (5, Label <$> arbitrary <*> arbitrary)
-    ]
-
 -- * Semiring with idempotent '+' == dioid
 
 instance Dioid Weight where
@@ -581,6 +559,7 @@
   { lowerBounds :: Bound r f
   , upperBounds :: Bound r f
   , mustBeFinite :: Set f
+    -- ^ These metas are < ∞.
   }
 
 -- | Compute a lower bound for a flexible from an edge.
@@ -869,9 +848,9 @@
           []     -> return $ Nothing
           (a:as) -> do
             case foldM (glb hg) a as of
-              Nothing -> Left $ "inconsistent upper bound for " ++ show x
-              Just l | validOffset l -> return $ Just l
-                     | otherwise     -> return $ findRigidBelow hg l
+              Just l | validOffset l                  -> return $ Just l
+                     | Just l' <- findRigidBelow hg l -> return $ Just l'
+              _ -> Left $ "inconsistent upper bound for " ++ show x
       case (lb, ub) of
         (Just l, Nothing) -> return $ Just (x, l)  -- solve x = lower bound
         (Nothing, Just u) -> return $ Just (x, u)  -- solve x = upper bound
@@ -911,6 +890,30 @@
     Just [] -> Right ()
     Just cs -> Left $ "solution leaves constraints " ++ show cs
 -}
+
+-- | Iterate solver until no more metas can be solved.
+--
+--   This might trigger a (wanted) error on the second iteration (see Issue 2096)
+--   which would otherwise go unnoticed.
+
+iterateSolver
+  :: (Ord r, Ord f, Show r, Show f)
+  => Polarities f
+     -- ^ Meta variable polarities (prefer lower or upper solution?).
+  -> HypGraph r f
+     -- ^ Hypotheses (assumed to have no metas, so, fixed during iteration).
+  -> [Constraint' r f]
+     -- ^ Constraints to solve.
+  -> Solution r f
+     -- ^ Previous substitution (already applied to constraints).
+  -> Either String (Solution r f)
+     -- ^ Accumulated substition.
+
+iterateSolver pols hg cs sol0 = do
+  g <- constraintGraph cs hg
+  sol <- solveGraph pols hg g
+  if Map.null sol then return sol0 else
+    iterateSolver pols hg (subst sol cs) (Map.unionWith __IMPOSSIBLE__ sol $ subst sol sol0)
 
 -- * Tests
 
diff --git a/src/full/Agda/TypeChecking/Substitute.hs b/src/full/Agda/TypeChecking/Substitute.hs
--- a/src/full/Agda/TypeChecking/Substitute.hs
+++ b/src/full/Agda/TypeChecking/Substitute.hs
@@ -1,13 +1,6 @@
 {-# LANGUAGE CPP                #-}
 {-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveFunctor      #-}
-{-# LANGUAGE FlexibleContexts   #-}
-{-# LANGUAGE FlexibleInstances  #-}
-{-# LANGUAGE PatternGuards      #-}
-{-# LANGUAGE StandaloneDeriving #-}
-{-# LANGUAGE TupleSections      #-}
-{-# LANGUAGE FunctionalDependencies #-}
-{-# LANGUAGE MultiParamTypeClasses  #-}
+{-# LANGUAGE ScopedTypeVariables    #-}
 {-# LANGUAGE UndecidableInstances   #-}
 
 #if __GLASGOW_HASKELL__ <= 708
@@ -18,11 +11,12 @@
 
 module Agda.TypeChecking.Substitute
   ( module Agda.TypeChecking.Substitute
+  , module Agda.TypeChecking.Substitute.Class
+  , module Agda.TypeChecking.Substitute.DeBruijn
   , Substitution'(..), Substitution
   ) where
 
-import Control.Arrow ((***), second)
-
+import Control.Applicative
 import Data.Function
 import Data.Functor
 import Data.List hiding (sort, drop)
@@ -37,52 +31,34 @@
 import Agda.Syntax.Common
 import Agda.Syntax.Internal
 import Agda.Syntax.Internal.Pattern
-import Agda.Syntax.Position
+import qualified Agda.Syntax.Abstract as A
 
 import Agda.TypeChecking.Monad.Base
 import Agda.TypeChecking.Free as Free
 import Agda.TypeChecking.CompiledClause
 import Agda.TypeChecking.Positivity.Occurrence as Occ
 
+import Agda.TypeChecking.Substitute.Class
+import Agda.TypeChecking.Substitute.DeBruijn
+
 import Agda.Utils.Empty
 import Agda.Utils.Functor
 import Agda.Utils.List
 import Agda.Utils.Permutation
 import Agda.Utils.Size
 import Agda.Utils.Tuple
+import Agda.Utils.HashMap (HashMap)
 
 #include "undefined.h"
 import Agda.Utils.Impossible
 
----------------------------------------------------------------------------
--- * Application
----------------------------------------------------------------------------
-
--- | Apply something to a bunch of arguments.
---   Preserves blocking tags (application can never resolve blocking).
-class Apply t where
-  apply  :: t -> Args -> t
-  applyE :: t -> Elims -> t
-
-  apply t args = applyE t $ map Apply args
-  applyE t es  = apply  t $ map argFromElim es
-    -- precondition: all @es@ are @Apply@s
-
--- | Apply to some default arguments.
-applys :: Apply t => t -> [Term] -> t
-applys t vs = apply t $ map defaultArg vs
-
--- | Apply to a single default argument.
-apply1 :: Apply t => t -> Term -> t
-apply1 t u = applys t [ u ]
-
 instance Apply Term where
   applyE m [] = m
   applyE m es =
     case m of
       Var i es'   -> Var i (es' ++ es)
       Def f es'   -> defApp f es' es  -- remove projection redexes
-      Con c args  -> conApp c args es
+      Con c ci args -> conApp c ci args es
       Lam _ b     ->
         case es of
           Apply a : es0 -> lazyAbsApp b (unArg a) `applyE` es0
@@ -101,16 +77,16 @@
 canProject :: QName -> Term -> Maybe (Arg Term)
 canProject f v =
   case ignoreSharing v of
-    (Con (ConHead _ _ fs) vs) -> do
+    (Con (ConHead _ _ fs) _ vs) -> do
       i <- elemIndex f fs
       headMaybe (drop i vs)
     _ -> Nothing
 
 -- | Eliminate a constructed term.
-conApp :: ConHead -> Args -> Elims -> Term
-conApp ch                  args []             = Con ch args
-conApp ch                  args (Apply a : es) = conApp ch (args ++ [a]) es
-conApp ch@(ConHead c _ fs) args (Proj f  : es) =
+conApp :: ConHead -> ConInfo -> Args -> Elims -> Term
+conApp ch                  ci args []             = Con ch ci args
+conApp ch                  ci args (Apply a : es) = conApp ch ci (args ++ [a]) es
+conApp ch@(ConHead c _ fs) ci args (Proj o f : es) =
   let failure = flip trace __IMPOSSIBLE__ $
         "conApp: constructor " ++ show c ++
         " with fields " ++ show fs ++
@@ -118,6 +94,24 @@
       i = maybe failure id            $ elemIndex f fs
       v = maybe failure argToDontCare $ headMaybe $ drop i args
   in  applyE v es
+
+  -- -- Andreas, 2016-07-20 futile attempt to magically fix ProjOrigin
+  --     fallback = v
+  -- in  if not $ null es then applyE v es else
+  --     -- If we have no more eliminations, we can return v
+  --     if o == ProjSystem then fallback else
+  --       -- If the result is a projected term with ProjSystem,
+  --       -- we can can restore it to ProjOrigin o.
+  --       -- Otherwise, we get unpleasant printing with eta-expanded record metas.
+  --     caseMaybe (hasElims v) fallback $ \ (hd, es0) ->
+  --       caseMaybe (initLast es0) fallback $ \ (es1, e2) ->
+  --         case e2 of
+  --           -- We want to replace this ProjSystem by o.
+  --           Proj ProjSystem q -> hd (es1 ++ [Proj o q])
+  --             -- Andreas, 2016-07-21 for the whole testsuite
+  --             -- this case was never triggered!
+  --           _ -> fallback
+
 {-
       i = maybe failure id    $ elemIndex f $ map unArg fs
       v = maybe failure unArg $ headMaybe $ drop i args
@@ -184,14 +178,15 @@
   apply (ExtendTel _ tel) (t : ts) = lazyAbsApp tel (unArg t) `apply` ts
 
 instance Apply Definition where
-  apply (Defn info x t pol occ df m c inst copy d) args =
-    Defn info x (piApply t args) (apply pol args) (apply occ args) df m c inst copy (apply d args)
+  apply (Defn info x t pol occ df m c inst copy ma d) args =
+    Defn info x (piApply t args) (apply pol args) (apply occ args) df m c inst copy ma (apply d args)
 
 instance Apply RewriteRule where
   apply r args = RewriteRule
     { rewName    = rewName r
     , rewContext = apply (rewContext r) args
-    , rewLHS     = applySubst sub (rewLHS r)
+    , rewHead    = rewHead r
+    , rewPats    = applySubst sub (rewPats r)
     , rewRHS     = applySubst sub (rewRHS r)
     , rewType    = applySubst sub (rewType r)
     }
@@ -211,16 +206,39 @@
 #endif
   apply pol args = List.drop (length args) pol
 
+-- | Make sure we only drop variable patterns.
+#if __GLASGOW_HASKELL__ >= 710
+instance {-# OVERLAPPING #-} Apply [NamedArg (Pattern' a)] where
+#else
+instance Apply [NamedArg (Pattern' a)] where
+#endif
+  apply ps args = loop (length args) ps
+    where
+    loop 0 ps = ps
+    loop n [] = __IMPOSSIBLE__
+    loop n (p : ps) =
+      let recurse = loop (n - 1) ps
+      in  case namedArg p of
+            VarP{}  -> recurse
+            DotP{}  -> __IMPOSSIBLE__
+            LitP{}  -> __IMPOSSIBLE__
+            ConP{}  -> __IMPOSSIBLE__
+            ProjP{} -> __IMPOSSIBLE__
+
 instance Apply Projection where
   apply p args = p
-    { projIndex    = projIndex p - size args
-    , projDropPars = projDropPars p `apply` args
+    { projIndex = projIndex p - size args
+    , projLams  = projLams p `apply` args
     }
 
+instance Apply ProjLams where
+  apply (ProjLams lams) args = ProjLams $ List.drop (length args) lams
+
 instance Apply Defn where
   apply d [] = d
   apply d args = case d of
     Axiom{} -> d
+    AbstractDefn -> d
     Function{ funClauses = cs, funCompiled = cc, funInv = inv
             , funProjection = Nothing } ->
       d { funClauses    = apply cs args
@@ -268,9 +286,9 @@
         , dataClause     = apply cl args
 --        , dataArgOccurrences = List.drop (length args) occ
         }
-    Record{ recPars = np, recConType = t, recClause = cl, recTel = tel
+    Record{ recPars = np, recClause = cl, recTel = tel
           {-, recArgOccurrences = occ-} } ->
-      d { recPars = np - size args, recConType = piApply t args
+      d { recPars = np - size args
         , recClause = apply cl args, recTel = apply tel args
 --        , recArgOccurrences = List.drop (length args) occ
         }
@@ -283,14 +301,87 @@
     apply (PrimFun x ar def) args   = PrimFun x (ar - size args) $ \vs -> def (args ++ vs)
 
 instance Apply Clause where
-    apply (Clause r tel ps b t catchall) args =
+    -- This one is a little bit tricksy after the parameter refinement change.
+    -- It is assumed that we only apply a clause to "parameters", i.e.
+    -- arguments introduced by lambda lifting. The problem is that these aren't
+    -- necessarily the first elements of the clause telescope.
+    apply cls@(Clause r tel ps b t catchall) args
+      | length args > length ps = __IMPOSSIBLE__
+      | otherwise =
       Clause r
-             (apply tel args)
-             (List.drop (size args) ps)
-             (apply b args)
-             (applySubst (parallelS (map unArg args)) t)
+             tel'
+             (applySubst rhoP $ drop (length args) ps)
+             (applySubst rho b)
+             (applySubst rho t)
              catchall
+      where
+        -- We have
+        --  Γ ⊢ args, for some outer context Γ
+        --  Δ ⊢ ps,   where Δ is the clause telescope (tel)
+        rargs = map unArg $ reverse args
+        rps   = reverse $ take (length args) ps
+        n     = size tel
 
+        -- This is the new telescope. Created by substituting the args into the
+        -- appropriate places in the old telescope. We know where those are by
+        -- looking at the deBruijn indices of the patterns.
+        tel' = newTel n tel rps rargs
+
+        -- We then have to create a substitution from the old telescope to the
+        -- new telescope that we can apply to dot patterns and the clause body.
+        rhoP :: PatternSubstitution
+        rhoP = mkSub DotP n rps rargs
+        rho  = mkSub id   n rps rargs
+
+        substP :: Nat -> Term -> [NamedArg DeBruijnPattern] -> [NamedArg DeBruijnPattern]
+        substP i v = subst i (DotP v)
+
+        -- Building the substitution from the old telescope to the new. The
+        -- interesting case is when we have a variable pattern:
+        --  We need Δ′ ⊢ ρ : Δ
+        --  where Δ′ = newTel Δ (xⁱ : ps) (v : vs)
+        --           = newTel Δ[xⁱ:=v] ps[xⁱ:=v'] vs
+        --  Note that we need v' = raise (|Δ| - 1) v, to make Γ ⊢ v valid in
+        --  ΓΔ[xⁱ:=v].
+        --  A recursive call ρ′ = mkSub (substP i v' ps) vs gets us
+        --    Δ′ ⊢ ρ′ : Δ[xⁱ:=v]
+        --  so we just need Δ[xⁱ:=v] ⊢ σ : Δ and then ρ = ρ′ ∘ σ.
+        --  That's achieved by σ = singletonS i v'.
+        mkSub :: Subst a a => (Term -> a) -> Nat -> [NamedArg DeBruijnPattern] -> [Term] -> Substitution' a
+        mkSub _ _ [] [] = idS
+        mkSub tm n (p : ps) (v : vs) =
+          case namedArg p of
+            VarP (DBPatVar _ i) -> mkSub tm (n - 1) (substP i v' ps) vs `composeS` singletonS i (tm v')
+              where v' = raise (n - 1) v
+            DotP{}  -> mkSub tm n ps vs
+            LitP{}  -> __IMPOSSIBLE__
+            ConP{}  -> __IMPOSSIBLE__
+            ProjP{} -> __IMPOSSIBLE__
+        mkSub _ _ _ _ = __IMPOSSIBLE__
+
+        -- The parameter patterns 'ps' are all variables or dot patterns. If they
+        -- are variables they can appear anywhere in the clause telescope. This
+        -- function constructs the new telescope with 'vs' substituted for 'ps'.
+        -- Example:
+        --    tel = (x : A) (y : B) (z : C) (w : D)
+        --    ps  = y@3 w@0
+        --    vs  = u v
+        --    newTel tel ps vs = (x : A) (z : C[u/y])
+        newTel n tel [] [] = tel
+        newTel n tel (p : ps) (v : vs) =
+          case namedArg p of
+            VarP (DBPatVar _ i) -> newTel (n - 1) (subTel (size tel - 1 - i) v tel) (substP i (raise (n - 1) v) ps) vs
+            DotP{}              -> newTel n tel ps vs
+            LitP{}              -> __IMPOSSIBLE__
+            ConP{}              -> __IMPOSSIBLE__
+            ProjP{}             -> __IMPOSSIBLE__
+        newTel _ tel _ _ = __IMPOSSIBLE__
+
+        -- subTel i v (Δ₁ (xᵢ : A) Δ₂) = Δ₁ Δ₂[xᵢ = v]
+        subTel i v EmptyTel = __IMPOSSIBLE__
+        subTel 0 v (ExtendTel _ tel) = absApp tel v
+        subTel i v (ExtendTel a tel) = ExtendTel a $ subTel (i - 1) (raise 1 v) <$> tel
+
 instance Apply CompiledClauses where
   apply cc args = case cc of
     Fail     -> Fail
@@ -319,25 +410,20 @@
   apply NotInjective  args = NotInjective
   apply (Inverse inv) args = Inverse $ apply inv args
 
-instance Apply ClauseBody where
-  apply  b       []       = b
-  apply (Bind b) (a:args) = lazyAbsApp b (unArg a) `apply` args
-  apply (Body v) args     = Body $ v `apply` args
-  apply  NoBody   _       = NoBody
-  applyE  b       []             = b
-
-  applyE (Bind b) (Apply a : es) = lazyAbsApp b (unArg a) `applyE` es
-  applyE (Bind b) (Proj{}  : es) = __IMPOSSIBLE__
-  applyE (Body v) es             = Body $ v `applyE` es
-  applyE  NoBody   _             = NoBody
-
 instance Apply DisplayTerm where
   apply (DTerm v)          args = DTerm $ apply v args
   apply (DDot v)           args = DDot  $ apply v args
-  apply (DCon c vs)        args = DCon c $ vs ++ map (fmap DTerm) args
+  apply (DCon c ci vs)     args = DCon c ci $ vs ++ map (fmap DTerm) args
   apply (DDef c es)        args = DDef c $ es ++ map (Apply . fmap DTerm) args
-  apply (DWithApp v ws args') args = DWithApp v ws $ args' ++ args
+  apply (DWithApp v ws es) args = DWithApp v ws $ es ++ map Apply args
 
+  applyE (DTerm v)           es = DTerm $ applyE v es
+  applyE (DDot v)            es = DDot  $ applyE v es
+  applyE (DCon c ci vs)      es = DCon c ci $ vs ++ map (fmap DTerm) ws
+    where ws = fromMaybe __IMPOSSIBLE__ $ allApplyElims es
+  applyE (DDef c es')        es = DDef c $ es' ++ map (fmap DTerm) es
+  applyE (DWithApp v ws es') es = DWithApp v ws $ es' ++ es
+
 #if __GLASGOW_HASKELL__ >= 710
 instance {-# OVERLAPPABLE #-} Apply t => Apply [t] where
 #else
@@ -358,6 +444,10 @@
   apply  x args = fmap (`apply` args) x
   applyE x es   = fmap (`applyE` es) x
 
+instance Apply v => Apply (HashMap k v) where
+  apply  x args = fmap (`apply` args) x
+  applyE x es   = fmap (`applyE` es) x
+
 instance (Apply a, Apply b) => Apply (a,b) where
   apply  (x,y) args = (apply  x args, apply  y args)
   applyE (x,y) es   = (applyE x es  , applyE y es  )
@@ -401,10 +491,6 @@
 -- * Abstraction
 ---------------------------------------------------------------------------
 
--- | @(abstract args v) `apply` args --> v[args]@.
-class Abstract t where
-  abstract :: Telescope -> t -> t
-
 instance Abstract Term where
   abstract = teleLam
 
@@ -420,15 +506,15 @@
   ExtendTel arg xtel `abstract` tel = ExtendTel arg $ xtel <&> (`abstract` tel)
 
 instance Abstract Definition where
-  abstract tel (Defn info x t pol occ df m c inst copy d) =
-    Defn info x (abstract tel t) (abstract tel pol) (abstract tel occ) df m c inst copy (abstract tel d)
+  abstract tel (Defn info x t pol occ df m c inst copy ma d) =
+    Defn info x (abstract tel t) (abstract tel pol) (abstract tel occ) df m c inst copy ma (abstract tel d)
 
 -- | @tel ⊢ (Γ ⊢ lhs ↦ rhs : t)@ becomes @tel, Γ ⊢ lhs ↦ rhs : t)@
 --   we do not need to change lhs, rhs, and t since they live in Γ.
 --   See 'Abstract Clause'.
 instance Abstract RewriteRule where
-  abstract tel (RewriteRule q gamma lhs rhs t) =
-    RewriteRule q (abstract tel gamma) lhs rhs t
+  abstract tel (RewriteRule q gamma f ps rhs t) =
+    RewriteRule q (abstract tel gamma) f ps rhs t
 
 #if __GLASGOW_HASKELL__ >= 710
 instance {-# OVERLAPPING #-} Abstract [Occ.Occurrence] where
@@ -448,15 +534,18 @@
 
 instance Abstract Projection where
   abstract tel p = p
-    { projIndex    = size tel + projIndex p
-    , projDropPars = abstract tel $ projDropPars p
-    , projArgInfo  = if projIndex p > 0 then projArgInfo p else
-       domInfo $ last $ telToList tel
+    { projIndex = size tel + projIndex p
+    , projLams  = abstract tel $ projLams p
     }
 
+instance Abstract ProjLams where
+  abstract tel (ProjLams lams) = ProjLams $
+    map (\ (Dom ai (x, _)) -> Arg ai x) (telToList tel) ++ lams
+
 instance Abstract Defn where
   abstract tel d = case d of
     Axiom{} -> d
+    AbstractDefn -> d
     Function{ funClauses = cs, funCompiled = cc, funInv = inv
             , funProjection = Nothing  } ->
       d { funClauses  = abstract tel cs
@@ -482,9 +571,8 @@
         , dataNonLinPars = abstract tel nlps
         , dataClause     = abstract tel cl
         }
-    Record{ recPars = np, recConType = t, recClause = cl, recTel = tel' } ->
+    Record{ recPars = np, recClause = cl, recTel = tel' } ->
       d { recPars    = np + size tel
-        , recConType = abstract tel t
         , recClause  = abstract tel cl
         , recTel     = abstract tel tel'
         }
@@ -500,7 +588,8 @@
 instance Abstract Clause where
   abstract tel (Clause r tel' ps b t catchall) =
     Clause r (abstract tel tel')
-           (namedTelVars m tel ++ ps) (abstract tel b)
+           (namedTelVars m tel ++ ps)
+           b
            t -- nothing to do for t, since it lives under the telescope
            catchall
       where m = size tel + size tel'
@@ -531,10 +620,6 @@
   abstract tel NotInjective  = NotInjective
   abstract tel (Inverse inv) = Inverse $ abstract tel inv
 
-instance Abstract ClauseBody where
-  abstract EmptyTel          b = b
-  abstract (ExtendTel _ tel) b = Bind $ fmap (`abstract` b) tel
-
 #if __GLASGOW_HASKELL__ >= 710
 instance {-# OVERLAPPABLE #-} Abstract t => Abstract [t] where
 #else
@@ -548,6 +633,9 @@
 instance Abstract v => Abstract (Map k v) where
   abstract tel m = fmap (abstract tel) m
 
+instance Abstract v => Abstract (HashMap k v) where
+  abstract tel m = fmap (abstract tel) m
+
 abstractArgs :: Abstract a => Args -> a -> a
 abstractArgs args x = abstract tel x
     where
@@ -557,161 +645,24 @@
         names = cycle $ map (stringToArgName . (:[])) ['a'..'z']
 
 ---------------------------------------------------------------------------
--- * Explicit substitutions
----------------------------------------------------------------------------
-
-class DeBruijn a where
-  debruijnVar  :: Int -> a
-  debruijnVar = debruijnNamedVar underscore
-  debruijnNamedVar :: String -> Int -> a
-  debruijnNamedVar _ = debruijnVar
-  debruijnView :: a -> Maybe Int
-
-instance DeBruijn Term where
-  debruijnVar = var
-  debruijnView (Var n []) = Just n
-  debruijnView _ = Nothing
-
--- See Syntax.Internal for the definition.
-
-idS :: Substitution' a
-idS = IdS
-
-wkS :: Int -> Substitution' a -> Substitution' a
-wkS 0 rho        = rho
-wkS n (Wk m rho) = Wk (n + m) rho
-wkS n EmptyS     = EmptyS
-wkS n rho        = Wk n rho
-
-raiseS :: Int -> Substitution' a
-raiseS n = wkS n idS
-
-consS :: DeBruijn a => a -> Substitution' a -> Substitution' a
-consS t (Wk m rho)
-  | Just n <- debruijnView t,
-    n + 1 == m = wkS (m - 1) (liftS 1 rho)
-consS u rho = seq u (u :# rho)
-
--- | To replace index @n@ by term @u@, do @applySubst (singletonS n u)@.
-singletonS :: DeBruijn a => Int -> a -> Substitution' a
-singletonS n u = map debruijnVar [0..n-1] ++# consS u (raiseS n)
-  -- ALT: foldl (\ s i -> debruijnVar i `consS` s) (consS u $ raiseS n) $ downFrom n
-
--- | Lift a substitution under k binders.
-liftS :: Int -> Substitution' a -> Substitution' a
-liftS 0 rho          = rho
-liftS k IdS          = IdS
-liftS k (Lift n rho) = Lift (n + k) rho
-liftS k rho          = Lift k rho
-
-dropS :: Int -> Substitution' a -> Substitution' a
-dropS 0 rho                = rho
-dropS n IdS                = raiseS n
-dropS n (Wk m rho)         = wkS m (dropS n rho)
-dropS n (u :# rho)         = dropS (n - 1) rho
-dropS n (Strengthen _ rho) = dropS (n - 1) rho
-dropS n (Lift 0 rho)       = __IMPOSSIBLE__
-dropS n (Lift m rho)       = wkS 1 $ dropS (n - 1) $ liftS (m - 1) rho
-dropS n EmptyS             = __IMPOSSIBLE__
-
--- | @applySubst (ρ `composeS` σ) v == applySubst ρ (applySubst σ v)@
-composeS :: Subst a a => Substitution' a -> Substitution' a -> Substitution' a
-composeS rho IdS = rho
-composeS IdS sgm = sgm
-composeS rho EmptyS = EmptyS
-composeS rho (Wk n sgm) = composeS (dropS n rho) sgm
-composeS rho (u :# sgm) = applySubst rho u :# composeS rho sgm
-composeS rho (Strengthen err sgm) = Strengthen err (composeS rho sgm)
-composeS rho (Lift 0 sgm) = __IMPOSSIBLE__
-composeS (u :# rho) (Lift n sgm) = u :# composeS rho (liftS (n - 1) sgm)
-composeS rho (Lift n sgm) = lookupS rho 0 :# composeS rho (wkS 1 (liftS (n - 1) sgm))
-
--- If Γ ⊢ ρ : Δ, Θ then splitS |Θ| ρ = (σ, δ), with
---   Γ ⊢ σ : Δ
---   Γ ⊢ δ : Θσ
-splitS :: Int -> Substitution' a -> (Substitution' a, Substitution' a)
-splitS 0 rho                  = (rho, EmptyS)
-splitS n (u :# rho)           = second (u :#) $ splitS (n - 1) rho
-splitS n (Strengthen err rho) = second (Strengthen err) $ splitS (n - 1) rho
-splitS n (Lift 0 _)           = __IMPOSSIBLE__
-splitS n (Wk m rho)           = wkS m *** wkS m $ splitS n rho
-splitS n IdS                  = (raiseS n, liftS n EmptyS)
-splitS n (Lift m rho)         = wkS 1 *** liftS 1 $ splitS (n - 1) (liftS (m - 1) rho)
-splitS n EmptyS               = __IMPOSSIBLE__
-
-infixr 4 ++#
-
-(++#) :: DeBruijn a => [a] -> Substitution' a -> Substitution' a
-us ++# rho = foldr consS rho us
-
-prependS :: DeBruijn a => Empty -> [Maybe a] -> Substitution' a -> Substitution' a
-prependS err us rho = foldr f rho us
-  where
-    f Nothing  rho = Strengthen err rho
-    f (Just u) rho = consS u rho
-
-parallelS :: DeBruijn a => [a] -> Substitution' a
-parallelS us = us ++# idS
-
-compactS :: DeBruijn a => Empty -> [Maybe a] -> Substitution' a
-compactS err us = prependS err us idS
-
--- | Γ ⊢ (strengthenS ⊥ |Δ|) : Γ,Δ
-strengthenS :: Empty -> Int -> Substitution' a
-strengthenS err n
-  | n < 0     = __IMPOSSIBLE__
-  | otherwise = iterate (Strengthen err) idS !! n
-
-lookupS :: Subst a a => Substitution' a -> Nat -> a
-lookupS rho i = case rho of
-  IdS                    -> debruijnVar i
-  Wk n IdS               -> let j = i + n in
-                            if  j < 0 then __IMPOSSIBLE__ else debruijnVar j
-  Wk n rho               -> applySubst (raiseS n) (lookupS rho i)
-  u :# rho   | i == 0    -> u
-             | i < 0     -> __IMPOSSIBLE__
-             | otherwise -> lookupS rho (i - 1)
-  Strengthen err rho
-             | i == 0    -> absurd err
-             | i < 0     -> __IMPOSSIBLE__
-             | otherwise -> lookupS rho (i - 1)
-  Lift n rho | i < n     -> debruijnVar i
-             | otherwise -> raise n $ lookupS rho (i - n)
-  EmptyS                 -> __IMPOSSIBLE__
-
----------------------------------------------------------------------------
 -- * Substitution and raising/shifting/weakening
 ---------------------------------------------------------------------------
 
--- | Apply a substitution.
-
--- For terms:
---
---  Γ ⊢ ρ : Δ
---  Δ ⊢ t : σ
--- -----------
--- Γ ⊢ tρ : σρ
-
-class DeBruijn t => Subst t a | a -> t where
-  applySubst :: Substitution' t -> a -> a
-
-raise :: Subst t a => Nat -> a -> a
-raise = raiseFrom 0
-
-raiseFrom :: Subst t a => Nat -> Nat -> a -> a
-raiseFrom n k = applySubst (liftS n $ raiseS k)
-
--- | Replace de Bruijn index i by a 'Term' in something.
-subst :: Subst t a => Int -> t -> a -> a
-subst i u = applySubst $ singletonS i u
+-- | If @permute π : [a]Γ -> [a]Δ@, then @applySubst (renaming _ π) : Term Γ -> Term Δ@
+renaming :: forall a. DeBruijn a => Empty -> Permutation -> Substitution' a
+renaming err p = prependS err gamma $ raiseS $ size p
+  where
+    gamma :: [Maybe a]
+    gamma = inversePermute p (deBruijnVar :: Int -> a)
+    -- gamma = safePermute (invertP (-1) p) $ map deBruijnVar [0..]
 
-strengthen :: Subst t a => Empty -> a -> a
-strengthen err = applySubst (compactS err [Nothing])
+-- | If @permute π : [a]Γ -> [a]Δ@, then @applySubst (renamingR π) : Term Δ -> Term Γ@
+renamingR :: DeBruijn a => Permutation -> Substitution' a
+renamingR p@(Perm n _) = permute (reverseP p) (map deBruijnVar [0..]) ++# raiseS n
 
--- | Replace what is now de Bruijn index 0, but go under n binders.
---   @substUnder n u == subst n (raise n u)@.
-substUnder :: Subst t a => Nat -> t -> a -> a
-substUnder n u = applySubst (liftS n (singletonS 0 u))
+-- | The permutation should permute the corresponding context. (right-to-left list)
+renameP :: Subst t a => Empty -> Permutation -> a -> a
+renameP err p = applySubst (renaming err p)
 
 instance Subst a a => Subst a (Substitution' a) where
   applySubst rho sgm = composeS rho sgm
@@ -722,7 +673,7 @@
     Var i es    -> lookupS rho i `applyE` applySubst rho es
     Lam h m     -> Lam h $ applySubst rho m
     Def f es    -> defApp f [] $ applySubst rho es
-    Con c vs    -> Con c $ applySubst rho vs
+    Con c ci vs -> Con c ci $ applySubst rho vs
     MetaV x es  -> MetaV x $ applySubst rho es
     Lit l       -> Lit l
     Level l     -> levelTm $ applySubst rho l
@@ -778,11 +729,11 @@
     DotP t       -> DotP $ applySubst rho t
     VarP s       -> p
     LitP l       -> p
-    ProjP _      -> p
+    ProjP{}      -> p
 
 instance Subst Term NLPat where
   applySubst rho p = case p of
-    PVar id i -> p
+    PVar id i bvs -> p
     PWild  -> p
     PDef f es -> PDef f $ applySubst rho es
     PLam i u -> PLam i $ applySubst rho u
@@ -790,10 +741,13 @@
     PBoundVar i es -> PBoundVar i $ applySubst rho es
     PTerm u -> PTerm $ applySubst rho u
 
+instance Subst Term NLPType where
+  applySubst rho (NLPType s a) = NLPType (applySubst rho s) (applySubst rho a)
+
 instance Subst Term RewriteRule where
-  applySubst rho (RewriteRule q gamma lhs rhs t) =
+  applySubst rho (RewriteRule q gamma f ps rhs t) =
     RewriteRule q (applySubst rho gamma)
-                  (applySubst (liftS n rho) lhs)
+                f (applySubst (liftS n rho) ps)
                   (applySubst (liftS n rho) rhs)
                   (applySubst (liftS n rho) t)
     where n = size gamma
@@ -809,9 +763,9 @@
 instance Subst Term DisplayTerm where
   applySubst rho (DTerm v)        = DTerm $ applySubst rho v
   applySubst rho (DDot v)         = DDot  $ applySubst rho v
-  applySubst rho (DCon c vs)      = DCon c $ applySubst rho vs
+  applySubst rho (DCon c ci vs)   = DCon c ci $ applySubst rho vs
   applySubst rho (DDef c es)      = DDef c $ applySubst rho es
-  applySubst rho (DWithApp v vs ws) = uncurry3 DWithApp $ applySubst rho (v, vs, ws)
+  applySubst rho (DWithApp v vs es) = uncurry3 DWithApp $ applySubst rho (v, vs, es)
 
 instance Subst t a => Subst t (Tele a) where
   applySubst rho  EmptyTel         = EmptyTel
@@ -833,6 +787,12 @@
     where
       rf x = applySubst rho x
 
+instance Subst Term ModuleParameters where
+  applySubst rho mp = mp { mpSubstitution = applySubst rho $ mpSubstitution mp }
+
+instance Subst Term A.NamedDotPattern where
+  applySubst rho (A.NamedDot x v a) = A.NamedDot x (applySubst rho v) (applySubst rho a)
+
 instance Subst t a => Subst t (Elim' a) where
   applySubst rho e = case e of
     Apply v -> Apply $ applySubst rho v
@@ -857,6 +817,9 @@
 instance Subst t a => Subst t [a] where
   applySubst rho = map (applySubst rho)
 
+instance (Ord k, Subst t a) => Subst t (Map k a) where
+  applySubst rho = fmap (applySubst rho)
+
 instance Subst Term () where
   applySubst _ _ = ()
 
@@ -869,13 +832,8 @@
 instance (Subst t a, Subst t b, Subst t c, Subst t d) => Subst t (a, b, c, d) where
   applySubst rho (x,y,z,u) = (applySubst rho x, applySubst rho y, applySubst rho z, applySubst rho u)
 
-instance Subst Term ClauseBody where
-  applySubst rho (Body t) = Body $ applySubst rho t
-  applySubst rho (Bind b) = Bind $ applySubst rho b
-  applySubst _   NoBody   = NoBody
-
 instance Subst Term Candidate where
-  applySubst rho (Candidate u t eti) = Candidate (applySubst rho u) (applySubst rho t) eti
+  applySubst rho (Candidate u t eti ov) = Candidate (applySubst rho u) (applySubst rho t) eti ov
 
 instance Subst Term EqualityView where
   applySubst rho (OtherType t) = OtherType
@@ -888,7 +846,54 @@
     (applySubst rho a)
     (applySubst rho b)
 
+instance DeBruijn DeBruijnPattern where
+  debruijnNamedVar n i  = VarP $ DBPatVar n i
+  deBruijnView (VarP x) = Just $ dbPatVarIndex x
+  deBruijnView _        = Nothing
+
+fromPatternSubstitution :: PatternSubstitution -> Substitution
+fromPatternSubstitution = fmap patternToTerm
+
+applyPatSubst :: (Subst Term a) => PatternSubstitution -> a -> a
+applyPatSubst = applySubst . fromPatternSubstitution
+
+instance Subst DeBruijnPattern DeBruijnPattern where
+  applySubst IdS p = p
+  applySubst rho p = case p of
+    VarP x       -> useName (dbPatVarName x) $ lookupS rho $ dbPatVarIndex x
+    DotP u       -> DotP $ applyPatSubst rho u
+    ConP c ci ps -> ConP c ci $ applySubst rho ps
+    LitP x       -> p
+    ProjP{}      -> p
+    where
+      useName :: PatVarName -> DeBruijnPattern -> DeBruijnPattern
+      useName n (VarP x) | isUnderscore (dbPatVarName x) = debruijnNamedVar n (dbPatVarIndex x)
+      useName _ x = x
+
 ---------------------------------------------------------------------------
+-- * Projections
+---------------------------------------------------------------------------
+
+-- | @projDropParsApply proj o args = 'projDropPars' proj o `'apply'` args@
+--
+--   This function is an optimization, saving us from construction lambdas we
+--   immediately remove through application.
+projDropParsApply :: Projection -> ProjOrigin -> Args -> Term
+projDropParsApply (Projection proper d r _ lams) o args =
+  case initLast $ getProjLams lams of
+    -- If we have no more abstractions, we must be a record field
+    -- (projection applied already to record value).
+    Nothing -> if proper then Def d $ map Apply args else __IMPOSSIBLE__
+    Just (pars, Arg i y) ->
+      let core = if proper then Lam i $ Abs y $ Var 0 [Proj o d]
+                           else Lam i $ Abs y $ Def d [Apply $ Var 0 [] <$ r] -- Issue2226: get ArgInfo for principal argument from projFromType
+      -- Now drop pars many args
+          (pars', args') = dropCommon pars args
+      -- We only have to abstract over the parameters that exceed the arguments.
+      -- We only have to apply to the arguments that exceed the parameters.
+      in List.foldr (\ (Arg ai x) -> Lam ai . NoAbs x) (core `apply` args') pars'
+
+---------------------------------------------------------------------------
 -- * Telescopes
 ---------------------------------------------------------------------------
 
@@ -1003,112 +1008,11 @@
 instance TeleNoAbs Telescope where
   teleNoAbs tel = teleNoAbs $ telToList tel
 
--- | Dependent least upper bound, to assign a level to expressions
---   like @forall i -> Set i@.
---
---   @dLub s1 \i.s2 = \omega@ if @i@ appears in the rigid variables of @s2@.
-dLub :: Sort -> Abs Sort -> Sort
-dLub s1 (NoAbs _ s2) = sLub s1 s2
-dLub s1 b@(Abs _ s2) = case occurrence 0 s2 of
-  Flexible _    -> DLub s1 b
-  Irrelevantly  -> DLub s1 b
-  NoOccurrence  -> sLub s1 (noabsApp __IMPOSSIBLE__ b)
---  Free.Unused   -> sLub s1 (absApp b __IMPOSSIBLE__) -- triggers Issue784
-  Free.Unused   -> DLub s1 b
-  StronglyRigid -> Inf
-  Unguarded     -> Inf
-  WeaklyRigid   -> Inf
-
----------------------------------------------------------------------------
--- * Functions on abstractions
---   and things we couldn't do before we could define 'absBody'
----------------------------------------------------------------------------
-
--- | Instantiate an abstraction. Strict in the term.
-absApp :: Subst t a => Abs a -> t -> a
-absApp (Abs   _ v) u = subst 0 u v
-absApp (NoAbs _ v) _ = v
-
--- | Instantiate an abstraction. Lazy in the term, which allow it to be
---   __IMPOSSIBLE__ in the case where the variable shouldn't be used but we
---   cannot use 'noabsApp'. Used in Apply.
-lazyAbsApp :: Subst t a => Abs a -> t -> a
-lazyAbsApp (Abs   _ v) u = applySubst (u :# IdS) v  -- Note: do not use consS here!
-lazyAbsApp (NoAbs _ v) _ = v
-
--- | Instantiate an abstraction that doesn't use its argument.
-noabsApp :: Subst t a => Empty -> Abs a -> a
-noabsApp err (Abs   _ v) = strengthen err v
-noabsApp _   (NoAbs _ v) = v
-
-absBody :: Subst t a => Abs a -> a
-absBody (Abs   _ v) = v
-absBody (NoAbs _ v) = raise 1 v
-
-mkAbs :: (Subst t a, Free a) => ArgName -> a -> Abs a
-mkAbs x v | 0 `freeIn` v = Abs x v
-          | otherwise    = NoAbs x (raise (-1) v)
-
-reAbs :: (Subst t a, Free a) => Abs a -> Abs a
-reAbs (NoAbs x v) = NoAbs x v
-reAbs (Abs x v)   = mkAbs x v
-
--- | @underAbs k a b@ applies @k@ to @a@ and the content of
---   abstraction @b@ and puts the abstraction back.
---   @a@ is raised if abstraction was proper such that
---   at point of application of @k@ and the content of @b@
---   are at the same context.
---   Precondition: @a@ and @b@ are at the same context at call time.
-underAbs :: Subst t a => (a -> b -> b) -> a -> Abs b -> Abs b
-underAbs cont a b = case b of
-  Abs   x t -> Abs   x $ cont (raise 1 a) t
-  NoAbs x t -> NoAbs x $ cont a t
-
--- | @underLambdas n k a b@ drops @n@ initial 'Lam's from @b@,
---   performs operation @k@ on @a@ and the body of @b@,
---   and puts the 'Lam's back.  @a@ is raised correctly
---   according to the number of abstractions.
-underLambdas :: Subst Term a => Int -> (a -> Term -> Term) -> a -> Term -> Term
-underLambdas n cont a v = loop n a v where
-  loop 0 a v = cont a v
-  loop n a v = case ignoreSharing v of
-    Lam h b -> Lam h $ underAbs (loop $ n-1) a b
-    _       -> __IMPOSSIBLE__
-
--- | Methods to retrieve the 'clauseBody'.
-class GetBody a where
-  getBody         :: a -> Maybe Term
-  -- ^ Returns the properly raised clause 'Body',
-  --   and 'Nothing' if 'NoBody'.
-  getBodyUnraised :: a -> Maybe Term
-  -- ^ Just grabs the body, without raising the de Bruijn indices.
-  --   This is useful if you want to consider the body in context 'clauseTel'.
-
-instance GetBody ClauseBody where
-  getBody NoBody   = Nothing
-  getBody (Body v) = Just v
-  getBody (Bind b) = getBody $ absBody b
-
-  -- Andreas, 2014-08-25:  The following 'optimization' is WRONG,
-  -- since it does not respect the order of Abs and NoAbs.
-  -- (They do not commute w.r.t. raise!!)
-  --
-  -- getBody = body 0
-  --   where
-  --     -- collect all shiftings and do them in the end in one go
-  --     body :: Int -> ClauseBody -> Maybe Term
-  --     body _ NoBody             = Nothing
-  --     body n (Body v)           = Just $ raise n v
-  --     body n (Bind (NoAbs _ v)) = body (n + 1) v
-  --     body n (Bind (Abs   _ v)) = body n v
-
-  getBodyUnraised NoBody   = Nothing
-  getBodyUnraised (Body v) = Just v
-  getBodyUnraised (Bind b) = getBodyUnraised $ unAbs b  -- Does not raise!
-
-instance GetBody Clause where
-  getBody         = getBody         . clauseBody
-  getBodyUnraised = getBodyUnraised . clauseBody
+-- | In compiled clauses, the variables in the clause body are relative to the
+--   pattern variables (including dot patterns) instead of the clause telescope.
+compiledClauseBody :: Clause -> Maybe Term
+compiledClauseBody cl = applySubst (renamingR perm) $ clauseBody cl
+  where perm = fromMaybe __IMPOSSIBLE__ $ clausePerm cl
 
 ---------------------------------------------------------------------------
 -- * Syntactic equality and order
@@ -1129,8 +1033,6 @@
 deriving instance Ord t => Ord (Blocked t)
 deriving instance Eq Candidate
 
-deriving instance (Subst t a, Eq a)  => Eq  (Elim' a)
-deriving instance (Subst t a, Ord a) => Ord (Elim' a)
 deriving instance (Subst t a, Eq a)  => Eq  (Tele a)
 deriving instance (Subst t a, Ord a) => Ord (Tele a)
 
@@ -1160,7 +1062,7 @@
   Lam h v    == Lam h' v'    = h == h' && v  == v'
   Lit l      == Lit l'       = l == l'
   Def x vs   == Def x' vs'   = x == x' && vs == vs'
-  Con x vs   == Con x' vs'   = x == x' && vs == vs'
+  Con x _ vs == Con x' _ vs' = x == x' && vs == vs'
   Pi a b     == Pi a' b'     = a == a' && b == b'
   Sort s     == Sort s'      = s == s'
   Level l    == Level l'     = l == l'
@@ -1181,7 +1083,7 @@
   Def a b    `compare` Def x y    = compare (a, b) (x, y)
   Def{}      `compare` _          = LT
   _          `compare` Def{}      = GT
-  Con a b    `compare` Con x y    = compare (a, b) (x, y)
+  Con a _ b  `compare` Con x _ y  = compare (a, b) (x, y)
   Con{}      `compare` _          = LT
   _          `compare` Con{}      = GT
   Lit a      `compare` Lit x      = compare a x
@@ -1214,6 +1116,17 @@
   Abs   _ a `compare` Abs   _ b = a `compare` b
   a         `compare` b         = absBody a `compare` absBody b
 
+instance (Subst t a, Eq a)  => Eq  (Elim' a) where
+  Apply  a == Apply  b = a == b
+  Proj _ x == Proj _ y = x == y
+  _ == _ = False
+
+instance (Subst t a, Ord a) => Ord (Elim' a) where
+  Apply  a `compare` Apply  b = a `compare` b
+  Proj _ x `compare` Proj _ y = x `compare` y
+  Apply{}  `compare` Proj{}   = LT
+  Proj{}   `compare` Apply{}  = GT
+
 ---------------------------------------------------------------------------
 -- * Level stuff
 ---------------------------------------------------------------------------
@@ -1241,6 +1154,22 @@
 sLub (DLub a NoAbs{}) c = __IMPOSSIBLE__
 sLub (DLub a (Abs x b)) c = DLub a $ Abs x $ sLub b $ raise 1 c
 sLub a (DLub b c) = DLub (sLub a b) c
+
+-- | Dependent least upper bound, to assign a level to expressions
+--   like @forall i -> Set i@.
+--
+--   @dLub s1 \i.s2 = \omega@ if @i@ appears in the rigid variables of @s2@.
+dLub :: Sort -> Abs Sort -> Sort
+dLub s1 (NoAbs _ s2) = sLub s1 s2
+dLub s1 b@(Abs _ s2) = case occurrence 0 s2 of
+  Flexible _    -> DLub s1 b
+  Irrelevantly  -> DLub s1 b
+  NoOccurrence  -> sLub s1 (noabsApp __IMPOSSIBLE__ b)
+--  Free.Unused   -> sLub s1 (absApp b __IMPOSSIBLE__) -- triggers Issue784
+  Free.Unused   -> DLub s1 b
+  StronglyRigid -> Inf
+  Unguarded     -> Inf
+  WeaklyRigid   -> Inf
 
 lvlView :: Term -> Level
 lvlView v = case ignoreSharing v of
diff --git a/src/full/Agda/TypeChecking/Substitute/Class.hs b/src/full/Agda/TypeChecking/Substitute/Class.hs
new file mode 100644
--- /dev/null
+++ b/src/full/Agda/TypeChecking/Substitute/Class.hs
@@ -0,0 +1,256 @@
+{-# LANGUAGE CPP #-}
+
+module Agda.TypeChecking.Substitute.Class where
+
+import Control.Arrow ((***), second)
+
+import Agda.Syntax.Common
+import Agda.Syntax.Internal
+
+import Agda.TypeChecking.Free
+import Agda.TypeChecking.Substitute.DeBruijn
+
+import Agda.Utils.Empty
+
+#include "undefined.h"
+import Agda.Utils.Impossible
+
+---------------------------------------------------------------------------
+-- * Application
+---------------------------------------------------------------------------
+
+-- | Apply something to a bunch of arguments.
+--   Preserves blocking tags (application can never resolve blocking).
+class Apply t where
+  apply  :: t -> Args -> t
+  applyE :: t -> Elims -> t
+
+  apply t args = applyE t $ map Apply args
+  applyE t es  = apply  t $ map argFromElim es
+    -- precondition: all @es@ are @Apply@s
+
+-- | Apply to some default arguments.
+applys :: Apply t => t -> [Term] -> t
+applys t vs = apply t $ map defaultArg vs
+
+-- | Apply to a single default argument.
+apply1 :: Apply t => t -> Term -> t
+apply1 t u = applys t [ u ]
+
+---------------------------------------------------------------------------
+-- * Abstraction
+---------------------------------------------------------------------------
+
+-- | @(abstract args v) `apply` args --> v[args]@.
+class Abstract t where
+  abstract :: Telescope -> t -> t
+
+---------------------------------------------------------------------------
+-- * Substitution and raising/shifting/weakening
+---------------------------------------------------------------------------
+
+-- | Apply a substitution.
+
+-- For terms:
+--
+--  Γ ⊢ ρ : Δ
+--  Δ ⊢ t : σ
+-- -----------
+-- Γ ⊢ tρ : σρ
+
+class DeBruijn t => Subst t a | a -> t where
+  applySubst :: Substitution' t -> a -> a
+
+raise :: Subst t a => Nat -> a -> a
+raise = raiseFrom 0
+
+raiseFrom :: Subst t a => Nat -> Nat -> a -> a
+raiseFrom n k = applySubst (liftS n $ raiseS k)
+
+-- | Replace de Bruijn index i by a 'Term' in something.
+subst :: Subst t a => Int -> t -> a -> a
+subst i u = applySubst $ singletonS i u
+
+strengthen :: Subst t a => Empty -> a -> a
+strengthen err = applySubst (compactS err [Nothing])
+
+-- | Replace what is now de Bruijn index 0, but go under n binders.
+--   @substUnder n u == subst n (raise n u)@.
+substUnder :: Subst t a => Nat -> t -> a -> a
+substUnder n u = applySubst (liftS n (singletonS 0 u))
+
+---------------------------------------------------------------------------
+-- * Explicit substitutions
+---------------------------------------------------------------------------
+
+-- See Syntax.Internal for the definition.
+
+idS :: Substitution' a
+idS = IdS
+
+wkS :: Int -> Substitution' a -> Substitution' a
+wkS 0 rho        = rho
+wkS n (Wk m rho) = Wk (n + m) rho
+wkS n EmptyS     = EmptyS
+wkS n rho        = Wk n rho
+
+raiseS :: Int -> Substitution' a
+raiseS n = wkS n idS
+
+consS :: DeBruijn a => a -> Substitution' a -> Substitution' a
+consS t (Wk m rho)
+  | Just n <- deBruijnView t,
+    n + 1 == m = wkS (m - 1) (liftS 1 rho)
+consS u rho = seq u (u :# rho)
+
+-- | To replace index @n@ by term @u@, do @applySubst (singletonS n u)@.
+singletonS :: DeBruijn a => Int -> a -> Substitution' a
+singletonS n u = map deBruijnVar [0..n-1] ++# consS u (raiseS n)
+  -- ALT: foldl (\ s i -> deBruijnVar i `consS` s) (consS u $ raiseS n) $ downFrom n
+
+-- | Single substitution without disturbing any deBruijn indices.
+--   @
+--             Γ, A, Δ ⊢ u : A
+--    ---------------------------------
+--   @Γ, A, Δ ⊢ inplace |Δ| u : Γ, A, Δ
+inplaceS :: Subst a a => Int -> a -> Substitution' a
+inplaceS k u = singletonS k u `composeS` liftS (k + 1) (raiseS 1)
+
+-- | Lift a substitution under k binders.
+liftS :: Int -> Substitution' a -> Substitution' a
+liftS 0 rho          = rho
+liftS k IdS          = IdS
+liftS k (Lift n rho) = Lift (n + k) rho
+liftS k rho          = Lift k rho
+
+dropS :: Int -> Substitution' a -> Substitution' a
+dropS 0 rho                = rho
+dropS n IdS                = raiseS n
+dropS n (Wk m rho)         = wkS m (dropS n rho)
+dropS n (u :# rho)         = dropS (n - 1) rho
+dropS n (Strengthen _ rho) = dropS (n - 1) rho
+dropS n (Lift 0 rho)       = __IMPOSSIBLE__
+dropS n (Lift m rho)       = wkS 1 $ dropS (n - 1) $ liftS (m - 1) rho
+dropS n EmptyS             = __IMPOSSIBLE__
+
+-- | @applySubst (ρ `composeS` σ) v == applySubst ρ (applySubst σ v)@
+composeS :: Subst a a => Substitution' a -> Substitution' a -> Substitution' a
+composeS rho IdS = rho
+composeS IdS sgm = sgm
+composeS rho EmptyS = EmptyS
+composeS rho (Wk n sgm) = composeS (dropS n rho) sgm
+composeS rho (u :# sgm) = applySubst rho u :# composeS rho sgm
+composeS rho (Strengthen err sgm) = Strengthen err (composeS rho sgm)
+composeS rho (Lift 0 sgm) = __IMPOSSIBLE__
+composeS (u :# rho) (Lift n sgm) = u :# composeS rho (liftS (n - 1) sgm)
+composeS rho (Lift n sgm) = lookupS rho 0 :# composeS rho (wkS 1 (liftS (n - 1) sgm))
+
+-- If Γ ⊢ ρ : Δ, Θ then splitS |Θ| ρ = (σ, δ), with
+--   Γ ⊢ σ : Δ
+--   Γ ⊢ δ : Θσ
+splitS :: Int -> Substitution' a -> (Substitution' a, Substitution' a)
+splitS 0 rho                  = (rho, EmptyS)
+splitS n (u :# rho)           = second (u :#) $ splitS (n - 1) rho
+splitS n (Strengthen err rho) = second (Strengthen err) $ splitS (n - 1) rho
+splitS n (Lift 0 _)           = __IMPOSSIBLE__
+splitS n (Wk m rho)           = wkS m *** wkS m $ splitS n rho
+splitS n IdS                  = (raiseS n, liftS n EmptyS)
+splitS n (Lift m rho)         = wkS 1 *** liftS 1 $ splitS (n - 1) (liftS (m - 1) rho)
+splitS n EmptyS               = __IMPOSSIBLE__
+
+infixr 4 ++#
+
+(++#) :: DeBruijn a => [a] -> Substitution' a -> Substitution' a
+us ++# rho = foldr consS rho us
+
+prependS :: DeBruijn a => Empty -> [Maybe a] -> Substitution' a -> Substitution' a
+prependS err us rho = foldr f rho us
+  where
+    f Nothing  rho = Strengthen err rho
+    f (Just u) rho = consS u rho
+
+parallelS :: DeBruijn a => [a] -> Substitution' a
+parallelS us = us ++# idS
+
+compactS :: DeBruijn a => Empty -> [Maybe a] -> Substitution' a
+compactS err us = prependS err us idS
+
+-- | Γ ⊢ (strengthenS ⊥ |Δ|) : Γ,Δ
+strengthenS :: Empty -> Int -> Substitution' a
+strengthenS err n
+  | n < 0     = __IMPOSSIBLE__
+  | otherwise = iterate (Strengthen err) idS !! n
+
+lookupS :: Subst a a => Substitution' a -> Nat -> a
+lookupS rho i = case rho of
+  IdS                    -> deBruijnVar i
+  Wk n IdS               -> let j = i + n in
+                            if  j < 0 then __IMPOSSIBLE__ else deBruijnVar j
+  Wk n rho               -> applySubst (raiseS n) (lookupS rho i)
+  u :# rho   | i == 0    -> u
+             | i < 0     -> __IMPOSSIBLE__
+             | otherwise -> lookupS rho (i - 1)
+  Strengthen err rho
+             | i == 0    -> absurd err
+             | i < 0     -> __IMPOSSIBLE__
+             | otherwise -> lookupS rho (i - 1)
+  Lift n rho | i < n     -> deBruijnVar i
+             | otherwise -> raise n $ lookupS rho (i - n)
+  EmptyS                 -> __IMPOSSIBLE__
+
+---------------------------------------------------------------------------
+-- * Functions on abstractions
+--   and things we couldn't do before we could define 'absBody'
+---------------------------------------------------------------------------
+
+-- | Instantiate an abstraction. Strict in the term.
+absApp :: Subst t a => Abs a -> t -> a
+absApp (Abs   _ v) u = subst 0 u v
+absApp (NoAbs _ v) _ = v
+
+-- | Instantiate an abstraction. Lazy in the term, which allow it to be
+--   __IMPOSSIBLE__ in the case where the variable shouldn't be used but we
+--   cannot use 'noabsApp'. Used in Apply.
+lazyAbsApp :: Subst t a => Abs a -> t -> a
+lazyAbsApp (Abs   _ v) u = applySubst (u :# IdS) v  -- Note: do not use consS here!
+lazyAbsApp (NoAbs _ v) _ = v
+
+-- | Instantiate an abstraction that doesn't use its argument.
+noabsApp :: Subst t a => Empty -> Abs a -> a
+noabsApp err (Abs   _ v) = strengthen err v
+noabsApp _   (NoAbs _ v) = v
+
+absBody :: Subst t a => Abs a -> a
+absBody (Abs   _ v) = v
+absBody (NoAbs _ v) = raise 1 v
+
+mkAbs :: (Subst t a, Free a) => ArgName -> a -> Abs a
+mkAbs x v | 0 `freeIn` v = Abs x v
+          | otherwise    = NoAbs x (raise (-1) v)
+
+reAbs :: (Subst t a, Free a) => Abs a -> Abs a
+reAbs (NoAbs x v) = NoAbs x v
+reAbs (Abs x v)   = mkAbs x v
+
+-- | @underAbs k a b@ applies @k@ to @a@ and the content of
+--   abstraction @b@ and puts the abstraction back.
+--   @a@ is raised if abstraction was proper such that
+--   at point of application of @k@ and the content of @b@
+--   are at the same context.
+--   Precondition: @a@ and @b@ are at the same context at call time.
+underAbs :: Subst t a => (a -> b -> b) -> a -> Abs b -> Abs b
+underAbs cont a b = case b of
+  Abs   x t -> Abs   x $ cont (raise 1 a) t
+  NoAbs x t -> NoAbs x $ cont a t
+
+-- | @underLambdas n k a b@ drops @n@ initial 'Lam's from @b@,
+--   performs operation @k@ on @a@ and the body of @b@,
+--   and puts the 'Lam's back.  @a@ is raised correctly
+--   according to the number of abstractions.
+underLambdas :: Subst Term a => Int -> (a -> Term -> Term) -> a -> Term -> Term
+underLambdas n cont a v = loop n a v where
+  loop 0 a v = cont a v
+  loop n a v = case ignoreSharing v of
+    Lam h b -> Lam h $ underAbs (loop $ n-1) a b
+    _       -> __IMPOSSIBLE__
+
diff --git a/src/full/Agda/TypeChecking/Substitute/DeBruijn.hs b/src/full/Agda/TypeChecking/Substitute/DeBruijn.hs
new file mode 100644
--- /dev/null
+++ b/src/full/Agda/TypeChecking/Substitute/DeBruijn.hs
@@ -0,0 +1,54 @@
+
+module Agda.TypeChecking.Substitute.DeBruijn where
+
+import Agda.Syntax.Common
+import Agda.Syntax.Internal
+
+-- | Things we can substitute for a variable.
+--   Needs to be able to represent variables, e.g. for substituting under binders.
+class DeBruijn a where
+
+  -- | Produce a variable without name suggestion.
+  deBruijnVar  :: Int -> a
+  deBruijnVar = debruijnNamedVar underscore
+
+  -- | Produce a variable with name suggestion.
+  debruijnNamedVar :: String -> Int -> a
+  debruijnNamedVar _ = deBruijnVar
+
+  -- | Are we dealing with a variable?
+  --   If yes, what is its index?
+  deBruijnView :: a -> Maybe Int
+
+-- | We can substitute @Term@s for variables.
+instance DeBruijn Term where
+  deBruijnVar = var
+  deBruijnView u =
+    case ignoreSharing u of
+      Var i [] -> Just i
+      Level l -> deBruijnView l
+      _ -> Nothing
+
+instance DeBruijn LevelAtom where
+  deBruijnVar = NeutralLevel ReallyNotBlocked . deBruijnVar
+  deBruijnView l =
+    case l of
+      NeutralLevel _ u -> deBruijnView u
+      UnreducedLevel u -> deBruijnView u
+      MetaLevel{}    -> Nothing
+      BlockedLevel{} -> Nothing
+
+instance DeBruijn PlusLevel where
+  deBruijnVar = Plus 0 . deBruijnVar
+  deBruijnView l =
+    case l of
+      Plus 0 a -> deBruijnView a
+      _ -> Nothing
+
+instance DeBruijn Level where
+  deBruijnVar i = Max [deBruijnVar i]
+  deBruijnView l =
+    case l of
+      Max [p] -> deBruijnView p
+      _ -> Nothing
+
diff --git a/src/full/Agda/TypeChecking/Substitute/Pattern.hs b/src/full/Agda/TypeChecking/Substitute/Pattern.hs
deleted file mode 100644
--- a/src/full/Agda/TypeChecking/Substitute/Pattern.hs
+++ /dev/null
@@ -1,43 +0,0 @@
-{-# LANGUAGE CPP,
-             FlexibleContexts,
-             FlexibleInstances,
-             MultiParamTypeClasses,
-             TypeSynonymInstances #-}
-{-# OPTIONS_GHC -fno-warn-orphans #-}
-module Agda.TypeChecking.Substitute.Pattern where
-
-import Data.Maybe
-import Data.Traversable (traverse)
-
-import Agda.Syntax.Common
-import Agda.Syntax.Internal as I
-import Agda.Syntax.Internal.Pattern
-
-import Agda.TypeChecking.Substitute
-
-#include "undefined.h"
-import Agda.Utils.Impossible
-
-instance DeBruijn DeBruijnPattern where
-  debruijnNamedVar n i      = VarP (i,n)
-  debruijnView (VarP (i,_)) = Just i
-  debruijnView _            = Nothing
-
-fromPatternSubstitution :: PatternSubstitution -> Substitution
-fromPatternSubstitution = fmap patternToTerm
-
-applyPatSubst :: (Subst Term a) => PatternSubstitution -> a -> a
-applyPatSubst = applySubst . fromPatternSubstitution
-
-instance Subst DeBruijnPattern DeBruijnPattern where
-  applySubst IdS p = p
-  applySubst rho p = case p of
-    VarP (i,n)   -> useName n $ lookupS rho i
-    DotP u       -> DotP $ applyPatSubst rho u
-    ConP c ci ps -> ConP c ci $ applySubst rho ps
-    LitP x       -> p
-    ProjP f      -> p
-    where
-      useName :: PatVarName -> DeBruijnPattern -> DeBruijnPattern
-      useName n (VarP (i,"_")) = VarP (i,n)
-      useName _ x = x
diff --git a/src/full/Agda/TypeChecking/SyntacticEquality.hs b/src/full/Agda/TypeChecking/SyntacticEquality.hs
--- a/src/full/Agda/TypeChecking/SyntacticEquality.hs
+++ b/src/full/Agda/TypeChecking/SyntacticEquality.hs
@@ -1,8 +1,4 @@
 {-# LANGUAGE CPP #-}
-{-# LANGUAGE FlexibleContexts #-}
-{-# LANGUAGE FlexibleInstances #-}
-{-# LANGUAGE PatternGuards #-}
-{-# LANGUAGE TupleSections #-}
 {-# LANGUAGE UndecidableInstances #-}
 
 -- | A syntactic equality check that takes meta instantiations into account,
@@ -102,7 +98,7 @@
     -- TODO: preserve sharing!
     case (ignoreSharing v, ignoreSharing v') of
       (Var   i vs, Var   i' vs') | i == i' -> Var i   <$$> synEq vs vs'
-      (Con   c vs, Con   c' vs') | c == c' -> Con c   <$$> synEq vs vs'
+      (Con c ci vs,Con c' ci' vs') | c == c' -> Con c (bestConInfo ci ci') <$$> synEq vs vs'
       (Def   f vs, Def   f' vs') | f == f' -> Def f   <$$> synEq vs vs'
       (MetaV x vs, MetaV x' vs') | x == x' -> MetaV x <$$> synEq vs vs'
       (Lit   l   , Lit   l'    ) | l == l' -> pure2 $ v
@@ -168,7 +164,7 @@
 instance SynEq a => SynEq (Elim' a) where
   synEq e e' =
     case (e, e') of
-      (Proj f , Proj f' ) | f == f' -> pure2 e
+      (Proj _ f, Proj _ f') | f == f' -> pure2 e
       (Apply a, Apply a') -> Apply <$$> synEq a a'
       _                   -> inequal (e, e')
 
@@ -197,6 +193,6 @@
   synEq (Dom ai a) (Dom ai' a') = Dom <$$> synEq ai ai' <**> synEq a a'
 
 instance SynEq ArgInfo where
-  synEq ai@(ArgInfo h r) ai'@(ArgInfo h' r')
-    | h == h', r == r' = pure2 ai
-    | otherwise        = inequal (ai, ai')
+  synEq ai@(ArgInfo h r o v) ai'@(ArgInfo h' r' o' v')
+    | h == h', r == r', v == v' = pure2 ai
+    | otherwise                 = inequal (ai, ai')
diff --git a/src/full/Agda/TypeChecking/Telescope.hs b/src/full/Agda/TypeChecking/Telescope.hs
--- a/src/full/Agda/TypeChecking/Telescope.hs
+++ b/src/full/Agda/TypeChecking/Telescope.hs
@@ -1,17 +1,17 @@
 {-# LANGUAGE CPP #-}
 {-# LANGUAGE ScopedTypeVariables #-}
 
-#if __GLASGOW_HASKELL__ >= 710
-{-# LANGUAGE FlexibleContexts #-}
-#endif
-
 module Agda.TypeChecking.Telescope where
 
-import Control.Applicative
-import Control.Monad (forM_, unless, guard)
+import Prelude hiding (null)
+
+import Control.Applicative hiding (empty)
+import Control.Monad (unless, guard)
+
+import Data.Foldable (forM_)
 import Data.IntSet (IntSet)
 import qualified Data.IntSet as IntSet
-import Data.List
+import Data.List hiding (null)
 import Data.Maybe
 
 import Agda.Syntax.Common
@@ -22,11 +22,11 @@
 import Agda.TypeChecking.Monad
 import Agda.TypeChecking.Reduce
 import Agda.TypeChecking.Substitute
-import Agda.TypeChecking.Substitute.Pattern
 import Agda.TypeChecking.Free
 
 import Agda.Utils.Functor
 import Agda.Utils.List
+import Agda.Utils.Null
 import Agda.Utils.Permutation
 import Agda.Utils.Size
 import Agda.Utils.Tuple
@@ -62,22 +62,6 @@
       Shared{} -> __IMPOSSIBLE__
       DontCare{} -> __IMPOSSIBLE__
 
--- | The permutation should permute the corresponding telescope. (left-to-right list)
-renameP :: Subst t a => Permutation -> a -> a
-renameP p = applySubst (renaming p)
-
--- | If @permute π : [a]Γ -> [a]Δ@, then @applySubst (renaming π) : Term Γ -> Term Δ@
-renaming :: forall a. DeBruijn a => Permutation -> Substitution' a
-renaming p = prependS __IMPOSSIBLE__ gamma $ raiseS $ size p
-  where
-    gamma :: [Maybe a]
-    gamma = inversePermute p (debruijnVar :: Int -> a)
-    -- gamma = safePermute (invertP (-1) p) $ map deBruijnVar [0..]
-
--- | If @permute π : [a]Γ -> [a]Δ@, then @applySubst (renamingR π) : Term Δ -> Term Γ@
-renamingR :: DeBruijn a => Permutation -> Substitution' a
-renamingR p@(Perm n _) = permute (reverseP p) (map debruijnVar [0..]) ++# raiseS n
-
 -- | Flatten telescope: (Γ : Tel) -> [Type Γ]
 flattenTel :: Telescope -> [Dom Type]
 flattenTel EmptyTel          = []
@@ -130,13 +114,39 @@
   | (i, Dom info (name,_)) <- zip (downFrom $ size l) l ]
   where l = telToList tel
 
+-- | A variant of `teleNamedArgs` which takes the argument names (and the argument info)
+--   from the first telescope and the variable names from the second telescope.
+--
+--   Precondition: the two telescopes have the same length.
+tele2NamedArgs :: (DeBruijn a) => Telescope -> Telescope -> [NamedArg a]
+tele2NamedArgs tel0 tel =
+  [ Arg info (Named (Just $ Ranged noRange $ argNameToString argName) (debruijnNamedVar varName i))
+  | (i, Dom info (argName,_), Dom _ (varName,_)) <- zip3 (downFrom $ size l) l0 l ]
+  where
+  l  = telToList tel
+  l0 = telToList tel0
+
 -- | Permute telescope: permutes or drops the types in the telescope according
 --   to the given permutation. Assumes that the permutation preserves the
 --   dependencies in the telescope.
+--
+--   For example (Andreas, 2016-12-18, issue #2344):
+--   @
+--     tel                     = (A : Set) (X : _18 A) (i : Fin (_m_23 A X))
+--     tel (de Bruijn)         = 2:Set, 1:_18 @0, 0:Fin(_m_23 @1 @0)
+--     flattenTel tel          = 2:Set, 1:_18 @0, 0:Fin(_m_23 @1 @0) |- [ Set, _18 @2, Fin (_m_23 @2 @1) ]
+--     perm                    = 0,1,2 -> 0,1  (picks the first two)
+--     renaming _ perm         = [var 0, var 1, error]  -- THE WRONG RENAMING!
+--     renaming _ (flipP perm) = [error, var 1, var 0]  -- The correct renaming!
+--     apply to flattened tel  = ... |- [ Set, _18 @1, Fin (_m_23 @1 @0) ]
+--     permute perm it         = ... |- [ Set, _18 @1 ]
+--     unflatten (de Bruijn)   = 1:Set, 0: _18 @0
+--     unflatten               = (A : Set) (X : _18 A)
+--  @
 permuteTel :: Permutation -> Telescope -> Telescope
 permuteTel perm tel =
   let names = permute perm $ teleNames tel
-      types = permute perm $ renameP perm $ flattenTel tel
+      types = permute perm $ renameP __IMPOSSIBLE__ (flipP perm) $ flattenTel tel
   in  unflattenTel names types
 
 -- | Recursively computes dependencies of a set of variables in a given
@@ -185,7 +195,7 @@
 
     perm  = Perm n $ map (n-1-) $ VarSet.toDescList is ++ VarSet.toDescList isC
 
-    ts1   = renameP (reverseP perm) (permute perm ts0)
+    ts1   = renameP __IMPOSSIBLE__ (reverseP perm) (permute perm ts0)
 
     tel'  = unflattenTel (permute perm names) ts1
 
@@ -219,7 +229,7 @@
 
     perm  = Perm n $ map (n-1-) $ is ++ isC
 
-    ts1   = renameP (reverseP perm) (permute perm ts0)
+    ts1   = renameP __IMPOSSIBLE__ (reverseP perm) (permute perm ts0)
 
     tel'  = unflattenTel (permute perm names) ts1
 
@@ -258,8 +268,8 @@
     perm  = Perm n $ is    -- works on de Bruijn indices
     rho   = reverseP perm  -- works on de Bruijn levels
 
-    u'    = renameP perm u -- Γ' ⊢ u' : A'
-    us    = map (\i -> fromMaybe (DotP u') (debruijnVar <$> findIndex (i ==) is)) [ 0 .. n-1 ]
+    u1    = renameP __IMPOSSIBLE__ perm u -- Γ' ⊢ u1 : A'
+    us    = map (\i -> fromMaybe (DotP u1) (deBruijnVar <$> findIndex (i ==) is)) [ 0 .. n-1 ]
     sigma = us ++# raiseS (n-1)
 
     ts1   = permute rho $ applyPatSubst sigma ts0
@@ -280,10 +290,11 @@
                     splitExactlyAt k $ telToList gamma
 
     cpi         = ConPatternInfo
-      { conPRecord = Just ConPImplicit
+      { conPRecord = Just ConOSystem
       , conPType   = Just $ snd <$> argFromDom a
       }
-    cdelta      = ConP c cpi $ teleNamedArgs delta    -- Γ₁Δ ⊢ c Δ : D pars
+    cargs       = map (setOrigin Inserted) $ teleNamedArgs delta
+    cdelta      = ConP c cpi cargs                    -- Γ₁Δ ⊢ c Δ : D pars
     rho0        = consS cdelta $ raiseS (size delta)  -- Γ₁Δ ⊢ ρ₀ : Γ₁(x : D pars)
     rho         = liftS (size ts2) rho0               -- Γ₁ΔΓ₂ρ₀ ⊢ ρ : Γ₁(x : D pars)Γ₂
 
diff --git a/src/full/Agda/TypeChecking/Telescope.hs-boot b/src/full/Agda/TypeChecking/Telescope.hs-boot
--- a/src/full/Agda/TypeChecking/Telescope.hs-boot
+++ b/src/full/Agda/TypeChecking/Telescope.hs-boot
@@ -3,5 +3,7 @@
 
 import Agda.Syntax.Internal
 import Agda.TypeChecking.Monad.Base
+import Agda.TypeChecking.Substitute
 
 piApplyM :: Type -> Args -> TCM Type
+telView :: Type -> TCM TelView
diff --git a/src/full/Agda/TypeChecking/Test/Generators.hs b/src/full/Agda/TypeChecking/Test/Generators.hs
deleted file mode 100644
--- a/src/full/Agda/TypeChecking/Test/Generators.hs
+++ /dev/null
@@ -1,558 +0,0 @@
-{-# LANGUAGE CPP                    #-}
-{-# LANGUAGE FlexibleContexts       #-}
-{-# LANGUAGE FlexibleInstances      #-}
-{-# LANGUAGE FunctionalDependencies #-}
-{-# LANGUAGE MultiParamTypeClasses  #-}
-{-# LANGUAGE UndecidableInstances   #-}
-
-module Agda.TypeChecking.Test.Generators where
-
-import Control.Applicative
-import Control.Monad.State
-import qualified Data.List as List (sort, nub)
-
-import Agda.Syntax.Position
-import Agda.Syntax.Common
-import Agda.Syntax.Literal
-import Agda.Syntax.Fixity
-import Agda.Syntax.Internal as I
-import qualified Agda.Syntax.Concrete.Name as C
-
-import Agda.TypeChecking.Free
-import Agda.TypeChecking.Substitute
-
-import Agda.Utils.QuickCheck hiding (Args)
-import Agda.Utils.TestHelpers
-import qualified Agda.Utils.VarSet as Set
-
-#include "undefined.h"
-import Agda.Utils.Impossible
-
-data TermConfiguration = TermConf
-      { tcDefinedNames     :: [QName]
-      , tcConstructorNames :: [QName]
-      , tcProjectionNames  :: [QName]
-      , tcFreeVariables    :: [Nat]
-      , tcLiterals         :: UseLiterals
-      , tcFrequencies      :: Frequencies
-      , tcFixSize          :: Maybe Int
-        -- ^ Maximum size of the generated element. When @Nothing@ this value
-        --   is initialized from the 'Test.QuickCheck.size' parameter.
-      , tcIsType           :: Bool
-        -- ^ When this is true no lambdas, literals, or constructors are
-        --   generated
-      }
-  deriving Show
-
-data Frequencies = Freqs
-      { hiddenFreqs :: HiddenFreqs
-      , elimFreqs   :: ElimFreqs
-      , sortFreqs   :: SortFreqs
-      , termFreqs   :: TermFreqs
-      }
-  deriving Show
-
-data TermFreqs = TermFreqs
-      { varFreq :: Int
-      , defFreq :: Int
-      , conFreq :: Int
-      , litFreq  :: Int
-      , sortFreq :: Int
-      , lamFreq  :: Int
-      , piFreq   :: Int
-      , funFreq  :: Int
-      }
-  deriving Show
-
-data ElimFreqs = ElimFreqs
-      { applyFreq :: Int
-      , projFreq  :: Int
-      }
-  deriving Show
-
-data HiddenFreqs = HiddenFreqs
-      { hiddenFreq    :: Int
-      , notHiddenFreq :: Int
-      }
-  deriving Show
-
-data SortFreqs = SortFreqs
-      { setFreqs :: [Int]
-      , propFreq :: Int
-      }
-  deriving Show
-
-defaultFrequencies :: Frequencies
-defaultFrequencies = Freqs
-      { termFreqs   = TermFreqs   { varFreq = 24, defFreq = 8, conFreq = 8, litFreq = 1, sortFreq = 2, lamFreq = 10, piFreq = 5, funFreq = 5 }
-      , elimFreqs   = ElimFreqs   { applyFreq = 9, projFreq = 1 }
-      , hiddenFreqs = HiddenFreqs { hiddenFreq = 1, notHiddenFreq = 5 }
-      , sortFreqs   = SortFreqs   { setFreqs = [3, 1], propFreq = 1 }
-      }
-
-noProp :: TermConfiguration -> TermConfiguration
-noProp conf = conf { tcFrequencies = fq { sortFreqs = sfq { propFreq = 0 } } }
-  where
-    fq  = tcFrequencies conf
-    sfq = sortFreqs fq
-
-data UseLiterals = UseLit
-      { useLitInt    :: Bool
-      , useLitFloat  :: Bool
-      , useLitString :: Bool
-      , useLitChar   :: Bool
-      }
-  deriving Show
-
-noLiterals :: UseLiterals
-noLiterals = UseLit False False False False
-
-fixSizeConf :: Int -> TermConfiguration -> TermConfiguration
-fixSizeConf n conf = conf { tcFixSize = Just n }
-
-resizeConf :: (Int -> Int) -> TermConfiguration -> TermConfiguration
-resizeConf f conf = conf { tcFixSize = fmap f $ tcFixSize conf}
-
-decrConf :: TermConfiguration -> TermConfiguration
-decrConf = resizeConf (flip (-) 1)
-
-divConf :: TermConfiguration -> Int -> TermConfiguration
-divConf conf k = resizeConf (`div` k) conf
-
-isTypeConf :: TermConfiguration -> TermConfiguration
-isTypeConf conf = conf { tcIsType = True }
-
-isntTypeConf :: TermConfiguration -> TermConfiguration
-isntTypeConf conf = conf { tcIsType = False }
-
-extendConf :: TermConfiguration -> TermConfiguration
-extendConf conf = conf { tcFreeVariables = 0 : map (1+) (tcFreeVariables conf) }
-
-extendWithTelConf :: Telescope -> TermConfiguration -> TermConfiguration
-extendWithTelConf tel conf = foldr (const extendConf) conf (telToList tel)
-
-makeConfiguration :: [RawName] -> [RawName] -> [RawName] -> [Nat] -> TermConfiguration
-makeConfiguration ds cs ps vs = TermConf
-  { tcDefinedNames     = defs
-  , tcConstructorNames = cons
-  , tcProjectionNames  = projs
-  , tcFreeVariables    = List.sort $ List.nub vs
-  , tcFrequencies      = defaultFrequencies
-  , tcLiterals         = noLiterals
-  , tcFixSize          = Nothing
-  , tcIsType           = False
-  }
-  where
-    (defs, cons, projs) = flip evalState 0 $ do
-      (,,) <$> mapM mkName ds <*> mapM mkName cs <*> mapM mkName ps
-
-    tick     = do x <- get; put (x + 1); return x
-    mkName s = do
-      n <- tick
-      return $ QName { qnameModule = MName []
-                     , qnameName   = Name
-                        { nameId          = NameId n 1
-                        , nameConcrete    = C.Name noRange [C.Id s]
-                        , nameBindingSite = noRange
-                        , nameFixity      = noFixity'
-                        }
-                      }
-
-class GenC a where
-  genC :: TermConfiguration -> Gen a
-
-newtype YesType a   = YesType   { unYesType :: a     }
-newtype NoType  a   = NoType    { unNoType  :: a     }
-newtype VarName     = VarName   { unVarName :: Nat   }
-newtype DefName     = DefName   { unDefName :: QName }
-newtype ConName     = ConName   { unConName :: ConHead }
-newtype ProjName    = ProjName  { unProjName :: QName }
-newtype SizedList a = SizedList { unSizedList :: [a] }
-
-fixSize :: TermConfiguration -> Gen a -> Gen a
-fixSize conf g = sized $ \n -> resize (maybe n id $ tcFixSize conf) g
-
-instance GenC a => GenC (SizedList a) where
-  genC conf = do
-    n <- fixSize conf natural
-    SizedList <$> vectorOf n (genC $ divConf conf n)
-
-instance GenC a => GenC [a] where
-  genC conf = do
-    n <- natural
-    vectorOf n $ genC $ divConf conf n
-
-instance (GenC a, GenC b) => GenC (a, b) where
-  genC conf = (,) <$> genC conf2 <*> genC conf2
-    where
-      conf2 = divConf conf 2
-
-instance GenC Range where
-  genC _ = return noRange
-
-instance GenC Hiding where
-  genC conf = frequency [ (hideF, return Hidden), (nohideF, return NotHidden) ]
-    where
-      HiddenFreqs {hiddenFreq = hideF, notHiddenFreq = nohideF } =
-        hiddenFreqs $ tcFrequencies conf
-
-instance GenC a => GenC (Arg a) where
-  genC conf = (\ (h, a) -> Arg (setHiding h defaultArgInfo) a) <$> genC conf
-
-instance GenC a => GenC (Dom a) where
-  genC conf = (\ (h, a) -> Dom (setHiding h defaultArgInfo) a) <$> genC conf
-
-instance GenC a => GenC (Abs a) where
-  genC conf = Abs x <$> genC (extendConf conf)
-    where x = stringToArgName "x"
-
-instance GenC a => GenC (Elim' a) where
-  genC conf = frequency [ (applyF, Apply <$> genC conf)
-                        , (projF, Proj . unProjName <$> genC conf) ]
-    where
-      ElimFreqs {applyFreq = applyF, projFreq = projF } =
-        elimFreqs $ tcFrequencies conf
-
-instance GenC DefName where
-  genC conf = DefName  <$> do elements $ tcDefinedNames conf
-
-instance GenC ProjName where
-  genC conf = ProjName <$> do elements $ tcProjectionNames conf
-
-genArgs :: TermConfiguration -> Gen Args
-genArgs conf = unSizedList <$> genC (isntTypeConf conf)
-
-genElims :: TermConfiguration -> Gen Elims
-genElims conf = unSizedList <$> genC (isntTypeConf conf)
-
-instance GenC Sort where
-  genC conf = frequency $
-    (propF, return Prop) :
-    zip setFs (map (return . mkType) [0..])
-    where
-      freq f = f $ tcFrequencies conf
-      setFs = freq (setFreqs . sortFreqs)
-      propF = freq (propFreq . sortFreqs)
-
-instance GenC Char where
-  genC _ = elements [' '..'~'] -- TODO
-
-instance GenC Double where
-  genC _ = arbitrary
-
-instance GenC Integer where
-  genC _ = arbitrary
-
-instance GenC Literal where
-  genC conf = oneof (concat $ zipWith gen useLits
-              [ uncurry LitNat    <$> genC conf
-              , uncurry LitFloat  <$> genC conf
-              , uncurry LitString <$> genC conf
-              , uncurry LitChar   <$> genC conf
-              ]
-           )
-    where
-      useLits = map ($ tcLiterals conf) [ useLitInt, useLitFloat, useLitString, useLitChar ]
-
-      gen True  g = [g]
-      gen False g = []
-
-instance GenC Telescope where
-  genC conf = do
-    n <- fixSize conf natural
-    let confs = take n $ iterate extendConf (divConf conf n)
-    telFromList <$> mapM genC confs
-
-instance GenC Type where
-  genC conf = El <$> genC conf <*> genC (isTypeConf conf)
-
-instance GenC Term where
-  genC conf = case tcFixSize conf of
-      Nothing -> sized $ \n -> genC $ fixSizeConf n conf
-      Just n | n <= 0    -> genLeaf
-             | otherwise -> frequency
-        [ (varF, genVar $ genElims conf)
-        , (defF, genDef $ genElims conf)
-        , (conF, genCon $ genArgs conf)
-        , (litF,  Lit <$> genC conf)
-        , (sortF, Sort <$> genC conf)
-        , (lamF,  genLam)
-        , (piF,   genPi)
-        ]
-    where
-      defs    = tcDefinedNames conf
-      cons    = tcConstructorNames conf
-      vars    = tcFreeVariables conf
-      freq f  = f $ tcFrequencies conf
-      isType  = tcIsType conf
-      useLits = map ($ tcLiterals conf) [ useLitInt, useLitFloat, useLitString, useLitChar ]
-
-      varF  | null vars = 0
-            | otherwise = freq (varFreq . termFreqs)
-      defF  | null defs = 0
-            | otherwise = freq (defFreq . termFreqs)
-      conF  | null cons || isType = 0
-            | otherwise           = freq (conFreq . termFreqs)
-      litF  | or useLits && not isType = freq (litFreq . termFreqs)
-            | otherwise             = 0
-      lamF  | isType    = 0
-            | otherwise = freq (lamFreq  . termFreqs)
-      sortF = freq (sortFreq . termFreqs)
-      piF   = freq (piFreq   . termFreqs)
-
-      genLam :: Gen Term
-      genLam = Lam <$> (flip setHiding defaultArgInfo <$> genC conf) <*> genC (isntTypeConf $ decrConf conf)
-
-      genPi :: Gen Term
-      genPi = uncurry Pi <$> genC conf
-
-      genVar, genDef :: Gen Elims -> Gen Term
-      genVar args = Var <$> elements vars <*> args
-      genDef args = Def <$> elements defs <*> args
-
-      genCon :: Gen Args -> Gen Term
-      genCon args = Con <$> ((\ c -> ConHead c Inductive []) <$> elements cons) <*> args
-
-      genLeaf :: Gen Term
-      genLeaf = frequency
-        [ (varF, genVar $ return [])
-        , (defF, genDef $ return [])
-        , (conF, genCon $ return [])
-        , (litF,  Lit  <$> genC conf)
-        , (sortF, Sort <$> genC conf)
-        ]
-
--- | Only generates default configurations. Names and free variables varies.
-genConf :: Gen TermConfiguration
-genConf = do
-  ds <- listOf $ elements defs
-  cs <- listOf $ elements cons
-  ps <- listOf1 $ elements projs
-  vs <- listOf natural
-  return $ makeConfiguration ds cs ps vs
-  where
-    defs = [ stringToRawName [c] | c <- ['a'..'n'] ++ ['r'..'z'] ]
-    cons = [ stringToRawName [c] | c <- ['A'..'Z'] ]
-    projs= [ stringToRawName [c] | c <- ['o'..'q'] ]
-
-instance Arbitrary TermConfiguration where
-  arbitrary   = genConf
-
--- Shrinking --------------------------------------------------------------
-
-class ShrinkC a b | a -> b where
-  shrinkC  :: TermConfiguration -> a -> [b]
-  noShrink :: a -> b
-
-instance ShrinkC a b => ShrinkC (YesType a) b where
-  shrinkC conf (YesType x) = shrinkC (isTypeConf conf) x
-  noShrink (YesType x) = noShrink x
-
-instance ShrinkC a b => ShrinkC (NoType a) b where
-  shrinkC conf (NoType x) = shrinkC (isntTypeConf conf) x
-  noShrink (NoType x) = noShrink x
-
-instance ShrinkC a b => ShrinkC [a] [b] where
-  noShrink        = map noShrink
-  shrinkC conf xs = noShrink (removeChunks xs) ++ shrinkOne xs
-   where
-    -- Code stolen from Test.QuickCheck.Arbitrary
-    removeChunks xs = rem (length xs) xs
-     where
-      rem 0 _  = []
-      rem 1 _  = [[]]
-      rem n xs = xs1
-               : xs2
-               : ( [ xs1' ++ xs2 | xs1' <- rem n1 xs1, not (null xs1') ]
-             `ilv` [ xs1 ++ xs2' | xs2' <- rem n2 xs2, not (null xs2') ]
-                 )
-       where
-        n1  = n `div` 2
-        xs1 = take n1 xs
-        n2  = n - n1
-        xs2 = drop n1 xs
-
-        []     `ilv` ys     = ys
-        xs     `ilv` []     = xs
-        (x:xs) `ilv` (y:ys) = x : y : (xs `ilv` ys)
-
-    shrinkOne []     = []
-    shrinkOne (x:xs) = [ x' : noShrink xs | x'  <- shrinkC conf x ]
-                    ++ [ noShrink x : xs' | xs' <- shrinkOne xs ]
-
-instance (ShrinkC a a', ShrinkC b b') => ShrinkC (a, b) (a', b') where
-  noShrink (x, y) = (noShrink x, noShrink y)
-  shrinkC conf (x, y) =
-    [ (x', noShrink y) | x' <- shrinkC conf x ] ++
-    [ (noShrink x, y') | y' <- shrinkC conf y ]
-
-instance ShrinkC VarName Nat where
-  shrinkC conf (VarName x) = [ y | y <- tcFreeVariables conf, y < x ]
-  noShrink = unVarName
-
-instance ShrinkC DefName QName where
-  shrinkC conf (DefName c) = takeWhile (/= c) $ tcDefinedNames conf
-  noShrink = unDefName
-
-instance ShrinkC ConName ConHead where
-  shrinkC conf (ConName (ConHead{conName = c})) = map (\ c -> ConHead c Inductive []) $ takeWhile (/= c) $ tcConstructorNames conf
-  noShrink = unConName
-
-instance ShrinkC Literal Literal where
-  shrinkC _ (LitNat _ 0) = []
-  shrinkC conf l         = LitNat noRange 0 : case l of
-      LitNat    r n -> LitNat    r <$> shrink n
-      LitString r s -> LitString r <$> shrinkC conf s
-      LitChar   r c -> LitChar   r <$> shrinkC conf c
-      LitFloat  r x -> LitFloat  r <$> shrink x
-      LitQName  r x -> []
-      LitMeta{}     -> []
-  noShrink = id
-
-instance ShrinkC Char Char where
-  shrinkC _ 'a' = []
-  shrinkC _ _   = ['a']
-  noShrink = id
-
-instance ShrinkC Hiding Hiding where
-  shrinkC _ Hidden    = [NotHidden]
-  shrinkC _ Instance  = [Instance]
-  shrinkC _ NotHidden = []
-  noShrink = id
-
-instance ShrinkC a b => ShrinkC (Abs a) (Abs b) where
-  shrinkC conf (NoAbs s x) = NoAbs s <$> shrinkC conf x
-  shrinkC conf (Abs   s x) = Abs s <$> shrinkC (extendConf conf) x
-  noShrink = fmap noShrink
-
-instance ShrinkC a b => ShrinkC (Arg a) (Arg b) where
-  shrinkC conf (Arg info x) = (\ (h,x) -> Arg (setHiding h info) x) <$> shrinkC conf (argInfoHiding info, x)
-  noShrink = fmap noShrink
-
-instance ShrinkC a b => ShrinkC (Dom a) (Dom b) where
-  shrinkC conf (Dom info x) = (\ (h,x) -> Dom (setHiding h info) x) <$> shrinkC conf (argInfoHiding info, x)
-  noShrink = fmap noShrink
-
-instance ShrinkC a b => ShrinkC (Blocked a) (Blocked b) where
-  shrinkC conf (Blocked m x)    = Blocked m <$> shrinkC conf x
-  shrinkC conf (NotBlocked r x) = NotBlocked r <$> shrinkC conf x
-  noShrink = fmap noShrink
-
-instance ShrinkC a b => ShrinkC (Elim' a) (Elim' b) where
-  shrinkC conf (Apply a) = Apply <$> shrinkC conf a
-  shrinkC conf (Proj  p) = []
-  noShrink = fmap noShrink
-
--- Andreas 2010-09-21: simplify? since Sort Prop is no longer abused as DontCare
-instance ShrinkC Sort Sort where
-  shrinkC conf Prop = []
-  shrinkC conf s = Prop : case s of
-    Type n     -> [] -- No Level instance yet -- Type <$> shrinkC conf n
-    Prop       -> __IMPOSSIBLE__
-    Inf        -> []
-    SizeUniv   -> []
-    DLub s1 s2 -> __IMPOSSIBLE__
-  noShrink = id
-
-instance ShrinkC Telescope Telescope where
-  shrinkC conf EmptyTel          = []
-  shrinkC conf (ExtendTel a tel) =
-    killAbs tel : (uncurry ExtendTel <$> shrinkC conf (a, tel))
-  noShrink = id
-
-instance ShrinkC Type Type where
-  shrinkC conf (El s t) = uncurry El <$> shrinkC conf (s, YesType t)
-  noShrink = id
-
-instance ShrinkC Term Term where
-  shrinkC conf (DontCare _)  = []
-  shrinkC conf (Sort Prop) = []
-  shrinkC conf t           = filter validType $ case ignoreSharing t of
-    Var i es     -> map unArg (argsFromElims es) ++
-                    (uncurry Var <$> shrinkC conf (VarName i, NoType es))
-    Def d es     -> map unArg (argsFromElims es) ++
-                    (uncurry Def <$> shrinkC conf (DefName d, NoType es))
-    Con c args   -> map unArg args ++
-                    (uncurry Con <$> shrinkC conf (ConName c, NoType args))
-    Lit l        -> Lit <$> shrinkC conf l
-    Level l      -> [] -- TODO
-    Lam info b   -> killAbs b : ((\(h,x) -> Lam (setHiding h defaultArgInfo) x)
-                                 <$> shrinkC conf (argInfoHiding info, b))
-    Pi a b       -> unEl (unDom a) : unEl (killAbs b) :
-                    (uncurry Pi <$> shrinkC conf (a, b))
-    Sort s       -> Sort <$> shrinkC conf s
-    MetaV m es   -> map unArg (argsFromElims es) ++
-                    (MetaV m <$> shrinkC conf (NoType es))
-    DontCare _   -> []
-    Shared{}     -> __IMPOSSIBLE__
-    where
-      validType t
-        | not (tcIsType conf) = True
-        | otherwise         = case t of
-            Con _ _ -> False
-            Lam _ _ -> False
-            Lit _         -> False
-            _     -> True
-  noShrink = id
-
-killAbs :: KillVar a => Abs a -> a
-killAbs (Abs   _ x) = killVar 0 x
-killAbs (NoAbs _ x) = x
-
-class KillVar a where
-  killVar :: Nat -> a -> a
-
-instance KillVar Term where
-  killVar i t = case ignoreSharing t of
-    Var j args | j == i    -> DontCare (Var j [])
-               | j >  i    -> Var (j - 1) $ killVar i args
-               | otherwise -> Var j       $ killVar i args
-    Def c args             -> Def c       $ killVar i args
-    Con c args             -> Con c       $ killVar i args
-    Lit l                  -> Lit l
-    Level l                -> Level l -- TODO
-    Sort s                 -> Sort s
-    Lam h b                -> Lam h       $ killVar i b
-    Pi a b                 -> uncurry Pi  $ killVar i (a, b)
-    MetaV m args           -> MetaV m     $ killVar i args
-    DontCare mv            -> DontCare    $ killVar i mv
-    Shared{}               -> __IMPOSSIBLE__
-
-instance KillVar Type where
-  killVar i (El s t) = El s $ killVar i t
-
-instance KillVar Telescope where
-  killVar i EmptyTel          = EmptyTel
-  killVar i (ExtendTel a tel) = uncurry ExtendTel $ killVar i (a, tel)
-
-instance KillVar a => KillVar (Elim' a) where
-  killVar i = fmap (killVar i)
-
-instance KillVar a => KillVar (Arg a) where
-  killVar i = fmap (killVar i)
-
-instance KillVar a => KillVar (Dom a) where
-  killVar i = fmap (killVar i)
-
-instance KillVar a => KillVar (Abs a) where
-  killVar i = fmap (killVar (i + 1))
-
-instance KillVar a => KillVar [a] where
-  killVar i = map (killVar i)
-
-instance KillVar a => KillVar (Maybe a) where
-  killVar i = fmap (killVar i)
-
-instance (KillVar a, KillVar b) => KillVar (a, b) where
-  killVar i (x, y) = (killVar i x, killVar i y)
-
--- Tests ------------------------------------------------------------------
-
-isWellScoped :: FreeVS a => TermConfiguration -> a -> Bool
-isWellScoped conf t = allFreeVars t `Set.isSubsetOf` Set.fromList (tcFreeVariables conf)
-
--- | Check that the generated terms don't have any out of scope variables.
-prop_wellScopedVars :: TermConfiguration -> Property
-prop_wellScopedVars conf =
-  forAllShrink (genC conf) (shrinkC conf) $ \t ->
-  isWellScoped conf (t :: Term)
diff --git a/src/full/Agda/TypeChecking/Tests.hs b/src/full/Agda/TypeChecking/Tests.hs
deleted file mode 100644
--- a/src/full/Agda/TypeChecking/Tests.hs
+++ /dev/null
@@ -1,98 +0,0 @@
-{-# LANGUAGE CPP #-}
-
-module Agda.TypeChecking.Tests where
-
-import qualified Agda.Utils.VarSet as Set
-import Agda.Utils.QuickCheck
-
-import Agda.Syntax.Internal
-import Agda.TypeChecking.Test.Generators
-import Agda.TypeChecking.Telescope
-import Agda.TypeChecking.Substitute
-import Agda.Utils.Size
-import Agda.Utils.Permutation
-import Agda.Utils.TestHelpers
-
-#include "undefined.h"
-import Agda.Utils.Impossible
-
----------------------------------------------------------------------------
--- * Tests for "Agda.Utils.Permutation"
----------------------------------------------------------------------------
-
----------------------------------------------------------------------------
--- * Tests for "Agda.TypeChecking.Telescope"
----------------------------------------------------------------------------
-
--- | @telFromList . telToList == id@
-prop_telToListInv :: TermConfiguration -> Property
-prop_telToListInv conf =
-  forAll (genC conf) $ \tel ->
-  telFromList (telToList tel) == tel
-
--- | All elements of 'flattenTel' are well-scoped under the original telescope.
-prop_flattenTelScope :: TermConfiguration -> Property
-prop_flattenTelScope conf =
-  forAll (genC conf) $ \tel ->
-  all (isWellScoped $ extendWithTelConf tel conf) (flattenTel tel)
-
--- | @unflattenTel . flattenTel == id@
-prop_flattenTelInv :: TermConfiguration -> Property
-prop_flattenTelInv conf =
-  forAll (genC conf) $ \tel ->
-  unflattenTel (teleNames tel) (flattenTel tel) == tel
-
--- | 'reorderTel' is stable.
-prop_reorderTelStable :: TermConfiguration -> Property
-prop_reorderTelStable conf =
-  forAll (genC conf) $ \tel ->
-  reorderTel (flattenTel tel) == Just (idP (size tel))
-
--- | The result of splitting a telescope is well-scoped.
-prop_splitTelescopeScope :: TermConfiguration -> Property
-prop_splitTelescopeScope conf =
-  forAll (genC conf)                        $ \tel ->
-  forAll (listOfElements [0..size tel - 1]) $ \vs ->
-  let SplitTel tel1 tel2 perm = splitTelescope (Set.fromList vs) tel
-      tel' = telFromList (telToList tel1 ++ telToList tel2)
-  in  isWellScoped conf tel'
-
--- | The permutation generated when splitting a telescope preserves scoping.
-prop_splitTelescopePermScope :: TermConfiguration -> Property
-prop_splitTelescopePermScope conf =
-      forAllShrink (genC conf) (shrinkC conf)                $ \tel ->
-      forAllShrink (listOfElements [0..size tel - 1]) shrink $ \vs ->
-  let SplitTel tel1 tel2 perm = splitTelescope (Set.fromList vs) tel
-      conf1 = extendWithTelConf tel1 conf
-      conf2 = conf1 { tcFreeVariables = map (size tel2 +) (tcFreeVariables conf1) }
-      conf' = conf  { tcFreeVariables = map (size tel +) (tcFreeVariables conf) ++ vs }
-  in  forAllShrink (genC conf') (shrinkC conf') $ \t ->
-      isWellScoped conf2 (applySubst (renamingR $ invertP __IMPOSSIBLE__ perm) (t :: Term))
-
-{-
--- | The permutation generated when splitting a telescope correctly translates
---   between the old and the new telescope.
-prop_splitTelescopePermInv :: TermConfiguration -> Property
-prop_splitTelescopePermInv conf =
-      forAll (wellScopedTel conf)               $ \tel ->
-      forAll (listOfElements [0..size tel - 1]) $ \vs ->
-  let SplitTel tel1 tel2 perm = splitTelescope (Set.fromList vs) tel
-      tel' = telFromList (telToList tel1 ++ telToList tel2)
-      conf1 = extendWithTelConf tel  conf
-      conf2 = extendWithTelConf tel' conf
-  in  forAll (wellScopedTerm conf1) $ \t1 ->
-      forAll (wellScopedTerm conf2) $ \t2 ->
-  let t1' = rename (invertP __IMPOSSIBLE__ perm) $ rename perm t1
-      t2' = rename perm $ rename (invertP __IMPOSSIBLE__ perm) t2
-  in  t1 == t1' && t2 == t2'
--}
-
-tests :: IO Bool
-tests = runTests "Agda.TypeChecking.Tests"
-  [ quickCheck' prop_telToListInv
-  , quickCheck' prop_flattenTelScope
-  , quickCheck' prop_flattenTelInv
-  , quickCheck' prop_reorderTelStable
-  , quickCheck' prop_splitTelescopeScope
-  , quickCheck' prop_splitTelescopePermScope
-  ]
diff --git a/src/full/Agda/TypeChecking/Unquote.hs b/src/full/Agda/TypeChecking/Unquote.hs
--- a/src/full/Agda/TypeChecking/Unquote.hs
+++ b/src/full/Agda/TypeChecking/Unquote.hs
@@ -1,6 +1,4 @@
 {-# LANGUAGE CPP               #-}
-{-# LANGUAGE FlexibleInstances #-}
-{-# LANGUAGE PatternGuards     #-}
 
 module Agda.TypeChecking.Unquote where
 
@@ -38,7 +36,7 @@
 import Agda.TypeChecking.Monad.Exception
 import Agda.TypeChecking.Pretty
 import Agda.TypeChecking.Reduce
-import Agda.TypeChecking.Reduce.Monad hiding (reportSDoc)
+import Agda.TypeChecking.Reduce.Monad
 import Agda.TypeChecking.Substitute
 import Agda.TypeChecking.Telescope
 import Agda.TypeChecking.Quote
@@ -52,13 +50,15 @@
 
 import Agda.Utils.Except
 import Agda.Utils.Impossible
-import Agda.Utils.Monad ( ifM )
+import Agda.Utils.Maybe
+import Agda.Utils.Monad
 import Agda.Utils.Permutation ( Permutation(Perm), compactP )
 import Agda.Utils.String ( Str(Str), unStr )
 import Agda.Utils.VarSet (VarSet)
 import qualified Agda.Utils.VarSet as Set
 import Agda.Utils.Maybe.Strict (toLazy)
 import Agda.Utils.FileName
+import Agda.Utils.Lens
 
 #include "undefined.h"
 
@@ -120,12 +120,12 @@
 isCon :: ConHead -> TCM Term -> UnquoteM Bool
 isCon con tm = do t <- liftU tm
                   case ignoreSharing t of
-                    Con con' _ -> return (con == con')
+                    Con con' _ _ -> return (con == con')
                     _ -> return False
 
 isDef :: QName -> TCM Term -> UnquoteM Bool
 isDef f tm = do
-  t <- liftU tm
+  t <- liftU (etaContract =<< normalise =<< tm)
   case ignoreSharing t of
     Def g _ -> return (f == g)
     _       -> return False
@@ -141,11 +141,6 @@
 class Unquote a where
   unquote :: I.Term -> UnquoteM a
 
-unquoteH :: Unquote a => Arg Term -> UnquoteM a
-unquoteH a | isHidden a && isRelevant a =
-    unquote $ unArg a
-unquoteH a = throwException $ BadVisibility "hidden"  a
-
 unquoteN :: Unquote a => Arg Term -> UnquoteM a
 unquoteN a | notHidden a && isRelevant a =
     unquote $ unArg a
@@ -188,22 +183,22 @@
   unquote t = do
     t <- reduceQuotedTerm t
     case ignoreSharing t of
-      Con c [h,r] -> do
+      Con c _ [h,r] -> do
         choice
-          [(c `isCon` primArgArgInfo, ArgInfo <$> unquoteN h <*> unquoteN r)]
+          [(c `isCon` primArgArgInfo, ArgInfo <$> unquoteN h <*> unquoteN r <*> pure Reflected <*> pure False)]
           __IMPOSSIBLE__
-      Con c _ -> __IMPOSSIBLE__
+      Con c _ _ -> __IMPOSSIBLE__
       _ -> throwException $ NonCanonical "arg info" t
 
 instance Unquote a => Unquote (Arg a) where
   unquote t = do
     t <- reduceQuotedTerm t
     case ignoreSharing t of
-      Con c [info,x] -> do
+      Con c _ [info,x] -> do
         choice
           [(c `isCon` primArgArg, Arg <$> unquoteN info <*> unquoteN x)]
           __IMPOSSIBLE__
-      Con c _ -> __IMPOSSIBLE__
+      Con c _ _ -> __IMPOSSIBLE__
       _ -> throwException $ NonCanonical "arg" t
 
 -- Andreas, 2013-10-20: currently, post-fix projections are not part of the
@@ -211,6 +206,16 @@
 instance Unquote R.Elim where
   unquote t = R.Apply <$> unquote t
 
+instance Unquote Bool where
+  unquote t = do
+    t <- reduceQuotedTerm t
+    case ignoreSharing t of
+      Con c _ [] ->
+        choice [ (c `isCon` primTrue,  pure True)
+               , (c `isCon` primFalse, pure False) ]
+               __IMPOSSIBLE__
+      _ -> throwException $ NonCanonical "boolean" t
+
 instance Unquote Integer where
   unquote t = do
     t <- reduceQuotedTerm t
@@ -256,7 +261,7 @@
   unquote t = do
     t <- reduceQuotedTerm t
     case ignoreSharing t of
-      Con c [x] ->
+      Con c _ [x] ->
         choice [ (c `isCon` primAgdaErrorPartString, StrPart  <$> unquoteNString x)
                , (c `isCon` primAgdaErrorPartTerm,   TermPart <$> unquoteN x)
                , (c `isCon` primAgdaErrorPartName,   NamePart <$> unquoteN x) ]
@@ -267,40 +272,40 @@
   unquote t = do
     t <- reduceQuotedTerm t
     case ignoreSharing t of
-      Con c [x,xs] -> do
+      Con c _ [x,xs] -> do
         choice
           [(c `isCon` primCons, (:) <$> unquoteN x <*> unquoteN xs)]
           __IMPOSSIBLE__
-      Con c [] -> do
+      Con c _ [] -> do
         choice
           [(c `isCon` primNil, return [])]
           __IMPOSSIBLE__
-      Con c _ -> __IMPOSSIBLE__
+      Con c _ _ -> __IMPOSSIBLE__
       _ -> throwException $ NonCanonical "list" t
 
 instance Unquote Hiding where
   unquote t = do
     t <- reduceQuotedTerm t
     case ignoreSharing t of
-      Con c [] -> do
+      Con c _ [] -> do
         choice
           [(c `isCon` primHidden,  return Hidden)
           ,(c `isCon` primInstance, return Instance)
           ,(c `isCon` primVisible, return NotHidden)]
           __IMPOSSIBLE__
-      Con c vs -> __IMPOSSIBLE__
+      Con c _ vs -> __IMPOSSIBLE__
       _        -> throwException $ NonCanonical "visibility" t
 
 instance Unquote Relevance where
   unquote t = do
     t <- reduceQuotedTerm t
     case ignoreSharing t of
-      Con c [] -> do
+      Con c _ [] -> do
         choice
           [(c `isCon` primRelevant,   return Relevant)
           ,(c `isCon` primIrrelevant, return Irrelevant)]
           __IMPOSSIBLE__
-      Con c vs -> __IMPOSSIBLE__
+      Con c _ vs -> __IMPOSSIBLE__
       _        -> throwException $ NonCanonical "relevance" t
 
 instance Unquote QName where
@@ -314,11 +319,11 @@
   unquote t = do
     t <- reduceQuotedTerm t
     case ignoreSharing t of
-      Con c [x,y] -> do
+      Con c _ [x,y] -> do
         choice
           [(c `isCon` primAbsAbs, R.Abs <$> (hint <$> unquoteNString x) <*> unquoteN y)]
           __IMPOSSIBLE__
-      Con c _ -> __IMPOSSIBLE__
+      Con c _ _ -> __IMPOSSIBLE__
       _ -> throwException $ NonCanonical "abstraction" t
 
     where hint x | not (null x) = x
@@ -331,10 +336,10 @@
   unquote t = do
     t <- reduceQuotedTerm t
     case ignoreSharing t of
-      Lit (LitMeta r f x) -> do
-        live <- (== f) <$> liftU getCurrentPath
-        unless live $ liftU $ do
-            m <- fromMaybe __IMPOSSIBLE__ . Map.lookup f <$> sourceToModule
+      Lit (LitMeta r f x) -> liftU $ do
+        live <- (f ==) <$> getCurrentPath
+        unless live $ do
+            m <- fromMaybe __IMPOSSIBLE__ <$> lookupModuleFromSource f
             typeError . GenericDocError =<<
               sep [ text "Can't unquote stale metavariable"
                   , pretty m <> text "." <> pretty x ]
@@ -348,16 +353,16 @@
   unquote t = do
     t <- reduceQuotedTerm t
     case ignoreSharing t of
-      Con c [] -> do
+      Con c _ [] -> do
         choice
           [(c `isCon` primAgdaSortUnsupported, return R.UnknownS)]
           __IMPOSSIBLE__
-      Con c [u] -> do
+      Con c _ [u] -> do
         choice
           [(c `isCon` primAgdaSortSet, R.SetS <$> unquoteN u)
           ,(c `isCon` primAgdaSortLit, R.LitS <$> unquoteN u)]
           __IMPOSSIBLE__
-      Con c _ -> __IMPOSSIBLE__
+      Con c _ _ -> __IMPOSSIBLE__
       _ -> throwException $ NonCanonical "sort" t
 
 instance Unquote Literal where
@@ -367,7 +372,7 @@
           file <- liftU getCurrentPath
           return $ LitMeta r file x
     case ignoreSharing t of
-      Con c [x] ->
+      Con c _ [x] ->
         choice
           [ (c `isCon` primAgdaLitNat,    LitNat    noRange <$> unquoteN x)
           , (c `isCon` primAgdaLitFloat,  LitFloat  noRange <$> unquoteN x)
@@ -376,25 +381,25 @@
           , (c `isCon` primAgdaLitQName,  LitQName  noRange <$> unquoteN x)
           , (c `isCon` primAgdaLitMeta,   litMeta   noRange =<< unquoteN x) ]
           __IMPOSSIBLE__
-      Con c _ -> __IMPOSSIBLE__
+      Con c _ _ -> __IMPOSSIBLE__
       _ -> throwException $ NonCanonical "literal" t
 
 instance Unquote R.Term where
   unquote t = do
     t <- reduceQuotedTerm t
     case ignoreSharing t of
-      Con c [] ->
+      Con c _ [] ->
         choice
           [ (c `isCon` primAgdaTermUnsupported, return R.Unknown) ]
           __IMPOSSIBLE__
 
-      Con c [x] -> do
+      Con c _ [x] -> do
         choice
           [ (c `isCon` primAgdaTermSort,      R.Sort      <$> unquoteN x)
           , (c `isCon` primAgdaTermLit,       R.Lit       <$> unquoteN x) ]
           __IMPOSSIBLE__
 
-      Con c [x, y] ->
+      Con c _ [x, y] ->
         choice
           [ (c `isCon` primAgdaTermVar,     R.Var     <$> (fromInteger <$> unquoteN x) <*> unquoteN y)
           , (c `isCon` primAgdaTermCon,     R.Con     <$> (ensureCon =<< unquoteN x) <*> unquoteN y)
@@ -421,37 +426,37 @@
   unquote t = do
     t <- reduceQuotedTerm t
     case ignoreSharing t of
-      Con c [] -> do
+      Con c _ [] -> do
         choice
           [ (c `isCon` primAgdaPatAbsurd, return R.AbsurdP)
           , (c `isCon` primAgdaPatDot,    return R.DotP)
           ] __IMPOSSIBLE__
-      Con c [x] -> do
+      Con c _ [x] -> do
         choice
           [ (c `isCon` primAgdaPatVar,  R.VarP  <$> unquoteNString x)
           , (c `isCon` primAgdaPatProj, R.ProjP <$> unquoteN x)
           , (c `isCon` primAgdaPatLit,  R.LitP  <$> unquoteN x) ]
           __IMPOSSIBLE__
-      Con c [x, y] -> do
+      Con c _ [x, y] -> do
         choice
           [ (c `isCon` primAgdaPatCon, R.ConP <$> unquoteN x <*> unquoteN y) ]
           __IMPOSSIBLE__
-      Con c _ -> __IMPOSSIBLE__
+      Con c _ _ -> __IMPOSSIBLE__
       _ -> throwException $ NonCanonical "pattern" t
 
 instance Unquote R.Clause where
   unquote t = do
     t <- reduceQuotedTerm t
     case ignoreSharing t of
-      Con c [x] -> do
+      Con c _ [x] -> do
         choice
           [ (c `isCon` primAgdaClauseAbsurd, R.AbsurdClause <$> unquoteN x) ]
           __IMPOSSIBLE__
-      Con c [x, y] -> do
+      Con c _ [x, y] -> do
         choice
           [ (c `isCon` primAgdaClauseClause, R.Clause <$> unquoteN x <*> unquoteN y) ]
           __IMPOSSIBLE__
-      Con c _ -> __IMPOSSIBLE__
+      Con c _ _ -> __IMPOSSIBLE__
       _ -> throwException $ NonCanonical "clause" t
 
 -- Unquoting TCM computations ---------------------------------------------
@@ -479,8 +484,10 @@
     I.Def f [u] ->
       choice [ (f `isDef` primAgdaTCMInferType,          tcFun1 tcInferType          u)
              , (f `isDef` primAgdaTCMNormalise,          tcFun1 tcNormalise          u)
+             , (f `isDef` primAgdaTCMReduce,             tcFun1 tcReduce             u)
              , (f `isDef` primAgdaTCMGetType,            tcFun1 tcGetType            u)
              , (f `isDef` primAgdaTCMGetDefinition,      tcFun1 tcGetDefinition      u)
+             , (f `isDef` primAgdaTCMIsMacro,            tcFun1 tcIsMacro            u)
              , (f `isDef` primAgdaTCMFreshName,          tcFun1 tcFreshName          u) ]
              failEval
     I.Def f [u, v] ->
@@ -498,6 +505,7 @@
              failEval
     I.Def f [_, _, u, v] ->
       choice [ (f `isDef` primAgdaTCMCatchError,    tcCatchError    (unElim u) (unElim v))
+             , (f `isDef` primAgdaTCMWithNormalisation, tcWithNormalisation (unElim u) (unElim v))
              , (f `isDef` primAgdaTCMExtendContext, tcExtendContext (unElim u) (unElim v))
              , (f `isDef` primAgdaTCMInContext,     tcInContext     (unElim u) (unElim v)) ]
              failEval
@@ -510,6 +518,11 @@
     tcBind m k = do v <- evalTCM m
                     evalTCM (k `apply` [defaultArg v])
 
+    process :: (InstantiateFull a, Normalise a) => a -> TCM a
+    process v = do
+      norm <- view eUnquoteNormalise
+      if norm then normalise v else instantiateFull v
+
     mkT l a = El s a
       where s = Type $ Max [Plus 0 $ UnreducedLevel l]
 
@@ -518,6 +531,11 @@
     tcCatchError m h =
       liftU2 (\ m1 m2 -> m1 `catchError` \ _ -> m2) (evalTCM m) (evalTCM h)
 
+    tcWithNormalisation :: Term -> Term -> UnquoteM Term
+    tcWithNormalisation b m = do
+      v <- unquote b
+      liftU1 (locally eUnquoteNormalise $ const v) (evalTCM m)
+
     uqFun1 :: Unquote a => (a -> UnquoteM b) -> Elim -> UnquoteM b
     uqFun1 fun a = do
       a <- unquote (unElim a)
@@ -567,17 +585,17 @@
     tcInferType :: R.Term -> TCM Term
     tcInferType v = do
       (_, a) <- inferExpr =<< toAbstract_ v
-      quoteType =<< normalise a
+      quoteType =<< process a
 
     tcCheckType :: R.Term -> R.Type -> TCM Term
     tcCheckType v a = do
       a <- isType_ =<< toAbstract_ a
       e <- toAbstract_ v
       v <- checkExpr e a
-      quoteTerm =<< normalise v
+      quoteTerm =<< process v
 
     tcQuoteTerm :: Term -> UnquoteM Term
-    tcQuoteTerm v = liftU $ quoteTerm =<< normalise v
+    tcQuoteTerm v = liftU $ quoteTerm =<< process v
 
     tcUnquoteTerm :: Type -> R.Term -> TCM Term
     tcUnquoteTerm a v = do
@@ -590,10 +608,15 @@
       (v, _) <- inferExpr =<< toAbstract_ v
       quoteTerm =<< normalise v
 
+    tcReduce :: R.Term -> TCM Term
+    tcReduce v = do
+      (v, _) <- inferExpr =<< toAbstract_ v
+      quoteTerm =<< reduce =<< instantiateFull v
+
     tcGetContext :: UnquoteM Term
     tcGetContext = liftU $ do
       as <- map (fmap snd) <$> getContext
-      as <- etaContract =<< normalise as
+      as <- etaContract =<< process as
       buildList <*> mapM quoteDom as
 
     extendCxt :: Arg R.Type -> UnquoteM a -> UnquoteM a
@@ -622,6 +645,14 @@
     tcGetType :: QName -> TCM Term
     tcGetType x = quoteType . defType =<< constInfo x
 
+    tcIsMacro :: QName -> TCM Term
+    tcIsMacro x = do
+      true  <- primTrue
+      false <- primFalse
+      let qBool True  = true
+          qBool False = false
+      qBool . isMacro . theDef <$> constInfo x
+
     tcGetDefinition :: QName -> TCM Term
     tcGetDefinition x = quoteDefn =<< constInfo x
 
@@ -639,7 +670,7 @@
         reportSDoc "tc.unquote.decl" 10 $ sep [ text "declare" <+> prettyTCM x <+> text ":"
                                               , nest 2 $ prettyTCM a ]
         a <- isType_ =<< toAbstract_ a
-        alreadyDefined <- (True <$ getConstInfo x) `catchError` \ _ -> return False
+        alreadyDefined <- isJust <$> tryMaybe (getConstInfo x)
         when alreadyDefined $ genericError $ "Multiple declarations of " ++ show x
         addConstant x $ defaultDefn i x a emptyFunction
         when (h == Instance) $ addTypedInstance x a
diff --git a/src/full/Agda/TypeChecking/With.hs b/src/full/Agda/TypeChecking/With.hs
--- a/src/full/Agda/TypeChecking/With.hs
+++ b/src/full/Agda/TypeChecking/With.hs
@@ -1,12 +1,12 @@
-{-# LANGUAGE CPP           #-}
-{-# LANGUAGE LambdaCase    #-}
-{-# LANGUAGE PatternGuards #-}
-{-# LANGUAGE TupleSections #-}
+{-# LANGUAGE CPP #-}
+{-# LANGUAGE NondecreasingIndentation #-}
 
 module Agda.TypeChecking.With where
 
+import Control.Arrow ((&&&), (***), first, second)
 import Control.Applicative hiding (empty)
 import Control.Monad
+import Control.Monad.Writer (WriterT, runWriterT, tell)
 
 import Data.List
 import Data.Maybe
@@ -74,7 +74,7 @@
 --
 --   [@Δ₁Δ₂ ⊢ t'@] type of rhs under @π@
 --
---   [@Δ₁ ⊢ as'@]  types with with-arguments depending only on @Δ₁@.
+--   [@Δ₁ ⊢ as'@]  types of with-arguments depending only on @Δ₁@.
 --
 --   [@Δ₁ ⊢ vs'@]  with-arguments under @π@.
 
@@ -85,17 +85,17 @@
   -> [EqualityView] -- ^ __@Δ ⊢ as@__   types of with arguments.
   -> [Term]         -- ^ __@Δ ⊢ vs@__   with arguments.
   -- Output:
-  -> ( Telescope    -- @Δ₁@       part of context not needed for with arguments and their types.
-     , Telescope    -- @Δ₂@       part of context needed for with arguments and their types.
+  -> ( Telescope    -- @Δ₁@       part of context needed for with arguments and their types.
+     , Telescope    -- @Δ₂@       part of context not needed for with arguments and their types.
      , Permutation  -- @π@        permutation from Δ to Δ₁Δ₂ as returned by 'splitTelescope'.
      , Type         -- @Δ₁Δ₂ ⊢ t'@ type of rhs under @π@
-     , [EqualityView] -- @Δ₁ ⊢ as'@ types with with- and rewrite-arguments depending only on @Δ₁@.
+     , [EqualityView] -- @Δ₁ ⊢ as'@ types of with- and rewrite-arguments depending only on @Δ₁@.
      , [Term]       -- @Δ₁ ⊢ vs'@ with- and rewrite-arguments under @π@.
      )              -- ^ (__@Δ₁@__,__@Δ₂@__,__@π@__,__@t'@__,__@as'@__,__@vs'@__) where
 --
---   [@Δ₁@]        part of context not needed for with arguments and their types.
+--   [@Δ₁@]        part of context needed for with arguments and their types.
 --
---   [@Δ₂@]        part of context needed for with arguments and their types.
+--   [@Δ₂@]        part of context not needed for with arguments and their types.
 --
 --   [@π@]         permutation from Δ to Δ₁Δ₂ as returned by 'splitTelescope'.
 --
@@ -120,7 +120,7 @@
     SplitTel delta1 delta2 perm = splitTelescope fv delta
 
     -- Δ₁Δ₂ ⊢ π : Δ
-    pi = renaming (reverseP perm)
+    pi = renaming __IMPOSSIBLE__ (reverseP perm)
     -- Δ₁ ⊢ ρ : Δ₁Δ₂  (We know that as does not depend on Δ₂.)
     rho = strengthenS __IMPOSSIBLE__ $ size delta2
     -- Δ₁ ⊢ ρ ∘ π : Δ
@@ -141,18 +141,18 @@
 -- Each @EqualityType@, coming from a @rewrite@, will turn into 2 abstractions.
 
 withFunctionType
-  :: Telescope  -- ^ @Δ₁@                       context for types of with types.
-  -> [Term]     -- ^ @Δ₁,Δ₂ ⊢ vs : raise Δ₂ as@  with and rewrite-expressions.
+  :: Telescope      -- ^ @Δ₁@                       context for types of with types.
+  -> [Term]         -- ^ @Δ₁,Δ₂ ⊢ vs : raise Δ₂ as@  with and rewrite-expressions.
   -> [EqualityView] -- ^ @Δ₁ ⊢ as@                  types of with and rewrite-expressions.
-  -> Telescope  -- ^ @Δ₁ ⊢ Δ₂@                  context extension to type with-expressions.
-  -> Type       -- ^ @Δ₁,Δ₂ ⊢ b@                type of rhs.
+  -> Telescope      -- ^ @Δ₁ ⊢ Δ₂@                  context extension to type with-expressions.
+  -> Type           -- ^ @Δ₁,Δ₂ ⊢ b@                type of rhs.
   -> TCM (Type, Nat)
     -- ^ @Δ₁ → wtel → Δ₂′ → b′@ such that
     --     @[vs/wtel]wtel = as@ and
     --     @[vs/wtel]Δ₂′ = Δ₂@ and
     --     @[vs/wtel]b′ = b@.
     -- Plus the final number of with-arguments.
-withFunctionType delta1 vs as delta2 b = addCtxTel delta1 $ do
+withFunctionType delta1 vs as delta2 b = addContext delta1 $ do
 
   reportSLn "tc.with.abstract" 20 $ "preparing for with-abstraction"
 
@@ -176,10 +176,13 @@
   wd2b <- piAbstractVs (zip vs as) d2b
   dbg 30 "wΓ → Δ₂ → B" wd2b
 
-  let countArgs OtherType{}    = 1
-      countArgs EqualityType{} = 2
+  return (telePi_ delta1 wd2b, countWithArgs as)
 
-  return (telePi_ delta1 wd2b, sum $ map countArgs as)
+countWithArgs :: [EqualityView] -> Nat
+countWithArgs = sum . map countArgs
+  where
+    countArgs OtherType{}    = 1
+    countArgs EqualityType{} = 2
 
 -- | From a list of @with@ and @rewrite@ expressions and their types,
 --   compute the list of final @with@ expressions (after expanding the @rewrite@s).
@@ -191,36 +194,54 @@
 
 -- | Compute the clauses for the with-function given the original patterns.
 buildWithFunction
-  :: QName                -- ^ Name of the parent function.
+  :: [Name]               -- ^ Names of the module parameters of the parent function.
+  -> QName                -- ^ Name of the parent function.
   -> QName                -- ^ Name of the with-function.
   -> Type                 -- ^ Types of the parent function.
-  -> [NamedArg Pattern] -- ^ Parent patterns.
+  -> [NamedArg DeBruijnPattern] -- ^ Parent patterns.
+  -> Nat                  -- ^ Number of module parameters in parent patterns
+  -> Substitution         -- ^ Substitution from parent lhs to with function lhs
   -> Permutation          -- ^ Final permutation.
   -> Nat                  -- ^ Number of needed vars.
   -> Nat                  -- ^ Number of with expressions.
   -> [A.SpineClause]      -- ^ With-clauses.
   -> TCM [A.SpineClause]  -- ^ With-clauses flattened wrt. parent patterns.
-buildWithFunction f aux t qs perm n1 n cs = mapM buildWithClause cs
+buildWithFunction cxtNames f aux t qs npars withSub perm n1 n cs = mapM buildWithClause cs
   where
-    buildWithClause (A.Clause (A.SpineLHS i _ ps wps) rhs wh catchall) = do
+    -- Nested with-functions will iterate this function once for each parent clause.
+    buildWithClause (A.Clause (A.SpineLHS i _ ps wps) inheritedDots rhs wh catchall) = do
       let (wps0, wps1) = genericSplitAt n wps
           ps0          = map defaultNamedArg wps0
+      reportSDoc "tc.with" 50 $ text "inheritedDots:" <+> vcat [ prettyTCM x <+> text "=" <+> prettyTCM v <+> text ":" <+> prettyTCM a
+                                                               | A.NamedDot x v a <- inheritedDots ]
       rhs <- buildRHS rhs
-      (ps1, ps2)  <- genericSplitAt n1 <$> stripWithClausePatterns f aux t qs perm ps
-      let result = A.Clause (A.SpineLHS i aux (ps1 ++ ps0 ++ ps2) wps1) rhs wh catchall
+      (namedDots, ps') <- stripWithClausePatterns cxtNames f aux t qs npars perm ps
+      let (ps1, ps2) = genericSplitAt n1 ps'
+      let result = A.Clause (A.SpineLHS i aux (ps1 ++ ps0 ++ ps2) wps1) (inheritedDots ++ namedDots) rhs wh catchall
       reportSDoc "tc.with" 20 $ vcat
         [ text "buildWithClause returns" <+> prettyA result
         ]
       return result
 
-    buildRHS rhs@(A.RHS _)               = return rhs
+    buildRHS rhs@A.RHS{}                 = return rhs
     buildRHS rhs@A.AbsurdRHS             = return rhs
     buildRHS (A.WithRHS q es cs)         = A.WithRHS q es <$>
-      mapM (A.spineToLhs <.> buildWithClause . A.lhsToSpine) cs
+      mapM ((A.spineToLhs . permuteNamedDots) <.> buildWithClause . A.lhsToSpine) cs
     buildRHS (A.RewriteRHS qes rhs wh) = flip (A.RewriteRHS qes) wh <$> buildRHS rhs
 
-{-| @stripWithClausePatterns parent f t qs π ps = ps'@
+    -- The named dot patterns computed by buildWithClause lives in the context
+    -- of the top with-clause (of the current call to buildWithFunction). When
+    -- we recurse we expect inherited named dot patterns to live in the context
+    -- of the innermost parent clause. Note that this makes them live in the
+    -- context of the with-function arguments before any pattern matching. We
+    -- need to update again once the with-clause patterns have been checked.
+    -- This happens in Rules.Def.checkClause before calling checkRHS.
+    permuteNamedDots :: A.SpineClause -> A.SpineClause
+    permuteNamedDots (A.Clause lhs dots rhs wh catchall) =
+      A.Clause lhs (applySubst withSub dots) rhs wh catchall
 
+{-| @stripWithClausePatterns cxtNames parent f t qs np π ps = ps'@
+
 [@Δ@]   context bound by lhs of original function (not an argument).
 
 [@f@]   name of @with@-function.
@@ -229,6 +250,8 @@
 
 [@qs@]  internal patterns for original function.
 
+[@np@]  number of module parameters in @qs@
+
 [@π@]   permutation taking @vars(qs)@ to @support(Δ)@.
 
 [@ps@]  patterns in with clause (eliminating type @t@).
@@ -285,25 +308,39 @@
 -}
 
 stripWithClausePatterns
-  :: QName                      -- ^ Name of the parent function.
+  :: [Name]                   -- ^ Names of the module parameters of the parent function
+  -> QName                    -- ^ Name of the parent function.
   -> QName                    -- ^ Name of with-function.
-  -> Type                     -- ^ __@t@__   type of the original function.
-  -> [NamedArg Pattern]       -- ^ __@qs@__  internal patterns for original function.
+  -> Type                     -- ^ __@t@__   top-level type of the original function.
+  -> [NamedArg DeBruijnPattern] -- ^ __@qs@__  internal patterns for original function.
+  -> Nat                      -- ^ __@npars@__ number of module parameters is @qs@.
   -> Permutation              -- ^ __@π@__   permutation taking @vars(qs)@ to @support(Δ)@.
   -> [NamedArg A.Pattern]     -- ^ __@ps@__  patterns in with clause (eliminating type @t@).
-  -> TCM [NamedArg A.Pattern] -- ^ __@ps'@__ patterns for with function (presumably of type @Δ@).
-stripWithClausePatterns parent f t qs perm ps = do
+  -> TCM ([A.NamedDotPattern], [NamedArg A.Pattern]) -- ^ __@ps'@__ patterns for with function (presumably of type @Δ@).
+stripWithClausePatterns cxtNames parent f t qs npars perm ps = do
   -- Andreas, 2014-03-05 expand away pattern synoyms (issue 1074)
   ps <- expandPatternSynonyms ps
-  psi <- insertImplicitPatternsT ExpandLast ps t
+  -- Ulf, 2016-11-16 Issue 2303: We need the module parameter
+  -- instantiations from qs, so we make sure
+  -- that t is the top-level type of the parent function and add patterns for
+  -- the module parameters to ps before stripping.
+  let paramPat i _ = A.VarP (cxtNames !! i)
+      ps' = zipWith (fmap . fmap . paramPat) [0..] (take npars qs) ++ ps
+  psi <- insertImplicitPatternsT ExpandLast ps' t
   reportSDoc "tc.with.strip" 10 $ vcat
     [ text "stripping patterns"
     , nest 2 $ text "t   = " <+> prettyTCM t
+    , nest 2 $ text "ps  = " <+> fsep (punctuate comma $ map prettyA ps)
+    , nest 2 $ text "ps' = " <+> fsep (punctuate comma $ map prettyA ps')
     , nest 2 $ text "psi = " <+> fsep (punctuate comma $ map prettyA psi)
     , nest 2 $ text "qs  = " <+> fsep (punctuate comma $ map (prettyTCM . namedArg) qs)
+    , nest 2 $ text "perm= " <+> text (show perm)
     ]
+
   -- Andreas, 2015-11-09 Issue 1710: self starts with parent-function, not with-function!
-  ps' <- strip (Def parent []) t psi $ numberPatVars perm qs
+  (ps', namedDots) <- runWriterT $ strip (Def parent []) t psi qs
+  reportSDoc "tc.with.strip" 50 $ nest 2 $
+    text "namedDots:" <+> vcat [ prettyTCM x <+> text "=" <+> prettyTCM v <+> text ":" <+> prettyTCM a | A.NamedDot x v a <- namedDots ]
   let psp = permute perm ps'
   reportSDoc "tc.with.strip" 10 $ vcat
     [ nest 2 $ text "ps' = " <+> fsep (punctuate comma $ map prettyA ps')
@@ -312,21 +349,19 @@
   -- Andreas, 2014-03-05 Issue 142:
   -- In some cases, permute throws away some dot patterns of ps'
   -- which are then never checked.
-  if True then return psp else do
+  if True then return (namedDots, psp) else do
     -- Andreas, 2014-03-05 Disabled the fix for issue 142, the following is dead code:
     forM_ (permute (droppedP perm) ps') $ \ p -> setCurrentRange p $ do
       reportSDoc "tc.with.strip" 10 $ text "warning: dropped pattern " <+> prettyA p
       reportSDoc "tc.with.strip" 60 $ text $ show p
       case namedArg p of
-        A.DotP info e -> case unScope e of
+        A.DotP info o e -> case unScope e of
           A.Underscore{} -> return ()
-          -- Dot patterns without a range are Agda-generated from a user dot pattern
-          -- so we only complain if there is a range.
-          e | getRange info /= noRange -> typeError $ GenericError $
+          e | o == UserWritten -> typeError $ GenericError $
             "This inaccessible pattern is never checked, so only _ allowed here"
           _ -> return ()
         _ -> return ()
-    return psp
+    return (namedDots, psp)
   where
 
     strip
@@ -334,7 +369,10 @@
       -> Type                         -- ^ The type to be eliminated.
       -> [NamedArg A.Pattern]       -- ^ With-clause patterns.
       -> [NamedArg DeBruijnPattern] -- ^ Parent-clause patterns with de Bruijn indices relative to Δ.
-      -> TCM [NamedArg A.Pattern]   -- ^ With-clause patterns decomposed by parent-clause patterns.
+      -> WriterT [A.NamedDotPattern] TCM [NamedArg A.Pattern]
+            -- ^ With-clause patterns decomposed by parent-clause patterns.
+            --   Also outputs named dot patterns from the parent clause that
+            --   we need to add let-bindings for.
 
     -- Case: out of with-clause patterns.
     strip self t [] qs@(_ : _) = do
@@ -347,7 +385,7 @@
       -- Andreas, 2015-06-11, issue 1551:
       -- As the type t develops, we need to insert more implicit patterns,
       -- due to copatterns / flexible arity.
-      ps <- insertImplicitPatternsT ExpandLast [] t
+      ps <- liftTCM $ insertImplicitPatternsT ExpandLast [] t
       if null ps then
         typeError $ GenericError $ "Too few arguments given in with-clause"
        else strip self t ps qs
@@ -357,7 +395,7 @@
     -- are implicit patterns (we inserted too many).
     strip _ _ ps      []      = do
       let implicit (A.WildP{})     = True
-          implicit (A.ConP ci _ _) = patOrigin ci == ConPImplicit
+          implicit (A.ConP ci _ _) = patOrigin ci == ConOSystem
           implicit _               = False
       unless (all (implicit . namedArg) ps) $
         typeError $ GenericError $ "Too many arguments given in with-clause"
@@ -365,8 +403,14 @@
 
     -- Case: both parent-clause pattern and with-clause pattern present.
     -- Make sure they match, and decompose into subpatterns.
+    strip self t (p0 : ps) qs@(q : _)
+      | A.AsP _ x p <- namedArg p0 = do
+        (a, _) <- mustBePi t
+        let v = patternToTerm (namedArg q)
+        tell [A.NamedDot x v (unDom a)]
+        strip self t (fmap (p <$) p0 : ps) qs
     strip self t ps0@(p0 : ps) qs0@(q : qs) = do
-      p <- expandLitPattern p0
+      p <- liftTCM $ expandLitPattern p0
       reportSDoc "tc.with.strip" 15 $ vcat
         [ text "strip"
         , nest 2 $ text "ps0 =" <+> fsep (punctuate comma $ map prettyA ps0)
@@ -375,39 +419,58 @@
         , nest 2 $ text "self=" <+> prettyTCM self
         , nest 2 $ text "t   =" <+> prettyTCM t
         ]
-      let failDotPat = do
-            d <- prettyA p
+      let failDotPat :: Monoid w => WriterT w TCM a
+          failDotPat = do
+            d <- liftTCM $ prettyA p
             typeError $ GenericError $
                 "Inaccessible (dotted) patterns from the parent clause must " ++
                 "also be inaccessible in the with clause, when checking the " ++
                 "pattern " ++ show d ++ ","
       case namedArg q of
-        ProjP d -> case A.isProjP p of
-          Just d' -> do
-            d' <- getOriginalProjection d'
+        ProjP o d -> case A.maybePostfixProjP p of
+          Just (o', AmbQ ds) -> do
+            let d' = head ds
+            when (length ds /= 1) __IMPOSSIBLE__
+            d  <- liftTCM $ getOriginalProjection d
+            d' <- liftTCM $ getOriginalProjection d'
+            -- We assume here that neither @o@ nor @o'@ can be @ProjSystem@.
+            if o /= o' then liftTCM $ mismatchOrigin o o' else do
             if d /= d' then mismatch else do
-              t <- reduce t
-              (self1, t1) <- fromMaybe __IMPOSSIBLE__ <$> projectTyped self t d
-              -- Andreas, 2016-01-21, issue #1791
-              -- The type of a field might start with hidden quantifiers.
-              -- So we may have to insert more implicit patterns here.
-              ps <- insertImplicitPatternsT ExpandLast ps t1
+              (self1, t1, ps) <- liftTCM $ do
+                t <- reduce t
+                (_, self1, t1) <- fromMaybe __IMPOSSIBLE__ <$> projectTyped self t o d
+                -- Andreas, 2016-01-21, issue #1791
+                -- The type of a field might start with hidden quantifiers.
+                -- So we may have to insert more implicit patterns here.
+                ps <- insertImplicitPatternsT ExpandLast ps t1
+                return (self1, t1, ps)
               strip self1 t1 ps qs
           Nothing -> mismatch
 
-        VarP (i, _x)  -> do
-          ps <- intro1 t $ \ t -> strip (self `apply1` var i) t ps qs
+        VarP x  -> do
+          let v = var (dbPatVarIndex x)
+          t  <- piApply1 t v
+          ps <- strip (self `apply1` v) t ps qs
           return $ p : ps
 
         DotP v  -> case namedArg p of
-          A.DotP _ _    -> ok p
+          A.DotP r o _  -> ok p
           A.WildP _     -> ok p
+          -- Ulf, 2016-05-30: dot patterns are no longer mandatory so a parent
+          -- dot pattern can appear as a variable in the child clause. Indeed
+          -- this happens if you use a variable in the parent and '...' in the
+          -- child. In this case we need to remember the the binding, so we can
+          -- insert a let for it.
+          A.VarP x -> do
+            (a, _) <- mustBePi t
+            tell [A.NamedDot x v (unDom a)]
+            ok p
           -- Andreas, 2013-03-21 in case the implicit A.pattern has already been eta-expanded
           -- we just fold it back.  This fixes issues 665 and 824.
-          A.ConP ci _ _ | patOrigin ci == ConPImplicit -> okFlex p
+          A.ConP ci _ _ | patOrigin ci == ConOSystem -> okFlex p
           -- Andreas, 2015-07-07 issue 1606: Same for flexible record patterns.
           -- Agda might have replaced a record of dot patterns (A.ConP) by a dot pattern (I.DotP).
-          p'@A.ConP{} -> ifM (isFlexiblePattern p') (okFlex p) {-else-} failDotPat
+          p'@A.ConP{} -> ifM (liftTCM $ isFlexiblePattern p') (okFlex p) {-else-} failDotPat
 
           p@(A.PatternSynP pi' c' [ps']) -> do
              reportSDoc "impossible" 10 $
@@ -426,19 +489,19 @@
            text "parent pattern is constructor " <+> prettyTCM c
          (a, b) <- mustBePi t
          -- The type of the current pattern is a datatype.
-         Def d es <- ignoreSharing <$> normalise (unEl $ unDom a)
+         Def d es <- liftTCM $ ignoreSharing <$> normalise (unEl $ unDom a)
          let us = fromMaybe __IMPOSSIBLE__ $ allApplyElims es
          -- Get the original constructor and field names.
-         c <- (`withRangeOf` c) <$> do getConForm $ conName c
+         c <- (`withRangeOf` c) <$> do liftTCM $ getConForm $ conName c
 
          case namedArg p of
 
           -- Andreas, 2015-07-07 Issue 1606.
           -- Agda sometimes changes a record of dot patterns into a dot pattern,
           -- so the user should be allowed to do likewise.
-          A.DotP{} -> ifNotM (isFlexiblePattern q') mismatch $ {-else-} do
+          A.DotP{} -> ifNotM (liftTCM $ isFlexiblePattern q') mismatch $ {-else-} do
             maybe __IMPOSSIBLE__ (\ p -> strip self t (p : ps) qs0) =<< do
-              expandImplicitPattern' (unDom a) $ makeImplicitP p
+              liftTCM $ expandImplicitPattern' (unDom a) $ makeImplicitP p
 
           -- Andreas, 2013-03-21 if we encounter an implicit pattern
           -- in the with-clause, we expand it and restart
@@ -447,20 +510,20 @@
           -- or not.  This allows to drop hidden flexible record patterns from
           -- the with clauses even when they were present in the parent clause.
           A.WildP{} | Just _ <- conPRecord ci -> do
-            maybe __IMPOSSIBLE__ (\ p -> strip self t (p : ps) qs0) =<<
-              expandImplicitPattern' (unDom a) p
+            maybe __IMPOSSIBLE__ (\ p -> strip self t (p : ps) qs0) =<< do
+              liftTCM $ expandImplicitPattern' (unDom a) p
 
           A.ConP _ (A.AmbQ cs') ps' -> do
             -- Check whether the with-clause constructor can be (possibly trivially)
             -- disambiguated to be equal to the parent-clause constructor.
-            cs' <- mapM getConForm cs'
+            cs' <- liftTCM $ mapM getConForm cs'
             unless (elem c cs') mismatch
             -- Strip the subpatterns ps' and then continue.
-            stripConP d us b c qs' ps'
+            stripConP d us b c ConOCon qs' ps'
 
-          A.RecP _ fs -> caseMaybeM (isRecord d) mismatch $ \ def -> do
-            ps' <- insertMissingFields d (const $ A.WildP empty) fs (recordFieldNames def)
-            stripConP d us b c qs' ps'
+          A.RecP _ fs -> caseMaybeM (liftTCM $ isRecord d) mismatch $ \ def -> do
+            ps' <- liftTCM $ insertMissingFields d (const $ A.WildP empty) fs (recordFieldNames def)
+            stripConP d us b c ConORec qs' ps'
 
           p@(A.PatternSynP pi' c' ps') -> do
              reportSDoc "impossible" 10 $
@@ -486,7 +549,19 @@
           _ -> mismatch
       where
         mismatch = typeError $
-          WithClausePatternMismatch (namedArg p0) (snd <$> namedArg q)
+          WithClausePatternMismatch (namedArg p0) (dbPatVarName <$> namedArg q)
+        mismatchOrigin o o' = typeError . GenericDocError =<< fsep
+          [ text "With clause pattern"
+          , prettyA p0
+          , text "is not an instance of its parent pattern"
+          , prettyTCM $ dbPatVarName <$> namedArg q
+          , text $ "since the parent pattern is " ++ prettyProjOrigin o ++
+                   " and the with clause pattern is " ++ prettyProjOrigin o'
+          ]
+        prettyProjOrigin ProjPrefix  = "a prefix projection"
+        prettyProjOrigin ProjPostfix = "a postfix projection"
+        prettyProjOrigin ProjSystem  = __IMPOSSIBLE__
+
         -- | Make an ImplicitP, keeping arg. info.
         makeImplicitP :: NamedArg A.Pattern -> NamedArg A.Pattern
         makeImplicitP = updateNamedArg $ const $ A.WildP patNoRange
@@ -501,19 +576,21 @@
              -- ^ Type the remaining patterns eliminate.
           -> ConHead
              -- ^ Constructor of this pattern.
+          -> ConInfo
+             -- ^ Constructor info of this pattern (constructor/record).
           -> [NamedArg DeBruijnPattern]
              -- ^ Argument patterns (parent clause).
           -> [NamedArg A.Pattern]
              -- ^ Argument patterns (with clause).
-          -> TCM [NamedArg A.Pattern]
+          -> WriterT [A.NamedDotPattern] TCM [NamedArg A.Pattern]
              -- ^ Stripped patterns.
-        stripConP d us b c qs' ps' = do
+        stripConP d us b c ci qs' ps' = do
 
           -- Get the type and number of parameters of the constructor.
           Defn {defType = ct, theDef = Constructor{conPars = np}}  <- getConInfo c
           -- Compute the argument telescope for the constructor
           let ct' = ct `piApply` genericTake np us
-          TelV tel' _ <- telView ct'
+          TelV tel' _ <- liftTCM $ telView ct'
 
           reportSDoc "tc.with.strip" 20 $
             vcat [ text "ct  = " <+> prettyTCM ct
@@ -524,7 +601,7 @@
                  ]
 
           -- Compute the new type
-          let v     = Con c [ Arg info (var i) | (i, Arg info _) <- zip (downFrom $ size qs') qs' ]
+          let v  = Con c ci [ Arg info (var i) | (i, Arg info _) <- zip (downFrom $ size qs') qs' ]
               t' = tel' `abstract` absApp (raise (size tel') b) v
               self' = tel' `abstract` apply1 (raise (size tel') self) v  -- Issue 1546
 
@@ -535,12 +612,17 @@
             ]
 
           -- Insert implicit patterns (just for the constructor arguments)
-          psi' <- insertImplicitPatterns ExpandLast ps' tel'
+          psi' <- liftTCM $ insertImplicitPatterns ExpandLast ps' tel'
           unless (size psi' == size tel') $ typeError $
             WrongNumberOfConstructorArguments (conName c) (size tel') (size psi')
 
+          -- Andreas, Ulf, 2016-06-01, Ulf's variant at issue #679
+          -- Since instantiating the type with a constructor pattern
+          -- can reveal more hidden arguments, we need to insert them here.
+          psi <- liftTCM $ insertImplicitPatternsT ExpandLast (psi' ++ ps) t'
+
           -- Keep going
-          strip self' t' (psi' ++ ps) (qs' ++ qs)
+          strip self' t' psi (qs' ++ qs)
 
 -- | Construct the display form for a with function. It will display
 --   applications of the with function as applications to the original function.
@@ -561,7 +643,7 @@
   -> Telescope            -- ^ __@Δ₁@__      The arguments of the @with@ function before the @with@ expressions.
   -> Telescope            -- ^ __@Δ₂@__      The arguments of the @with@ function after the @with@ expressions.
   -> Nat                  -- ^ __@n@__       The number of @with@ expressions.
-  -> [NamedArg Pattern]   -- ^ __@qs@__      The parent patterns.
+  -> [NamedArg DeBruijnPattern]   -- ^ __@qs@__      The parent patterns.
   -> Permutation          -- ^ __@perm@__    Permutation to split into needed and unneeded vars.
   -> Permutation          -- ^ __@lhsPerm@__ Permutation reordering the variables in parent patterns.
   -> TCM DisplayForm
@@ -577,7 +659,7 @@
   -- Build the rhs of the display form.
   wild <- freshNoName_ <&> \ x -> Def (qualify_ x) []
   let -- Convert the parent patterns to terms.
-      tqs0       = patsToElims lhsPerm qs
+      tqs0       = patsToElims qs
       -- Build a substitution to replace the parent pattern vars
       -- by the pattern vars of the with-function.
       (ys0, ys1) = splitAt (size delta1) $ permute perm $ downFrom m
@@ -592,19 +674,19 @@
 
   -- Build the lhs of the display form and finish.
   -- @var 0@ is the pattern variable (hole).
-  let display = Display arity (replicate arity $ var 0) dt
+  let display = Display arity (replicate arity $ Apply $ defaultArg $ var 0) dt
 
   -- Debug printing.
-  let addFullCtx = addCtxTel delta1
+  let addFullCtx = addContext delta1
                  . flip (foldr addContext) (for [1..n] $ \ i -> "w" ++ show i)
-                 . addCtxTel delta2
+                 . addContext delta2
   reportSDoc "tc.with.display" 20 $ vcat
     [ text "withDisplayForm"
     , nest 2 $ vcat
       [ text "f      =" <+> text (show f)
       , text "aux    =" <+> text (show aux)
       , text "delta1 =" <+> prettyTCM delta1
-      , text "delta2 =" <+> do addCtxTel delta1 $ prettyTCM delta2
+      , text "delta2 =" <+> do addContext delta1 $ prettyTCM delta2
       , text "n      =" <+> text (show n)
       , text "perm   =" <+> text (show perm)
       , text "top    =" <+> do addFullCtx $ prettyTCM topArgs
@@ -643,25 +725,21 @@
 
 -- Andreas, 2014-12-05 refactored using numberPatVars
 -- Andreas, 2013-02-28 modeled after Coverage/Match/buildMPatterns
--- The permutation is the one of the original clause.
-patsToElims :: Permutation -> [NamedArg Pattern] -> [I.Elim' DisplayTerm]
-patsToElims perm ps = toElims $ numberPatVars perm ps
+patsToElims :: [NamedArg DeBruijnPattern] -> [I.Elim' DisplayTerm]
+patsToElims = map $ toElim . fmap namedThing
   where
-    toElims :: [NamedArg DeBruijnPattern] -> [I.Elim' DisplayTerm]
-    toElims = map $ toElim . fmap namedThing
-
     toElim :: Arg DeBruijnPattern -> I.Elim' DisplayTerm
     toElim (Arg ai p) = case p of
-      ProjP d -> I.Proj d
-      p       -> I.Apply $ Arg ai $ toTerm p
+      ProjP o d -> I.Proj o d
+      p         -> I.Apply $ Arg ai $ toTerm p
 
     toTerms :: [NamedArg DeBruijnPattern] -> [Arg DisplayTerm]
     toTerms = map $ fmap $ toTerm . namedThing
 
     toTerm :: DeBruijnPattern -> DisplayTerm
     toTerm p = case p of
-      ProjP d     -> DDef d [] -- WRONG. TODO: convert spine to non-spine ... DDef d . defaultArg
-      VarP (i, x) -> DTerm  $ var i
+      ProjP _ d   -> DDef d [] -- WRONG. TODO: convert spine to non-spine ... DDef d . defaultArg
+      VarP x      -> DTerm  $ var $ dbPatVarIndex x
       DotP t      -> DDot   $ t
-      ConP c _ ps -> DCon c $ toTerms ps
+      ConP c cpi ps -> DCon c (fromConPatternInfo cpi) $ toTerms ps
       LitP l      -> DTerm  $ Lit l
diff --git a/src/full/Agda/Utils/AssocList.hs b/src/full/Agda/Utils/AssocList.hs
--- a/src/full/Agda/Utils/AssocList.hs
+++ b/src/full/Agda/Utils/AssocList.hs
@@ -1,5 +1,4 @@
 {-# LANGUAGE CPP           #-}
-{-# LANGUAGE TupleSections #-}
 
 -- | Additional functions for association lists.
 
diff --git a/src/full/Agda/Utils/Bag.hs b/src/full/Agda/Utils/Bag.hs
--- a/src/full/Agda/Utils/Bag.hs
+++ b/src/full/Agda/Utils/Bag.hs
@@ -1,6 +1,5 @@
 {-# LANGUAGE CPP                 #-}
 {-# LANGUAGE ScopedTypeVariables #-}
-{-# LANGUAGE TemplateHaskell     #-}
 
 -- | A simple overlay over Data.Map to manage unordered sets with duplicates.
 
@@ -16,12 +15,11 @@
 import qualified Data.List as List
 import Data.Map (Map)
 import qualified Data.Map as Map
-import Data.Monoid
+import Data.Semigroup
 import qualified Data.Set as Set
 import Data.Traversable
 
 import Agda.Utils.Functor
-import Agda.Utils.QuickCheck
 
 #include "undefined.h"
 import Agda.Utils.Impossible
@@ -142,9 +140,12 @@
 instance Show a => Show (Bag a) where
   showsPrec _ (Bag b) = ("Agda.Utils.Bag.Bag (" ++) . showsPrec 0 b . (')':)
 
+instance Ord a => Semigroup (Bag a) where
+  (<>) = union
+
 instance Ord a => Monoid (Bag a) where
   mempty  = empty
-  mappend = union
+  mappend = (<>)
   mconcat = unions
 
 instance Foldable Bag where
@@ -152,66 +153,3 @@
 
 -- not a Functor (only works for 'Ord'ered types)
 -- not Traversable (only works for 'Ord'ered types)
-
-------------------------------------------------------------------------
--- * Properties
-------------------------------------------------------------------------
-
-instance (Ord a, Arbitrary a) => Arbitrary (Bag a) where
-  arbitrary = fromList <$> arbitrary
-
-prop_count_empty :: Ord a => a -> Bool
-prop_count_empty a = count a empty == 0
-
-prop_count_singleton :: Ord a => a -> Bool
-prop_count_singleton a = count a (singleton a) == 1
-
-prop_count_insert :: Ord a => a -> Bag a -> Bool
-prop_count_insert a b = count a (insert a b) == 1 + count a b
-
-prop_size_union :: Ord a => Bag a -> Bag a -> Bool
-prop_size_union b c = size (b `union` c) == size b + size c
-
-prop_size_fromList :: Ord a => [a] -> Bool
-prop_size_fromList l = size (fromList l) == length l
-
-prop_fromList_toList :: Ord a => Bag a -> Bool
-prop_fromList_toList b = fromList (toList b) == b
-
-prop_toList_fromList :: Ord a => [a] -> Bool
-prop_toList_fromList l = toList (fromList l) == List.sort l
-
-prop_keys_fromList :: Ord a => [a] -> Bool
-prop_keys_fromList l = keys (fromList l) == Set.toList (Set.fromList l)
-
-prop_nonempty_groups :: Bag a -> Bool
-prop_nonempty_groups b = all (not . List.null) $ groups b
-
-prop_map_id :: Ord a => Bag a -> Bool
-prop_map_id b = map id b == b
-
-prop_map_compose :: (Ord b, Ord c) =>
-                    (b -> c) -> (a -> b) -> Bag a -> Bool
-prop_map_compose f g b = map f (map g b) == map (f . g) b
-
-prop_traverse_id :: Ord a => Bag a -> Bool
-prop_traverse_id b = traverse' Identity b == Identity b
-
-------------------------------------------------------------------------
--- * All tests
-------------------------------------------------------------------------
-
--- Template Haskell hack to make the following $quickCheckAll work
--- under ghc-7.8.
-return [] -- KEEP!
-
--- | All tests as collected by 'quickCheckAll'.
---
---   Using 'quickCheckAll' is convenient and superior to the manual
---   enumeration of tests, since the name of the property is
---   added automatically.
-
-tests :: IO Bool
-tests = do
-  putStrLn "Agda.Utils.Favorites"
-  $quickCheckAll
diff --git a/src/full/Agda/Utils/Benchmark.hs b/src/full/Agda/Utils/Benchmark.hs
--- a/src/full/Agda/Utils/Benchmark.hs
+++ b/src/full/Agda/Utils/Benchmark.hs
@@ -1,9 +1,5 @@
-{-# LANGUAGE FlexibleInstances         #-}
-{-# LANGUAGE FunctionalDependencies    #-}
-{-# LANGUAGE MultiParamTypeClasses     #-}
 {-# LANGUAGE NoMonomorphismRestriction #-}
 {-# LANGUAGE UndecidableInstances      #-}
-{-# LANGUAGE TupleSections             #-}
 
 -- | Tools for benchmarking and accumulating results.
 --   Nothing Agda-specific in here.
@@ -16,8 +12,10 @@
 import Control.Monad.Reader
 import Control.Monad.State
 
+import Data.Foldable (foldMap)
 import Data.Functor
 import qualified Data.List as List
+import Data.Monoid
 
 import qualified Text.PrettyPrint.Boxes as Boxes
 
@@ -77,14 +75,25 @@
 addCPUTime :: Ord a => Account a -> CPUTime -> Benchmark a -> Benchmark a
 addCPUTime acc t = mapTimings (Trie.insertWith (+) acc t)
 
--- | Print benchmark as two-column table with totals.
+-- | Print benchmark as three-column table with totals.
 instance (Ord a, Pretty a) => Pretty (Benchmark a) where
   pretty b = text $ Boxes.render table
     where
-    (accounts, times) = unzip $ Trie.toList $ timings b
+    trie = timings b
+    (accounts, times) = unzip $ Trie.toList trie
+    aggrTimes         = do
+      a <- accounts
+      let t = Trie.lookupTrie a trie
+          hasChildren =
+            case foldMap (:[]) t of
+              _:_:_ -> True
+              _     -> False
+      return $ if not (null a) && hasChildren
+               then Boxes.text $ "(" ++ prettyShow (getSum $ foldMap Sum t) ++ ")"
+               else Boxes.text ""
 
     -- Generate a table.
-    table = Boxes.hsep 1 Boxes.left [col1, col2]
+    table = Boxes.hsep 1 Boxes.left [col1, col2, col3]
 
     -- First column: Accounts.
     col1 = Boxes.vcat Boxes.left $
@@ -94,6 +103,9 @@
     col2 = Boxes.vcat Boxes.right $
            map (Boxes.text . prettyShow) $
            sum times : times
+    -- Thid column: Aggregate times.
+    col3 = Boxes.vcat Boxes.right $
+           Boxes.text "" : aggrTimes
 
     showAccount [] = "Miscellaneous"
     showAccount ks = List.intercalate "." $ map prettyShow ks
@@ -173,6 +185,15 @@
   old <- switchBenchmarking $ Strict.Just account
   -- Compute and switch back to old account.
   (liftIO . E.evaluate =<< m) `finally` switchBenchmarking old
+
+-- | Bill a CPS function to an account. Can't handle exceptions.
+billToCPS :: MonadBench a m => Account a -> ((b -> m c) -> m c) -> (b -> m c) -> m c
+billToCPS account f k = ifNotM (getsBenchmark benchmarkOn) (f k) $ do
+  -- Switch to new account.
+  old <- switchBenchmarking $ Strict.Just account
+  f $ \ x -> x `seq` do
+    _ <- switchBenchmarking old
+    k x
 
 -- | Bill a pure computation to a specific account.
 billPureTo :: MonadBench a m  => Account a -> c -> m c
diff --git a/src/full/Agda/Utils/BiMap.hs b/src/full/Agda/Utils/BiMap.hs
--- a/src/full/Agda/Utils/BiMap.hs
+++ b/src/full/Agda/Utils/BiMap.hs
@@ -1,9 +1,5 @@
 {-# LANGUAGE DeriveDataTypeable         #-}
-{-# LANGUAGE FlexibleInstances          #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
-{-# LANGUAGE PatternGuards              #-}
-{-# LANGUAGE TemplateHaskell            #-}
-{-# LANGUAGE TupleSections              #-}
 
 -- | Finite bijections (implemented as a pair of maps).
 
@@ -21,8 +17,6 @@
 import Data.Tuple
 import Data.Typeable ( Typeable )
 
-import Test.QuickCheck
-
 -- | Finite bijective map from @a@ to @b@.  There, and back again.
 data BiMap a b = BiMap
   { biMapThere :: Map a b
@@ -77,29 +71,3 @@
 instance (Show a, Show b) => Show (BiMap a b) where
   show bimap = "Agda.Utils.BiMap.fromList " ++ show (toList bimap)
 
-instance (Ord a, Ord b, Arbitrary a, Arbitrary b) => Arbitrary (BiMap a b) where
-  arbitrary = fromList <$> do List.zip <$> alist <*> blist
-    where
-      alist = List.nub <$> arbitrary
-      blist = List.nub <$> arbitrary
-
-------------------------------------------------------------------------
--- * Properties
-------------------------------------------------------------------------
-
-prop_BiMap_invariant :: (Ord a, Ord b) => BiMap a b -> Bool
-prop_BiMap_invariant (BiMap t u) =
-  Map.toAscList t == List.sort (List.map swap (Map.toList u))
-
-------------------------------------------------------------------------
--- * All tests
-------------------------------------------------------------------------
-
--- Template Haskell hack to make the following $quickCheckAll work
--- under ghc-7.8.
-return [] -- KEEP!
-
-tests :: IO Bool
-tests = do
-  putStrLn "Agda.Utils.BiMap"
-  $quickCheckAll
diff --git a/src/full/Agda/Utils/Cluster.hs b/src/full/Agda/Utils/Cluster.hs
--- a/src/full/Agda/Utils/Cluster.hs
+++ b/src/full/Agda/Utils/Cluster.hs
@@ -1,13 +1,10 @@
--- {-# LANGUAGE FlexibleInstances #-}
-{-# LANGUAGE TemplateHaskell #-}
--- {-# LANGUAGE TupleSections #-}
 
 -- | Create clusters of non-overlapping things.
 
 module Agda.Utils.Cluster
-  ( cluster
+  ( C
+  , cluster
   , cluster'
-  , tests
   ) where
 
 import Control.Monad
@@ -20,9 +17,6 @@
 import qualified Data.IntMap as IntMap
 import Data.List
 
-import Test.QuickCheck
-import Test.QuickCheck.Function
-
 -- | Characteristic identifiers.
 type C = Int
 
@@ -47,98 +41,3 @@
   let m = IntMap.unionsWith (++) cas
   -- Return the values of the map
   return $ IntMap.elems m
-
-------------------------------------------------------------------------
--- * Properties
-------------------------------------------------------------------------
-
--- instance Show (Int -> (C, [C])) where
---   show f = "function " ++ show (map (\ x -> (x, f x)) [-10..10])
-
--- Fundamental properties: soundness and completeness
-
--- | Not too many clusters.  (Algorithm equated all it could.)
---
---   Each element in a cluster shares a characteristic with at least one
---   other element in the same cluster.
-prop_cluster_complete :: Fun Int (C, [C]) -> [Int] -> Bool
-prop_cluster_complete (Fun _ f) as =
-  (`all` cluster f as) $ \ cl ->
-  (`all` cl) $ \ a ->
-  let csa = uncurry (:) $ f a in
-  let cl' = delete a cl       in
-  -- Either a is the single element of the cluster, or it shares a characteristic c
-  -- with some other element b of the same cluster.
-  null cl' || not (null [ (b,c) | b <- cl', c <- uncurry (:) (f b), c `elem` csa ])
-
--- | Not too few clusters.  (Algorithm did not equate too much.)
---
---   Elements of different clusters share no characteristics.
-prop_cluster_sound :: Fun Int (C, [C]) -> [Int] -> Bool
-prop_cluster_sound (Fun _ f) as =
-  (`all` [ (c, d) | let cs = cluster f as, c <- cs, d <- cs, c /= d]) $ \ (c, d) ->
-  (`all` c) $ \ a ->
-  (`all` d) $ \ b ->
-  null $ (uncurry (:) $ f a) `intersect` (uncurry (:) $ f b)
-
-neToList :: (a, [a]) -> [a]
-neToList = uncurry (:)
-
-isSingleton, exactlyTwo, atLeastTwo :: [a] -> Bool
-isSingleton x = length x == 1
-exactlyTwo  x = length x == 2
-atLeastTwo  x = length x >= 2
-
-prop_cluster_empty :: Bool
-prop_cluster_empty =
-  null (cluster (const (0,[])) [])
-
-prop_cluster_permutation :: Fun Int (C, [C]) -> [Int] -> Bool
-prop_cluster_permutation (Fun _ f) as =
-  sort as == sort (concat (cluster f as))
-
-prop_cluster_single :: a -> [a] -> Bool
-prop_cluster_single a as =
-  isSingleton $ cluster (const (0,[])) $ (a:as)
-
-prop_cluster_idem :: Fun a (C, [C]) -> a -> [a] -> Bool
-prop_cluster_idem (Fun _ f) a as =
-  isSingleton $ cluster f $ head $ cluster f (a:as)
-
-prop_two_clusters :: [Int] -> Bool
-prop_two_clusters as =
-  atLeastTwo $ cluster (\ x -> (x, [x])) (-1:1:as)
-
--- | An example.
---
---   "anabel" is related to "babel" (common letter 'a' in 2-letter prefix)
---   which is related to "bond" (common letter 'b').
---
---   "hurz", "furz", and "kurz" are all related (common letter 'u').
-test :: [[String]]
-test = cluster (\ (x:y:_) -> (ord x,[ord y]))
-         ["anabel","bond","babel","hurz","furz","kurz"]
-
-prop_test :: Bool
-prop_test = test == [["anabel","bond","babel"],["hurz","furz","kurz"]]
-
--- | Modified example (considering only the first letter).
-test1 :: [[String]]
-test1 = cluster (\ (x:_:_) -> (ord x,[]))
-          ["anabel","bond","babel","hurz","furz","kurz"]
-
-prop_test1 :: Bool
-prop_test1 = test1 == [["anabel"],["bond","babel"],["furz"],["hurz"],["kurz"]]
-
-------------------------------------------------------------------------
--- * All tests
-------------------------------------------------------------------------
-
--- Template Haskell hack to make the following $quickCheckAll work
--- under ghc-7.8.
-return [] -- KEEP!
-
-tests :: IO Bool
-tests = do
-  putStrLn "Agda.Utils.Cluster"
-  $quickCheckAll
diff --git a/src/full/Agda/Utils/Either.hs b/src/full/Agda/Utils/Either.hs
--- a/src/full/Agda/Utils/Either.hs
+++ b/src/full/Agda/Utils/Either.hs
@@ -10,12 +10,9 @@
   , fromLeft, fromRight
   , maybeLeft, maybeRight
   , allLeft, allRight
-  , tests
+  , maybeToEither
   ) where
 
-import Agda.Utils.QuickCheck
-import Agda.Utils.TestHelpers
-
 -- | Loop while we have an exception.
 
 whileLeft :: Monad m => (a -> Either b c) -> (a -> b -> m a) -> (a -> c -> m d) -> a -> m d
@@ -105,18 +102,6 @@
 allRight :: [Either a b] -> Maybe [b]
 allRight = mapM maybeRight
 
-prop_allRight :: Eq b => [Either t b] -> Bool
-prop_allRight xs =
-  allRight xs ==
-    if all isRight xs then
-      Just $ map (\ (Right x) -> x) xs
-     else
-      Nothing
-
-------------------------------------------------------------------------
--- All tests
-
-tests :: IO Bool
-tests = runTests "Agda.Utils.Either"
-  [ quickCheck' (prop_allRight :: [Either Integer Bool] -> Bool)
-  ]
+-- | Convert 'Maybe' to @'Either' ()'@
+maybeToEither :: Maybe a -> Either () a
+maybeToEither = maybe (Left ()) Right
diff --git a/src/full/Agda/Utils/Empty.hs b/src/full/Agda/Utils/Empty.hs
--- a/src/full/Agda/Utils/Empty.hs
+++ b/src/full/Agda/Utils/Empty.hs
@@ -1,5 +1,4 @@
 {-# LANGUAGE CPP #-}
-{-# LANGUAGE EmptyDataDecls #-}
 
 -- | An empty type with some useful instances.
 module Agda.Utils.Empty where
diff --git a/src/full/Agda/Utils/Environment.hs b/src/full/Agda/Utils/Environment.hs
--- a/src/full/Agda/Utils/Environment.hs
+++ b/src/full/Agda/Utils/Environment.hs
@@ -5,34 +5,42 @@
 import Data.Char
 import Data.Maybe
 import System.Environment
+import System.Directory ( getHomeDirectory )
 
 expandEnvironmentVariables :: String -> IO String
 expandEnvironmentVariables s = do
   env <- getEnvironment
-  return $ expandVars env s
+  home <- getHomeDirectory
+  return $ expandVars home env s
 
-expandVars :: [(String, String)] -> String -> String
-expandVars env s = concatMap repl $ tokens s
+expandVars :: String -> [(String, String)] -> String -> String
+expandVars home env s = concatMap repl $ tokens s
   where
+    repl Home = home ++ "/"
     repl (Var x) = fromMaybe "" $ lookup x env
     repl (Str s) = s
 
-data Token = Var String | Str String
+data Token = Home | Var String | Str String
   deriving (Eq, Show)
 
 tokens :: String -> [Token]
-tokens s =
-  case s of
-    '$' : '$' : s -> cons '$' $ tokens s
-    '$' : s@(c : _) | isAlpha c -> Var x : tokens s'
-      where (x, s') = span isAlphaNum s
-    '$' : '{' : s ->
-      case break (== '}') s of
-        (x, '}' : s) -> Var x : tokens s
-        _            -> [Str $ "${" ++ s] -- abort on unterminated '{'
-    c : s -> cons c $ tokens s
-    ""    -> []
+tokens s = case s of
+  '~' : '/' : s -> Home : tokens' s
+  '\\' : '~' : s -> cons '~' $ tokens' s
+  _ -> tokens' s
   where
+    tokens' :: String -> [Token]
+    tokens' s =
+      case s of
+        '$' : '$' : s -> cons '$' $ tokens' s
+        '$' : s@(c : _) | c == '_' || isAlpha c -> Var x : tokens' s'
+          where (x, s') = span (\ c -> c == '_' || isAlphaNum c) s
+        '$' : '{' : s ->
+          case break (== '}') s of
+            (x, '}' : s) -> Var x : tokens' s
+            _            -> [Str $ "${" ++ s] -- abort on unterminated '{'
+        c : s -> cons c $ tokens' s
+        ""    -> []
     cons c (Str s : ts) = Str (c : s) : ts
     cons c ts           = Str [c] : ts
 
diff --git a/src/full/Agda/Utils/Except.hs b/src/full/Agda/Utils/Except.hs
--- a/src/full/Agda/Utils/Except.hs
+++ b/src/full/Agda/Utils/Except.hs
@@ -1,5 +1,4 @@
 {-# LANGUAGE CPP #-}
-{-# LANGUAGE FlexibleInstances #-}
 
 #if !(MIN_VERSION_mtl(2,2,1))
 {-# OPTIONS_GHC -fno-warn-orphans #-}
@@ -73,7 +72,6 @@
 instance Error Doc where
   noMsg  = empty
   strMsg = text
-#endif
 
 -- | To simulate @MaybeT@ by @ExceptT@.
 instance Error () where
@@ -82,3 +80,5 @@
 -- Stupid ErrorT!
 instance Error (a, b, c) where
   noMsg = __IMPOSSIBLE__
+
+#endif
diff --git a/src/full/Agda/Utils/Favorites.hs b/src/full/Agda/Utils/Favorites.hs
--- a/src/full/Agda/Utils/Favorites.hs
+++ b/src/full/Agda/Utils/Favorites.hs
@@ -1,7 +1,4 @@
-{-# LANGUAGE DeriveFoldable             #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
-{-# LANGUAGE ScopedTypeVariables        #-}
-{-# LANGUAGE TemplateHaskell            #-}
 
 -- | Maintaining a list of favorites of some partially ordered type.
 --   Only the best elements are kept.
@@ -18,20 +15,18 @@
 
 import Data.Foldable (Foldable)
 import Data.Functor
-import Data.Monoid
+import Data.Semigroup
 import qualified Data.List as List
 import qualified Data.Set as Set
 
-import Test.QuickCheck
-
 import Agda.Utils.Null
-import Agda.Utils.PartialOrd hiding (tests)
+import Agda.Utils.PartialOrd
 import Agda.Utils.Singleton
 import Agda.Utils.Tuple
 
 -- | A list of incomparable favorites.
 newtype Favorites a = Favorites { toList :: [a] }
-  deriving (Foldable, Show, CoArbitrary, Null, Singleton a)
+  deriving (Foldable, Show, Null, Singleton a)
 
 -- | Equality checking is a bit expensive, since we need to sort!
 --   Maybe use a 'Set' of favorites in the first place?
@@ -115,59 +110,8 @@
 fromList = List.foldl' (flip insert) empty
 
 -- | 'Favorites' forms a 'Monoid' under 'empty' and 'union.
+instance PartialOrd a => Semigroup (Favorites a) where
+  (<>) = union
 instance PartialOrd a => Monoid (Favorites a) where
   mempty  = empty
-  mappend = union
-
-------------------------------------------------------------------------
--- * Properties
-------------------------------------------------------------------------
-
-instance (PartialOrd a, Arbitrary a) => Arbitrary (Favorites a) where
-  arbitrary = fromList <$> arbitrary
-
-property_null_empty :: Bool
-property_null_empty = null (empty :: Favorites ())
-
-property_not_null_singleton :: forall a. a -> Bool
-property_not_null_singleton x = not $ null (singleton x :: Favorites a)
-
--- Remember: less is better!
-
-prop_compareWithFavorites :: ISet -> Favorites ISet -> Bool
-prop_compareWithFavorites a@ISet{} as =
-  case compareWithFavorites a as of
-    Dominates dominated notDominated ->
-      all (related a POLT) dominated &&
-      all (related a POAny) notDominated
-    IsDominated dominator ->
-      related a POGE dominator
-
-prop_fromList_after_toList :: Favorites ISet -> Bool
-prop_fromList_after_toList as =
-  fromList (toList as) == as
-
--- | A second way to compute the 'union' is to use 'compareFavorites'.
-prop_union_union2 :: Favorites ISet -> Favorites ISet -> Bool
-prop_union_union2 as bs =
-  union as bs == union2 as bs
-    where union2 as bs = unionCompared $ compareFavorites as bs
-
-------------------------------------------------------------------------
--- * All tests
-------------------------------------------------------------------------
-
--- Template Haskell hack to make the following $quickCheckAll work
--- under ghc-7.8.
-return [] -- KEEP!
-
--- | All tests as collected by 'quickCheckAll'.
---
---   Using 'quickCheckAll' is convenient and superior to the manual
---   enumeration of tests, since the name of the property is
---   added automatically.
-
-tests :: IO Bool
-tests = do
-  putStrLn "Agda.Utils.Favorites"
-  $quickCheckAll
+  mappend = (<>)
diff --git a/src/full/Agda/Utils/FileName.hs b/src/full/Agda/Utils/FileName.hs
--- a/src/full/Agda/Utils/FileName.hs
+++ b/src/full/Agda/Utils/FileName.hs
@@ -4,14 +4,13 @@
 
 {-| Operations on file names. -}
 module Agda.Utils.FileName
-  ( AbsolutePath
+  ( AbsolutePath(AbsolutePath)
   , filePath
-  , rootName
   , mkAbsolute
   , absolute
   , (===)
   , doesFileExistCaseSensitive
-  , tests
+  , rootPath
   ) where
 
 import Control.Applicative
@@ -29,9 +28,8 @@
 import Data.Hashable
 import Data.Typeable (Typeable)
 
+import Agda.Utils.Monad
 import Agda.Utils.Pretty
-import Agda.Utils.TestHelpers
-import Agda.Utils.QuickCheck
 
 #include "undefined.h"
 import Agda.Utils.Impossible
@@ -58,17 +56,6 @@
 instance Pretty AbsolutePath where
   pretty = text . filePath
 
--- | The paths have to be absolute, valid and normalised, without
--- trailing path separators.
-
-absolutePathInvariant :: AbsolutePath -> Bool
-absolutePathInvariant x =
-  isAbsolute f &&
-  isValid f &&
-  f == normalise f &&
-  f == dropTrailingPathSeparator f
-  where f = filePath x
-
 -- | Constructs 'AbsolutePath's.
 --
 -- Precondition: The path must be absolute and valid.
@@ -79,11 +66,6 @@
       AbsolutePath $ Text.pack $ dropTrailingPathSeparator $ normalise f
   | otherwise    = __IMPOSSIBLE__
 
-prop_mkAbsolute :: FilePath -> Property
-prop_mkAbsolute f =
-  let path = rootPath ++ f
-  in  isValid path ==> absolutePathInvariant $ mkAbsolute $ path
-
 rootPath :: FilePath
 #if mingw32_HOST_OS
 rootPath = joinDrive "C:" [pathSeparator]
@@ -123,38 +105,19 @@
 (===) :: AbsolutePath -> AbsolutePath -> Bool
 (===) = equalFilePath `on` filePath
 
--- | Case-sensitive doesFileExist for Windows.
+-- | Case-sensitive 'doesFileExist' for Windows.
+--
 -- This is case-sensitive only on the file name part, not on the directory part.
 -- (Ideally, path components coming from module name components should be
 --  checked case-sensitively and the other path components should be checked
---  case insenstively.)
+--  case insensitively.)
+
 doesFileExistCaseSensitive :: FilePath -> IO Bool
 #if mingw32_HOST_OS
 doesFileExistCaseSensitive f = do
-  ex <- doesFileExist f
-  if ex then bracket (findFirstFile f) (findClose . fst) $
-               fmap (takeFileName f ==) . getFindDataFileName . snd
-        else return False
+  doesFileExist f `and2M` do
+    bracket (findFirstFile f) (findClose . fst) $
+      fmap (takeFileName f ==) . getFindDataFileName . snd
 #else
 doesFileExistCaseSensitive f = doesFileExist f
 #endif
-
-------------------------------------------------------------------------
--- Generators
-
-instance Arbitrary AbsolutePath where
-  arbitrary = mk . take 3 . map (take 2) <$>
-                listOf (listOf1 (elements "a1"))
-    where mk ps = mkAbsolute (joinPath $ rootPath : ps)
-
-instance CoArbitrary AbsolutePath where
-  coarbitrary (AbsolutePath t) = coarbitrary (Text.unpack t)
-
-------------------------------------------------------------------------
--- All tests
-
-tests :: IO Bool
-tests = runTests "Agda.Utils.FileName"
-  [ quickCheck' absolutePathInvariant
-  , quickCheck' prop_mkAbsolute
-  ]
diff --git a/src/full/Agda/Utils/Function.hs b/src/full/Agda/Utils/Function.hs
--- a/src/full/Agda/Utils/Function.hs
+++ b/src/full/Agda/Utils/Function.hs
@@ -1,4 +1,3 @@
-{-# LANGUAGE TupleSections #-}
 
 module Agda.Utils.Function where
 
diff --git a/src/full/Agda/Utils/Functor.hs b/src/full/Agda/Utils/Functor.hs
--- a/src/full/Agda/Utils/Functor.hs
+++ b/src/full/Agda/Utils/Functor.hs
@@ -1,5 +1,4 @@
 {-# LANGUAGE CPP #-}
-{-# LANGUAGE TupleSections #-}
 
 -- | Utilities for functors.
 
diff --git a/src/full/Agda/Utils/Graph/AdjacencyMap/Unidirectional.hs b/src/full/Agda/Utils/Graph/AdjacencyMap/Unidirectional.hs
--- a/src/full/Agda/Utils/Graph/AdjacencyMap/Unidirectional.hs
+++ b/src/full/Agda/Utils/Graph/AdjacencyMap/Unidirectional.hs
@@ -1,12 +1,7 @@
 {-# LANGUAGE BangPatterns               #-}
 {-# LANGUAGE CPP                        #-}
-{-# LANGUAGE DeriveFunctor              #-}
-{-# LANGUAGE DoAndIfThenElse            #-}
-{-# LANGUAGE FlexibleContexts           #-}
-{-# LANGUAGE FlexibleInstances          #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
 {-# LANGUAGE ScopedTypeVariables        #-}
-{-# LANGUAGE TupleSections              #-}
 
 -- | Directed graphs (can of course simulate undirected graphs).
 --
@@ -90,8 +85,6 @@
 import Data.Set (Set)
 import qualified Data.Tree as Tree
 
-import Test.QuickCheck hiding (label)
-
 import Agda.Utils.Function
 import Agda.Utils.Functor
 import Agda.Utils.List (headMaybe)
@@ -100,7 +93,6 @@
 import Agda.Utils.SemiRing
 import Agda.Utils.Singleton (Singleton)
 import qualified Agda.Utils.Singleton as Singleton
-import Agda.Utils.TestHelpers
 import Agda.Utils.Tuple
 
 #include "undefined.h"
@@ -765,31 +757,3 @@
       lookup' s t = case lookup s t g of
         Nothing -> ozero
         Just e  -> e
-
-------------------------------------------------------------------------
--- Generators
-
-instance (Arbitrary s, Arbitrary t, Arbitrary e) => Arbitrary (Edge s t e) where
-  arbitrary = Edge <$> arbitrary <*> arbitrary <*> arbitrary
-
-instance (CoArbitrary s, CoArbitrary t, CoArbitrary e) => CoArbitrary (Edge s t e) where
-  coarbitrary (Edge s t e) = coarbitrary s . coarbitrary t . coarbitrary e
-
-instance (Ord n, Arbitrary n, Arbitrary e) =>
-         Arbitrary (Graph n n e) where
-  arbitrary = do
-    nodes <- sized $ \ n -> resize (2 * isqrt n) arbitrary
-    edges <- mapM (\ (n1, n2) -> Edge n1 n2 <$> arbitrary) =<<
-                  listOfElements ((,) <$> nodes <*> nodes)
-    let g1 = fromList edges
-        g2 = g1 `union` fromNodes nodes
-    elements [ g1  -- Does not contain empty outermost node maps.
-             , g2  -- May contain empty outermost node maps.
-             ]
-    where
-    isqrt :: Int -> Int
-    isqrt = round . sqrt . fromIntegral
-
-  shrink g =
-    [ removeNode n g     | n <- Set.toList $ nodes g ] ++
-    [ removeEdge n1 n2 g | Edge n1 n2 _ <- edges g ]
diff --git a/src/full/Agda/Utils/Graph/AdjacencyMap/Unidirectional/Tests.hs b/src/full/Agda/Utils/Graph/AdjacencyMap/Unidirectional/Tests.hs
deleted file mode 100644
--- a/src/full/Agda/Utils/Graph/AdjacencyMap/Unidirectional/Tests.hs
+++ /dev/null
@@ -1,362 +0,0 @@
-{-# OPTIONS_GHC -fno-warn-missing-signatures #-}
-
-{-# LANGUAGE CPP                        #-}
-{-# LANGUAGE DoAndIfThenElse            #-}
-{-# LANGUAGE FlexibleInstances          #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving #-}
-{-# LANGUAGE NoMonomorphismRestriction  #-}
-{-# LANGUAGE TemplateHaskell            #-}
-
--- | Properties for graph library.
-
-module Agda.Utils.Graph.AdjacencyMap.Unidirectional.Tests (tests) where
-
-import Prelude hiding (null)
-
-
-import Control.Monad
-
-import qualified Data.Foldable as Fold
-import Data.Function
-import qualified Data.Graph as Graph
-import qualified Data.List as List
-import Data.Maybe
-import qualified Data.Map as Map
-import qualified Data.Set as Set
-
-import Test.QuickCheck as QuickCheck
-
-import Agda.TypeChecking.Positivity.Occurrence hiding (tests)
-
-import Agda.Utils.Function (iterateUntil)
-import Agda.Utils.Functor
-import Agda.Utils.Graph.AdjacencyMap.Unidirectional as Graph
-import Agda.Utils.List (distinct)
-import Agda.Utils.Null as Null
-import Agda.Utils.SemiRing
-import Agda.Utils.Singleton (Singleton)
-import qualified Agda.Utils.Singleton as Singleton
-import Agda.Utils.TestHelpers
-
-#include "undefined.h"
-import Agda.Utils.Impossible
-
-------------------------------------------------------------------------
--- * Generating random graphs
-------------------------------------------------------------------------
-
--- | Generates a node from the graph. (Unless the graph is empty.)
-
-nodeIn :: (Ord n, Arbitrary n) => Graph n n e -> Gen n
-nodeIn g = elementsUnlessEmpty (Set.toList $ nodes g)
-
--- | Generates an edge from the graph. (Unless the graph contains no
--- edges.)
-
-edgeIn :: (Arbitrary n, Arbitrary e) =>
-          Graph n n e -> Gen (Edge n n e)
-edgeIn g = elementsUnlessEmpty (edges g)
-
--- | Sample graph type used to test some graph algorithms.
-
-type G = Graph N N E
-
--- | Sample edge type used to test some graph algorithms.
-
-type E = Occurrence
-
--- | Sample node type used to test some graph algorithms.
-
-newtype N = N (Positive Int)
-  deriving (Arbitrary, Eq, Ord)
-
-n :: Int -> N
-n = N . Positive
-
-instance Show N where
-  show (N (Positive n)) = "n " ++ show n
-
--- | 'gaussJordanFloydWarshallMcNaughtonYamada' can be used to check
--- if any two nodes in a graph are connected.
-
-data Connected = Disconnected | Connected
-  deriving (Eq, Show)
-
-instance SemiRing Connected where
-  ozero = Disconnected
-  oone  = Connected
-
-  Disconnected `oplus` c = c
-  Connected    `oplus` _ = Connected
-
-  Disconnected `otimes` _ = Disconnected
-  Connected    `otimes` c = c
-
-instance StarSemiRing Connected where
-  ostar _ = Connected
-
-connectivityGraph :: Ord n => Graph n n e -> Graph n n Connected
-connectivityGraph =
-  fst . gaussJordanFloydWarshallMcNaughtonYamada .
-  fmap (const oone)
-
-connected :: Ord n => Graph n n Connected -> n -> n -> Bool
-connected g i j = Graph.lookup i j g == Just Connected
-
-------------------------------------------------------------------------
--- * Graph properties
-------------------------------------------------------------------------
-
--- prop_neighbours :: (Ord s, Ord t, Eq e) => s -> Graph s t e -> Bool
-prop_neighbours :: N -> G -> Bool
-prop_neighbours s g =
-  neighbours s g == map (\ (Edge s t e) -> (t, e)) (edgesFrom g [s])
-
--- prop_nodes_fromNodes :: Ord n => [n] -> Bool
-prop_nodes_fromNodes :: [N] -> Bool
-prop_nodes_fromNodes ns = sourceNodes (fromNodes ns) == Set.fromList ns
-
-prop_clean_discrete :: G -> Bool
-prop_clean_discrete g =
-  discrete g == (null . graph . clean) g
-
--- prop_insertWith :: (Eq e, Ord s, Ord t) =>
---                    (e -> e -> e) -> s -> t -> e -> Graph s t e -> Bool
-prop_insertWith :: (E -> E -> E) -> N -> N -> E -> G -> Bool
-prop_insertWith f s t e g =
-  insertWith f s t e g == unionWith (flip f) g (singleton s t e)
-
--- -- This property only holds only if the edge is new.
--- prop_insert ::  (Ord s, Ord t) => s -> t -> e -> Graph s t e -> Bool
--- prop_insert s t e g = insert s t e g == union g (singleton s t e)
-
-prop_sccs' :: G -> Bool
-prop_sccs' g =
-  nodes g == Set.fromList (concat components)
-    &&
-  all distinct components
-    &&
-  all (not . null) components
-    &&
-  disjoint (map Set.fromList components)
-    &&
-  all stronglyConnected components'
-    &&
-  noMissingStronglyConnectedNodes components
-    &&
-  reverseTopologicalOrder
-  where
-  components' = sccs' g
-  components  = map Graph.flattenSCC components'
-
-  disjoint []       = True
-  disjoint (s : ss) = all (Set.null . Set.intersection s) ss
-                        &&
-                      disjoint ss
-
-  connected' = connected (connectivityGraph g)
-
-  stronglyConnected (Graph.AcyclicSCC n) = not (connected' n n)
-  stronglyConnected (Graph.CyclicSCC ns) = and
-    [ connected' i j
-    | i <- ns
-    , j <- ns
-    ]
-
-  noMissingStronglyConnectedNodes []         = True
-  noMissingStronglyConnectedNodes (ns : nss) =
-    and [ not (connected' j i && connected' i j)
-        | i <- ns
-        , j <- concat nss
-        ]
-      &&
-    noMissingStronglyConnectedNodes nss
-
-  reverseTopologicalOrder = and
-    [ component i <= component j
-    | Edge i j _ <- edges g
-    ]
-    where
-    component k =
-      head [ i
-           | (i, ns) <- zip [1..] (reverse components)
-           , k `elem` ns
-           ]
-
-prop_sccDAG :: G -> Bool
-prop_sccDAG g =
-  dagInvariant dag
-    &&
-  nodes g == Map.keysSet (dagNodeMap dag)
-  where
-  dag = sccDAG g
-
-prop_oppositeDAG :: G -> Bool
-prop_oppositeDAG g =
-  dagInvariant (oppositeDAG (sccDAG g))
-
--- | @isWalk g from to es@ is 'True' iff @es@ is a walk from @from@ to
--- @to@ in @g@.
-
-isWalk :: G -> N -> N -> [Edge N N E] -> Bool
-isWalk g from to [] =
-  from == to
-    &&
-  from `Set.member` nodes g
-isWalk g from to es =
-  map source es ++ [to] == [from] ++ map target es
-    &&
-  all validEdge es
-  where
-  validEdge e = e `elem` edgesFrom g [source e]
-
-prop_reachableFrom :: G -> Property
-prop_reachableFrom g =
-  not (Set.null (nodes g)) ==>
-  forAll (nodeIn g) $ \u ->
-    let reachableFromU = reachableFrom g u in
-    -- Every list is a walk of the given length.
-    all (\(v, (n, es)) -> isWalk g u v es && length es == n)
-        (Map.toList reachableFromU)
-      &&
-    -- Every walk is a simple path.
-    Fold.all (distinct . map source . snd) reachableFromU
-      &&
-    -- A path is found from u to v iff u = v or there is a non-empty
-    -- path from u to v (according to 'connectivityGraph' and
-    -- 'connected').
-    Fold.all (\v -> Map.member v reachableFromU
-                      ==
-                    (u == v || connected cg u v))
-             (nodes g)
-  where
-  cg = connectivityGraph g
-
-prop_walkSatisfying ::
-  G -> (Occurrence -> Bool) -> (Occurrence -> Bool) -> Property
-prop_walkSatisfying g every some =
-  forAll (nodeIn g) $ \from ->
-  forAll (nodeIn g) $ \to ->
-    case walkSatisfying every some g from to of
-      Nothing -> QuickCheck.label "no walk" True
-      Just es -> QuickCheck.label (show (length es) ++ " steps") $
-                   isWalk g from to es
-                     &&
-                   all every es' && any some es'
-        where es' = map Graph.label es
-
--- | A property for
--- 'Agda.TypeChecking.Positivity.Occurrence.productOfEdgesInBoundedWalk'.
-
-prop_productOfEdgesInBoundedWalk :: G -> Property
-prop_productOfEdgesInBoundedWalk g =
-  forAll (nodeIn g) $ \u ->
-  forAll (nodeIn g) $ \v ->
-  forAll (elements (Map.keys boundToEverySome)) $ \bound ->
-    case productOfEdgesInBoundedWalk id g u v bound of
-      Nothing -> Nothing
-      Just o  -> Just (o <= bound)
-      ==
-    case Graph.lookup u v
-           (fst (gaussJordanFloydWarshallMcNaughtonYamada g)) of
-      Just o | o <= bound -> Just True
-      _                   -> Nothing
-
--- | Computes the transitive closure of the graph.
---
--- Note that this algorithm is not guaranteed to be correct (or
--- terminate) for arbitrary semirings.
---
--- This function operates on the entire graph at once.
-
-transitiveClosure1 :: (Eq e, SemiRing e, Ord n) =>
-                      Graph n n e -> Graph n n e
-transitiveClosure1 = completeUntilWith (==) otimes oplus
-
--- | Computes the transitive closure of the graph.
---
--- Note that this algorithm is not guaranteed to be correct (or
--- terminate) for arbitrary semirings.
---
--- This function operates on the entire graph at once.
-
-completeUntilWith :: (Ord n) => (Graph n n e -> Graph n n e -> Bool) ->
-  (e -> e -> e) -> (e -> e -> e) -> Graph n n e -> Graph n n e
-completeUntilWith done otimes oplus = iterateUntil done growGraph  where
-
-  -- @growGraph g@ unions @g@ with @(s --> t) `compose` g@ for each
-  -- edge @s --> t@ in @g@
-  growGraph g = List.foldl' (unionWith oplus) g $ for (edges g) $ \ (Edge s t e) ->
-    case Map.lookup t (graph g) of
-      Just es -> Graph $ Map.singleton s $ Map.map (otimes e) es
-      Nothing -> Graph.empty
-
--- | Equality modulo empty edges.
-(~~) :: (Eq e, Ord s, Ord t, Null e) => Graph s t e -> Graph s t e -> Bool
-(~~) = (==) `on` clean
-
-prop_gaussJordanFloydWarshallMcNaughtonYamadaReference :: G -> Bool
-prop_gaussJordanFloydWarshallMcNaughtonYamadaReference g =
-  gaussJordanFloydWarshallMcNaughtonYamadaReference g ~~
-  transitiveClosure1 g
-
-prop_gaussJordanFloydWarshallMcNaughtonYamada :: G -> Property
-prop_gaussJordanFloydWarshallMcNaughtonYamada g =
-  QuickCheck.label sccInfo $
-    fst (gaussJordanFloydWarshallMcNaughtonYamada g) ~~
-    transitiveClosure1 g
-  where
-  sccInfo =
-    (if noSCCs <= 3 then "   " ++ show noSCCs
-                    else ">= 4") ++
-    " strongly connected component(s)"
-    where noSCCs = length (sccs g)
-
-prop_complete :: G -> Bool
-prop_complete g =
-  complete g ~~ transitiveClosure1 g
-
-------------------------------------------------------------------------
--- * All tests
-------------------------------------------------------------------------
-
--- Template Haskell hack to make the following $quickCheckAll work
--- under ghc-7.8.
-return [] -- KEEP!
-
--- | All tests as collected by 'quickCheckAll'.
---
---   Using 'quickCheckAll' is convenient and superior to the manual
---   enumeration of tests, since the name of the property is
---   added automatically.
-
-tests :: IO Bool
-tests = do
-  putStrLn "Agda.Utils.Graph.AdjacencyMap.Unidirectional"
-  $quickCheckAll
-
-
--- Abbreviations for testing in interpreter
-
-g1, g2, g3, g4 :: Graph N N E
-g1 = Graph $ Map.fromList
-  [ (n 1, Map.fromList [(n 2,Unused)])
-  , (n 2, Map.fromList [(n 1,Unused)])
-  ]
-
-g2 = Graph $ Map.fromList
-  [ (n 1, Map.fromList [(n 2,StrictPos)])
-  , (n 2, Map.fromList [(n 1,StrictPos)])
-  ]
-
-g3 = Graph $ Map.fromList
-  [ (n 1, Map.fromList [(n 2,StrictPos)])
-  , (n 2, Map.fromList [])
-  , (n 4, Map.fromList [(n 1,StrictPos)])
-  ]
-
-g4 = Graph $ Map.fromList
-  [ (n 1, Map.fromList [(n 6,Unused)])
-  , (n 6, Map.fromList [(n 8,StrictPos)])
-  , (n 8, Map.fromList [(n 3,Unused)])
-  ]
diff --git a/src/full/Agda/Utils/Hash.hs b/src/full/Agda/Utils/Hash.hs
--- a/src/full/Agda/Utils/Hash.hs
+++ b/src/full/Agda/Utils/Hash.hs
@@ -8,6 +8,7 @@
 import Data.Word
 import qualified Data.Hash as H
 import qualified Data.List as L
+import Data.Digest.Murmur64
 
 import Agda.Utils.FileName
 
@@ -25,12 +26,6 @@
 combineHashes hs = H.asWord64 $ L.foldl' H.combine (H.hashWord8 0) $ L.map H.hash hs
 
 -- | Hashing a module name for unique identifiers.
-hashString :: String -> Integer
-hashString = Prelude.foldr step 0
-  where
-    step c n = mod (fromIntegral (fromEnum c) * prime1 + n * prime2) prime3
-
-    prime1 = 1230371
-    prime2 = 446441
-    prime3 = 275604541
+hashString :: String -> Word64
+hashString = asWord64 . hash64
 
diff --git a/src/full/Agda/Utils/Haskell/Syntax.hs b/src/full/Agda/Utils/Haskell/Syntax.hs
new file mode 100644
--- /dev/null
+++ b/src/full/Agda/Utils/Haskell/Syntax.hs
@@ -0,0 +1,110 @@
+
+module Agda.Utils.Haskell.Syntax where
+
+-- Modules --
+
+data Module = Module ModuleName [ModulePragma] [ImportDecl] [Decl]
+
+data ModulePragma = LanguagePragma [Name]
+
+data ImportDecl = ImportDecl
+      { importModule    :: ModuleName
+      , importQualified :: Bool
+      , importSpecs     :: Maybe (Bool, [ImportSpec]) }
+
+data ImportSpec = IVar Name
+
+-- Declarations --
+
+data Decl = TypeDecl Name [TyVarBind] Type
+          | DataDecl DataOrNew Name [TyVarBind] [ConDecl] [Deriving]
+          | TypeSig [Name] Type
+          | FunBind [Match]
+          | FakeDecl String
+  deriving (Eq)
+
+data DataOrNew = DataType | NewType
+  deriving (Eq)
+
+data ConDecl = ConDecl Name [Type]
+  deriving (Eq)
+
+type Deriving = (QName, [Type])
+
+data Binds = BDecls [Decl]
+  deriving (Eq)
+
+data Rhs = UnGuardedRhs Exp
+         | GuardedRhss [GuardedRhs]
+  deriving (Eq)
+
+data GuardedRhs = GuardedRhs [Stmt] Exp
+  deriving (Eq)
+
+data Match = Match Name [Pat] Rhs (Maybe Binds)
+  deriving (Eq)
+
+-- Expressions --
+
+data Type = TyForall [TyVarBind] Type
+          | TyFun Type Type
+          | TyCon QName
+          | TyVar Name
+          | TyApp Type Type
+          | FakeType String
+  deriving (Eq)
+
+data Pat = PVar Name
+         | PLit Literal
+         | PAsPat Name Pat
+         | PWildCard
+         | PBangPat Pat
+         | PApp QName [Pat]
+         | PatTypeSig Pat Type
+         | PIrrPat Pat
+  deriving (Eq)
+
+
+data Stmt = Qualifier Exp
+          | Generator Pat Exp
+  deriving (Eq)
+
+data Exp = Var QName
+         | Con QName
+         | Lit Literal
+         | InfixApp Exp QOp Exp
+         | App Exp Exp
+         | Lambda [Pat] Exp
+         | Let Binds Exp
+         | If Exp Exp Exp
+         | Case Exp [Alt]
+         | ExpTypeSig Exp Type
+         | NegApp Exp
+         | FakeExp String
+  deriving (Eq)
+
+data Alt = Alt Pat Rhs (Maybe Binds)
+  deriving (Eq)
+
+data Literal = Int Integer | Frac Rational | Char Char | String String
+  deriving (Eq)
+
+-- Names --
+
+data ModuleName = ModuleName String
+  deriving (Eq, Ord)
+
+data QName = Qual ModuleName Name | UnQual Name
+  deriving (Eq)
+
+data Name = Ident String | Symbol String
+  deriving (Eq)
+
+data QOp = QVarOp QName
+  deriving (Eq)
+
+data TyVarBind = UnkindedVar Name
+  deriving (Eq)
+
+unit_con :: Exp
+unit_con = Con (UnQual (Ident "()"))
diff --git a/src/full/Agda/Utils/Lens.hs b/src/full/Agda/Utils/Lens.hs
--- a/src/full/Agda/Utils/Lens.hs
+++ b/src/full/Agda/Utils/Lens.hs
@@ -1,6 +1,5 @@
 {-# LANGUAGE BangPatterns #-}
 {-# LANGUAGE CPP        #-}
-{-# LANGUAGE RankNTypes #-}
 
 -- | A cut-down implementation of lenses, with names taken from
 --   Edward Kmett's lens package.
diff --git a/src/full/Agda/Utils/List.hs b/src/full/Agda/Utils/List.hs
--- a/src/full/Agda/Utils/List.hs
+++ b/src/full/Agda/Utils/List.hs
@@ -1,13 +1,11 @@
-{-# LANGUAGE CPP             #-}
-{-# LANGUAGE PatternGuards   #-}
-{-# LANGUAGE TemplateHaskell #-}
-
-{-# OPTIONS_GHC -fno-warn-missing-signatures #-}
+{-# LANGUAGE CPP #-}
 
 {-| Utitlity functions on lists.
 -}
 module Agda.Utils.List where
 
+import Control.Arrow (first)
+
 import Data.Functor ((<$>))
 import Data.Function
 import Data.List
@@ -16,12 +14,9 @@
 import qualified Data.Set as Set
 
 import Text.Show.Functions ()
-import Test.QuickCheck
 
 import qualified Agda.Utils.Bag as Bag
-import Agda.Utils.TestHelpers
--- import Agda.Utils.QuickCheck -- Andreas, 2014-04-27 Inconvenient
--- because cabal-only CPP directive
+
 import Agda.Utils.Tuple
 
 #include "undefined.h"
@@ -73,7 +68,6 @@
 
 -- | Lookup function (partially safe).
 (!!!) :: [a] -> Int -> Maybe a
-_        !!! n | n < 0 = __IMPOSSIBLE__
 []       !!! _         = Nothing
 (x : _)  !!! 0         = Just x
 (_ : xs) !!! n         = xs !!! (n - 1)
@@ -88,18 +82,12 @@
 updateHead f [] = []
 updateHead f (a : as) = f a : as
 
-spec_updateHead f as = let (bs, cs) = splitAt 1 as in map f bs ++ cs
-prop_updateHead f as = updateHead f as == spec_updateHead f as
-
 -- | Update the last element of a list, if it exists.
 updateLast :: (a -> a) -> [a] -> [a]
 updateLast f [] = []
 updateLast f [a] = [f a]
 updateLast f (a : as@(_ : _)) = a : updateLast f as
 
-spec_updateLast f as = let (bs, cs) = splitAt (length as - 1) as in bs ++ map f cs
-prop_updateLast f as = updateLast f as == spec_updateLast f as
-
 -- | Update nth element of a list, if it exists.
 --   Precondition: the index is >= 0.
 updateAt :: Int -> (a -> a) -> [a] -> [a]
@@ -107,9 +95,6 @@
 updateAt 0 f (a : as) = f a : as
 updateAt n f (a : as) = a : updateAt (n-1) f as
 
-spec_updateAt n f as = let (bs, cs) = splitAt n as in bs ++ updateHead f cs
-prop_updateAt (NonNegative n) f as = updateAt n f as == spec_updateAt n f as
-
 -- | A generalized version of @partition@.
 --   (Cf. @mapMaybe@ vs. @filter@).
 mapEither :: (a -> Either b c) -> [a] -> ([b],[c])
@@ -146,6 +131,25 @@
       Nothing -> mapFst (a :) $ loop as
       Just b  -> mapSnd (b :) $ loop as
 
+-- | Like 'filter', but additionally return the last partition
+--   of the list where the predicate is @False@ everywhere.
+filterAndRest :: (a -> Bool) -> [a] -> ([a],[a])
+filterAndRest p = mapMaybeAndRest $ \ a -> if p a then Just a else Nothing
+
+-- | Like 'mapMaybe', but additionally return the last partition
+--   of the list where the function always returns @Nothing@.
+mapMaybeAndRest :: (a -> Maybe b) -> [a] -> ([b],[a])
+mapMaybeAndRest f = loop [] where
+  loop acc = \case
+    []                   -> ([], reverse acc)
+    x:xs | Just y <- f x -> first (y:) $ loop [] xs
+         | otherwise     -> loop (x:acc) xs
+
+-- | Drops from both lists simultaneously until one list is empty.
+dropCommon :: [a] -> [b] -> ([a],[b])
+dropCommon (x : xs) (y : ys) = dropCommon xs ys
+dropCommon xs ys = (xs, ys)
+
 -- | Sublist relation.
 isSublistOf :: Eq a => [a] -> [a] -> Bool
 isSublistOf []       ys = True
@@ -159,12 +163,14 @@
 
 -- | Check if a list has a given prefix. If so, return the list
 --   minus the prefix.
-maybePrefixMatch :: Eq a => Prefix a -> [a] -> Maybe (Suffix a)
-maybePrefixMatch []    rest = Just rest
-maybePrefixMatch (_:_) []   = Nothing
-maybePrefixMatch (p:pat) (r:rest)
-  | p == r    = maybePrefixMatch pat rest
-  | otherwise = Nothing
+stripPrefixBy :: (a -> a -> Bool) -> Prefix a -> [a] -> Maybe (Suffix a)
+stripPrefixBy eq = loop
+  where
+  loop []    rest = Just rest
+  loop (_:_) []   = Nothing
+  loop (p:pat) (r:rest)
+    | eq p r    = loop pat rest
+    | otherwise = Nothing
 
 -- | Result of 'preOrSuffix'.
 data PreOrSuffix a
@@ -214,12 +220,6 @@
     (w, [_])    -> [w, []]
     (w, _ : ys) -> w : chopWhen p ys
 
-prop_chop_intercalate :: Property
-prop_chop_intercalate =
-  forAllShrink (choose (0, 4 :: Int))          shrink $ \ d ->
-  forAllShrink (listOf (choose (0, 4 :: Int))) shrink $ \ xs ->
-  xs === intercalate [d] (chopWhen (== d) xs)
-
 -- | All ways of removing one element from a list.
 holes :: [a] -> [(a, [a])]
 holes []     = []
@@ -247,9 +247,6 @@
 fastDistinct :: Ord a => [a] -> Bool
 fastDistinct xs = Set.size (Set.fromList xs) == length xs
 
-prop_distinct_fastDistinct :: [Integer] -> Bool
-prop_distinct_fastDistinct xs = distinct xs == fastDistinct xs
-
 -- | Checks if all the elements in the list are equal. Assumes that
 -- the 'Eq' instance stands for an equivalence relation.
 allEqual :: Eq a => [a] -> Bool
@@ -277,19 +274,6 @@
                    []            -> []
                    ((_, z) : zs) -> grp z zs
 
-prop_groupBy' :: (Bool -> Bool -> Bool) -> [Bool] -> Property
-prop_groupBy' p xs =
-  classify (length xs - length gs >= 3) "interesting" $
-    concat gs == xs
-    &&
-    and [not (null zs) | zs <- gs]
-    &&
-    and [and (pairInitTail zs zs) | zs <- gs]
-    &&
-    (null gs || not (or (pairInitTail (map last gs) (map head gs))))
-  where gs = groupBy' p xs
-        pairInitTail xs ys = zipWith p (init xs) (tail ys)
-
 -- | @'groupOn' f = 'groupBy' (('==') \`on\` f) '.' 'sortBy' ('compare' \`on\` f)@.
 
 groupOn :: Ord b => (a -> b) -> [a] -> [[a]]
@@ -302,25 +286,6 @@
 splitExactlyAt n []       = Nothing
 splitExactlyAt n (x : xs) = mapFst (x :) <$> splitExactlyAt (n-1) xs
 
--- | @'extractNthElement' n xs@ gives the @n@-th element in @xs@
--- (counting from 0), plus the remaining elements (preserving order).
-
-extractNthElement' :: Integral i => i -> [a] -> ([a], a, [a])
-extractNthElement' n xs = (left, el, right)
-  where
-  (left, el : right) = genericSplitAt n xs
-
-extractNthElement :: Integral i => i -> [a] -> (a, [a])
-extractNthElement n xs = (el, left ++ right)
-  where
-  (left, el, right) = extractNthElement' n xs
-
-prop_extractNthElement :: Integer -> [Integer] -> Property
-prop_extractNthElement n xs =
-  0 <= n && n < genericLength xs ==>
-    genericTake n rest ++ [elem] ++ genericDrop n rest == xs
-  where (elem, rest) = extractNthElement n xs
-
 -- | A generalised variant of 'elemIndex'.
 
 genericElemIndex :: (Eq a, Integral i) => a -> [a] -> Maybe i
@@ -331,11 +296,6 @@
   zip [0..] $
   map (== x) xs
 
-prop_genericElemIndex :: Integer -> [Integer] -> Property
-prop_genericElemIndex x xs =
-  classify (x `elem` xs) "members" $
-    genericElemIndex x xs == elemIndex x xs
-
 -- | Requires both lists to have the same length.
 
 zipWith' :: (a -> b -> c) -> [a] -> [b] -> [c]
@@ -344,12 +304,6 @@
 zipWith' f []       (_ : _)  = {- ' -} __IMPOSSIBLE__
 zipWith' f (_ : _)  []       = {- ' -} __IMPOSSIBLE__
 
-prop_zipWith' :: (Integer -> Integer -> Integer) -> Property
-prop_zipWith' f =
-  forAll natural $ \n ->
-    forAll (two $ vector n) $ \(xs, ys) ->
-      zipWith' f xs ys == zipWith f xs ys
-
 {- UNUSED; a better type would be
    zipWithTails :: (a -> b -> c) -> [a] -> [b] -> ([c], Either [a] [b])
 
@@ -376,9 +330,6 @@
   . map (\p@(_, x) -> (tag x, p))
   . zip [1..]
 
-prop_nubOn :: (Integer -> Integer) -> [Integer] -> Bool
-prop_nubOn f xs = nubOn f xs == nubBy ((==) `on` f) xs
-
 -- | Efficient variant of 'nubBy' for finite lists.
 --
 -- Specification: For each list @xs@ there is a list @ys@ which is a
@@ -392,26 +343,6 @@
 uniqOn :: Ord b => (a -> b) -> [a] -> [a]
 uniqOn key = Map.elems . Map.fromList . map (\ a -> (key a, a))
 
-prop_uniqOn1 :: (Integer -> Integer) -> [Integer] -> Bool
-prop_uniqOn1 f xs' =
-  or [ uniqOn f xs == nubBy ((==) `on` f) ys
-     | ys <- permutations xs
-     ]
-  where
-  xs = take 5 xs'
-
-  permutations []       = [[]]
-  permutations (x : xs) =
-    [ ys1 ++ x : ys2
-    | ys <- permutations xs
-    , n  <- [0..length ys]
-    , let (ys1, ys2) = splitAt n ys
-    ]
-
-prop_uniqOn2 :: (Integer -> Integer) -> [Integer] -> Bool
-prop_uniqOn2 f xs =
-  sortBy (compare `on` f) (uniqOn f xs) == uniqOn f xs
-
 -- | Compute the common suffix of two lists.
 commonSuffix :: Eq a => [a] -> [a] -> [a]
 commonSuffix xs ys = reverse $ (commonPrefix `on` reverse) xs ys
@@ -424,22 +355,6 @@
   | x == y    = x : commonPrefix xs ys
   | otherwise = []
 
-prop_commonPrefix :: [Integer] -> [Integer] -> [Integer] -> Bool
-prop_commonPrefix xs ys zs =
-  and [ isPrefixOf zs zs'
-      , isPrefixOf zs' (zs ++ xs)
-      , isPrefixOf zs' (zs ++ ys) ]
-  where
-    zs' = commonPrefix (zs ++ xs) (zs ++ ys)
-
-prop_commonSuffix :: [Integer] -> [Integer] -> [Integer] -> Bool
-prop_commonSuffix xs ys zs =
-  and [ isSuffixOf zs zs'
-      , isSuffixOf zs' (xs ++ zs)
-      , isSuffixOf zs' (ys ++ zs) ]
-  where
-    zs' = commonSuffix (xs ++ zs) (ys ++ zs)
-
 editDistanceSpec :: Eq a => [a] -> [a] -> Int
 editDistanceSpec [] ys = length ys
 editDistanceSpec xs [] = length xs
@@ -462,31 +377,3 @@
             (x : xs, y : ys)
               | x == y    -> editD (i + 1) (j + 1)
               | otherwise -> 1 + minimum [ editD (i + 1) j, editD i (j + 1), editD (i + 1) (j + 1) ]
-
-prop_editDistance :: Property
-prop_editDistance =
-  forAllShrink (choose (0, 10)) shrink $ \ n ->
-  forAllShrink (choose (0, 10)) shrink $ \ m ->
-  forAllShrink (vector n) shrink $ \ xs ->
-  forAllShrink (vector m) shrink $ \ ys ->
-  editDistanceSpec xs ys == editDistance xs (ys :: [Integer])
-
--- Hack to make $quickCheckAll work under ghc-7.8
-return []
-
-------------------------------------------------------------------------
--- All tests
-
-tests :: IO Bool
-tests = do
-  putStrLn "Agda.Utils.List"
-  $quickCheckAll
-
--- tests = runTests "Agda.Utils.List"
---   [ quickCheck' prop_distinct_fastDistinct
---   , quickCheck' prop_groupBy'
---   , quickCheck' prop_extractNthElement
---   , quickCheck' prop_genericElemIndex
---   , quickCheck' prop_zipWith'
---   , quickCheck' prop_uniqOn
---   ]
diff --git a/src/full/Agda/Utils/ListT.hs b/src/full/Agda/Utils/ListT.hs
--- a/src/full/Agda/Utils/ListT.hs
+++ b/src/full/Agda/Utils/ListT.hs
@@ -1,9 +1,4 @@
 {-# LANGUAGE CPP                   #-}
-{-# LANGUAGE DeriveFunctor         #-}
-{-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE RankNTypes            #-}
-{-# LANGUAGE TupleSections         #-}
 {-# LANGUAGE UndecidableInstances  #-}  -- Due to limitations of funct.dep.
 
 -- | @ListT@ done right,
@@ -20,7 +15,7 @@
 import Control.Monad.Reader
 import Control.Monad.State
 
-import Data.Monoid
+import Data.Semigroup
 
 import Agda.Utils.Maybe
 
@@ -108,10 +103,12 @@
 
 -- Instances
 
+instance Monad m => Semigroup (ListT m a) where
+  l1 <> l2 = ListT $ foldListT cons (runListT l2) l1
+    where cons a = runListT . consListT a . ListT
 instance Monad m => Monoid (ListT m a) where
   mempty        = nilListT
-  mappend l1 l2 = ListT $ foldListT cons (runListT l2) l1
-    where cons a = runListT . consListT a . ListT
+  mappend = (<>)
 
 instance (Functor m, Applicative m, Monad m) => Alternative (ListT m) where
   empty = mempty
diff --git a/src/full/Agda/Utils/ListT/Tests.hs b/src/full/Agda/Utils/ListT/Tests.hs
deleted file mode 100644
--- a/src/full/Agda/Utils/ListT/Tests.hs
+++ /dev/null
@@ -1,47 +0,0 @@
-{-# OPTIONS_GHC -fno-warn-missing-signatures #-}
-
-{-# LANGUAGE TemplateHaskell #-}
-
--- | Quickcheck properties for 'Agda.Utils.ListT'.
-
-module Agda.Utils.ListT.Tests (tests) where
-
-import Control.Applicative
-
-import Data.Functor.Identity
-
-import Test.QuickCheck
-
-import Text.Show.Functions
-
-import Agda.Utils.ListT
-
--- * Identity monad instance of ListT (simply lists)
-
-type List = ListT Identity
-
-foldList :: (a -> b -> b) -> b -> List a -> b
-foldList cons nil l = runIdentity $ foldListT c (Identity nil) l
-  where c a = Identity . cons a . runIdentity
-
-fromList :: [a] -> List a
-fromList = foldr consListT nilListT
-
-toList :: List a -> [a]
-toList = foldList (:) []
-
-prop_concat xxs = toList (concatListT (fromList (map fromList xxs))) == concat xxs
-
-prop_idiom fs xs = toList (fromList fs <*> fromList xs) == (fs <*> xs)
-
-prop_concatMap f xs = toList (fromList . f =<< fromList xs) == (f =<< xs)
-
--- Template Haskell hack to make the following $quickCheckAll work
--- under ghc-7.8.
-return [] -- KEEP!
-
--- | All tests as collected by 'quickCheckAll'.
-tests :: IO Bool
-tests = do
-  putStrLn "Agda.Utils.Permutation"
-  $quickCheckAll
diff --git a/src/full/Agda/Utils/Maybe/Strict.hs b/src/full/Agda/Utils/Maybe/Strict.hs
--- a/src/full/Agda/Utils/Maybe/Strict.hs
+++ b/src/full/Agda/Utils/Maybe/Strict.hs
@@ -5,8 +5,6 @@
 {-# LANGUAGE DeriveGeneric #-}
 #endif
 
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE StandaloneDeriving #-}
 
 {-# OPTIONS_GHC -fno-warn-orphans #-}
 
@@ -38,7 +36,7 @@
 import           Control.DeepSeq     (NFData (..))
 import           Data.Binary         (Binary (..))
 import           Data.Data           (Data (..))
-import           Data.Monoid         (Monoid (..))
+import           Data.Semigroup      (Semigroup, Monoid, (<>), mempty, mappend)
 import           Data.Foldable       (Foldable (..))
 import           Data.Traversable    (Traversable (..))
 #if MIN_VERSION_base(4,7,0)
@@ -51,7 +49,6 @@
 #if __GLASGOW_HASKELL__ >= 706
 import           GHC.Generics        (Generic (..))
 #endif
-import           Test.QuickCheck     (Arbitrary (..), CoArbitrary (..))
 
 import Agda.Utils.Null
 
@@ -80,12 +77,14 @@
 
 -- The monoid instance was fixed in strict-base-types 0.5.0. See
 -- Issue 1805.
+instance Monoid a => Semigroup (Maybe a) where
+  Nothing <> m       = m
+  m       <> Nothing = m
+  Just x1 <> Just x2 = Just (x1 `mappend` x2)
+
 instance Monoid a => Monoid (Maybe a) where
   mempty = Nothing
-
-  Nothing `mappend` m       = m
-  m       `mappend` Nothing = m
-  Just x1 `mappend` Just x2 = Just (x1 `mappend` x2)
+  mappend = (<>)
 
 instance Foldable Maybe where
     foldMap _ Nothing  = mempty
@@ -101,13 +100,6 @@
 instance Binary a => Binary (Maybe a) where
   put = put . toLazy
   get = toStrict <$> get
-
-instance Arbitrary a => Arbitrary (Maybe a) where
-  arbitrary = toStrict <$> arbitrary
-  shrink    = map toStrict . shrink . toLazy
-
-instance CoArbitrary a => CoArbitrary (Maybe a) where
-  coarbitrary = coarbitrary . toLazy
 
 -- | Analogous to 'Lazy.listToMaybe' in "Data.Maybe".
 listToMaybe :: [a] -> Maybe a
diff --git a/src/full/Agda/Utils/Memo.hs b/src/full/Agda/Utils/Memo.hs
--- a/src/full/Agda/Utils/Memo.hs
+++ b/src/full/Agda/Utils/Memo.hs
@@ -1,10 +1,15 @@
 {-# LANGUAGE CPP        #-}
-{-# LANGUAGE RankNTypes #-}
 
 module Agda.Utils.Memo where
 
 import Control.Applicative
 import Control.Monad.State
+import System.IO.Unsafe
+import Data.IORef
+import qualified Data.Map as Map
+import qualified Agda.Utils.HashMap as HMap
+import Data.Hashable
+
 import Agda.Utils.Lens
 
 -- Simple memoisation in a state monad
@@ -42,3 +47,34 @@
       tbl .= Just ih
       x <- compute
       x <$ (tbl .= Just x)
+
+{-# NOINLINE memoUnsafe #-}
+memoUnsafe :: Ord a => (a -> b) -> (a -> b)
+memoUnsafe f = unsafePerformIO $ do
+  tbl <- newIORef Map.empty
+  return (unsafePerformIO . f' tbl)
+  where
+    f' tbl x = do
+      m <- readIORef tbl
+      case Map.lookup x m of
+        Just y  -> return y
+        Nothing -> do
+          let y = f x
+          writeIORef tbl (Map.insert x y m)
+          return y
+
+{-# NOINLINE memoUnsafeH #-}
+memoUnsafeH :: (Eq a, Hashable a) => (a -> b) -> (a -> b)
+memoUnsafeH f = unsafePerformIO $ do
+  tbl <- newIORef HMap.empty
+  return (unsafePerformIO . f' tbl)
+  where
+    f' tbl x = do
+      m <- readIORef tbl
+      case HMap.lookup x m of
+        Just y  -> return y
+        Nothing -> do
+          let y = f x
+          writeIORef tbl (HMap.insert x y m)
+          return y
+
diff --git a/src/full/Agda/Utils/Monad.hs b/src/full/Agda/Utils/Monad.hs
--- a/src/full/Agda/Utils/Monad.hs
+++ b/src/full/Agda/Utils/Monad.hs
@@ -50,7 +50,9 @@
 unlessM :: Monad m => m Bool -> m a -> m ()
 unlessM c m = c >>= (`unless_` m)
 
--- whenJust, whenJustM moved to Utils.Maybe
+-- | Monadic guard.
+guardM :: (Monad m, MonadPlus m) => m Bool -> m ()
+guardM c = guard =<< c
 
 -- | Monadic if-then-else.
 ifM :: Monad m => m Bool -> m a -> m a -> m a
@@ -149,6 +151,13 @@
 dropWhileM p []       = return []
 dropWhileM p (x : xs) = ifM (p x) (dropWhileM p xs) (return (x : xs))
 
+-- | A ``monadic'' version of @'partition' :: (a -> Bool) -> [a] -> ([a],[a])
+partitionM :: (Functor m, Applicative m) => (a -> m Bool) -> [a] -> m ([a],[a])
+partitionM f [] =
+  pure ([], [])
+partitionM f (x:xs) =
+  (\ b (l, r) -> if b then (x:l, r) else (l, x:r)) <$> f x <*> partitionM f xs
+
 -- Error monad ------------------------------------------------------------
 
 -- | Finally for the 'Error' class. Errors in the finally part take
@@ -161,6 +170,11 @@
   case r of
     Left e  -> throwError e
     Right r -> return r
+
+-- | Try a computation, return 'Nothing' if an 'Error' occurs.
+
+tryMaybe :: (MonadError e m, Functor m) => m a -> m (Maybe a)
+tryMaybe m = (Just <$> m) `catchError` \ _ -> return Nothing
 
 -- State monad ------------------------------------------------------------
 
diff --git a/src/full/Agda/Utils/Null.hs b/src/full/Agda/Utils/Null.hs
--- a/src/full/Agda/Utils/Null.hs
+++ b/src/full/Agda/Utils/Null.hs
@@ -1,7 +1,6 @@
 {-# OPTIONS_GHC -fno-warn-orphans #-}
 
 {-# LANGUAGE CPP               #-}
-{-# LANGUAGE DefaultSignatures #-}
 
 -- | Overloaded @null@ and @empty@ for collections and sequences.
 
diff --git a/src/full/Agda/Utils/Parser/MemoisedCPS.hs b/src/full/Agda/Utils/Parser/MemoisedCPS.hs
--- a/src/full/Agda/Utils/Parser/MemoisedCPS.hs
+++ b/src/full/Agda/Utils/Parser/MemoisedCPS.hs
@@ -21,38 +21,33 @@
 -- non-termination for grammars that are not cyclic.)
 
 {-# LANGUAGE CPP                   #-}
-{-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE RankNTypes            #-}
 
-#if __GLASGOW_HASKELL__ >= 710
-{-# LANGUAGE FlexibleContexts #-}
-#endif
-
 module Agda.Utils.Parser.MemoisedCPS
-  ( Parser
-  , parse
-  , token
-  , tok
-  , sat
-  , chainl1
-  , chainr1
-  , memoise
+  ( ParserClass(..)
+  , Parser
+  , ParserWithGrammar
   ) where
 
 import Control.Applicative
 import Control.Monad (ap, liftM2)
-import Control.Monad.State.Strict (State, evalState, get)
+import Control.Monad.State.Strict (State, evalState, get, put)
 import Data.Array
 import Data.Hashable
 import qualified Data.HashMap.Strict as Map
 import Data.HashMap.Strict (HashMap)
+import qualified Data.HashSet as Set
+import Data.HashSet (HashSet)
 import qualified Data.IntMap.Strict as IntMap
 import Data.IntMap.Strict (IntMap)
 import Data.List
+import Text.PrettyPrint.HughesPJ hiding (empty)
+import qualified Text.PrettyPrint.HughesPJ as PP
 
 import Agda.Utils.Monad (modify')
 
+#include "undefined.h"
+import Agda.Utils.Impossible
+
 -- | Positions.
 
 type Pos = Int
@@ -111,98 +106,168 @@
   P p1 <|> P p2 = P $ \input i k ->
     liftM2 (++) (p1 input i k) (p2 input i k)
 
--- | Runs the parser.
+class (Functor p, Applicative p, Alternative p, Monad p) =>
+      ParserClass p k r tok | p -> k, p -> r, p -> tok where
+  -- | Runs the parser.
+  parse :: p a -> [tok] -> [a]
 
-parse :: Parser k r tok a -> [tok] -> [a]
-parse p toks =
-  flip evalState IntMap.empty $
-  unP p (listArray (0, n - 1) toks) 0 $ \j x ->
-    if j == n then return [x] else return []
-  where n = genericLength toks
+  -- | Tries to print the parser, or returns 'PP.empty', depending on
+  -- the implementation. This function might not terminate.
+  grammar :: p a -> Doc
 
--- | Parses a single token.
+  -- | Parses a single token.
+  token :: p tok
 
-token :: Parser k r tok tok
-token = P $ \input i k ->
-  if inRange (bounds input) i then
-    (k $! (i + 1)) $! (input ! i)
-  else
-    return []
+  -- | Parses a token satisfying the given predicate.
+  sat :: (tok -> Bool) -> p tok
 
--- | Parses a token satisfying the given predicate.
+  -- | Parses a given token.
+  tok :: (Eq tok, Show tok) => tok -> p tok
 
-sat :: (tok -> Bool) -> Parser k r tok tok
-sat p = do
-  t <- token
-  if p t then return t else empty
+  -- | Uses the given function to modify the printed representation
+  -- (if any) of the given parser.
+  annotate :: (Doc -> Doc) -> p a -> p a
 
--- | Parses a given token.
+  -- | Memoises the given parser.
+  --
+  -- Every memoised parser must be annotated with a /unique/ key.
+  -- (Parametrised parsers must use distinct keys for distinct
+  -- inputs.)
+  memoise :: (Eq k, Hashable k, Show k) => k -> p r -> p r
 
-tok :: Eq tok => tok -> Parser k r tok tok
-tok t = sat (t ==)
+  -- | Memoises the given parser, but only if printing, not if
+  -- parsing.
+  --
+  -- Every memoised parser must be annotated with a /unique/ key.
+  -- (Parametrised parsers must use distinct keys for distinct
+  -- inputs.)
+  memoiseIfPrinting :: (Eq k, Hashable k, Show k) => k -> p r -> p r
 
--- | Parses one or more things, separated by separators.
---
--- Combines the results in a right-associative way.
+instance ParserClass (Parser k r tok) k r tok where
+  parse p toks =
+    flip evalState IntMap.empty $
+    unP p (listArray (0, n - 1) toks) 0 $ \j x ->
+      if j == n then return [x] else return []
+    where n = genericLength toks
 
-chainr1
-  :: Parser k r tok a
-     -- ^ Parser for a thing.
-  -> Parser k r tok (a -> a -> a)
-     -- ^ Parser for a separator.
-  -> Parser k r tok a
-chainr1 p op = c
-  where c = (\x f -> f x) <$> p <*>
-            (pure id <|> flip <$> op <*> c)
+  grammar _ = PP.empty
 
--- | Parses one or more things, separated by separators.
---
--- Combines the results in a left-associative way.
+  token = P $ \input i k ->
+    if inRange (bounds input) i then
+      (k $! (i + 1)) $! (input ! i)
+    else
+      return []
 
-chainl1
-  :: Parser k r tok a
-     -- ^ Parser for a thing.
-  -> Parser k r tok (a -> a -> a)
-     -- ^ Parser for a separator.
-  -> Parser k r tok a
-chainl1 p op = (\x f -> f x) <$> p <*> c
-  where
-  c =   pure (\x -> x)
-    <|> (\f y g x -> g (f x y)) <$> op <*> p <*> c
+  sat p = do
+    t <- token
+    if p t then return t else empty
 
--- | Memoises the given parser.
---
--- Every memoised parser must be annotated with a /unique/ key.
--- (Parametrised parsers must use distinct keys for distinct inputs.)
+  tok t = sat (t ==)
 
-memoise ::
-  (Eq k, Hashable k) =>
-  k -> Parser k r tok r -> Parser k r tok r
-memoise key p = P $ \input i k -> do
+  annotate _ p = p
 
-  let alter j zero f m =
-        IntMap.alter (Just . f . maybe zero id) j m
+  memoiseIfPrinting _ p = p
 
-      lookupTable   = fmap (\m -> Map.lookup key =<<
-                                  IntMap.lookup i m) get
-      insertTable v = modify' $ alter i Map.empty (Map.insert key v)
+  memoise key p = P $ \input i k -> do
 
-  v <- lookupTable
-  case v of
-    Nothing -> do
-      insertTable (Value IntMap.empty [k])
-      unP p input i $ \j r -> do
-        Just (Value rs ks) <- lookupTable
-        insertTable (Value (alter j [] (r :) rs) ks)
-        concat <$> mapM (\k -> k j r) ks  -- See note [Reverse ks?].
-    Just (Value rs ks) -> do
-      insertTable (Value rs (k : ks))
-      concat . concat <$>
-        mapM (\(i, rs) -> mapM (k i) rs) (IntMap.toList rs)
+    let alter j zero f m =
+          IntMap.alter (Just . f . maybe zero id) j m
 
+        lookupTable   = fmap (\m -> Map.lookup key =<<
+                                    IntMap.lookup i m) get
+        insertTable v = modify' $ alter i Map.empty (Map.insert key v)
+
+    v <- lookupTable
+    case v of
+      Nothing -> do
+        insertTable (Value IntMap.empty [k])
+        unP p input i $ \j r -> do
+          Just (Value rs ks) <- lookupTable
+          insertTable (Value (alter j [] (r :) rs) ks)
+          concat <$> mapM (\k -> k j r) ks  -- See note [Reverse ks?].
+      Just (Value rs ks) -> do
+        insertTable (Value rs (k : ks))
+        concat . concat <$>
+          mapM (\(i, rs) -> mapM (k i) rs) (IntMap.toList rs)
+
 -- [Reverse ks?]
 --
 -- If ks were reversed, then the code would be productive for some
 -- infinitely ambiguous grammars, including S ∷= S | ε. However, in
 -- some cases the results would not be fair (some valid results would
 -- never be returned).
+
+-- | An extended parser type, with some support for printing parsers.
+
+data ParserWithGrammar k r tok a =
+  PG (Bool -> Either (Parser k r tok a)
+                     (State (HashSet k) Doc))
+  -- ^ Invariant: If the boolean is 'True', then the result must be
+  -- @'Left' something@, and if the boolean is 'False', then the
+  -- result must be @'Right' something@.
+
+-- | A smart constructor.
+
+pg :: Parser k r tok a ->
+      State (HashSet k) Doc ->
+      ParserWithGrammar k r tok a
+pg p d = PG $ \b -> if b then Left p else Right d
+
+-- | Extracts the parser.
+
+parser :: ParserWithGrammar k r tok a -> Parser k r tok a
+parser (PG p) = either id __IMPOSSIBLE__ (p True)
+
+-- | Extracts the document.
+
+doc :: ParserWithGrammar k r tok a -> State (HashSet k) Doc
+doc (PG p) = either __IMPOSSIBLE__ id (p False)
+
+instance Monad (ParserWithGrammar k r tok) where
+  return  = pure
+  p >>= f = pg (parser p >>= parser . f)
+               ((\d -> parens (d <+> text ">>= ?")) <$> doc p)
+
+instance Functor (ParserWithGrammar k r tok) where
+  fmap f p = pg (fmap f (parser p)) (doc p)
+
+instance Applicative (ParserWithGrammar k r tok) where
+  pure x    = pg (pure x) (return (text "ε"))
+  p1 <*> p2 =
+    pg (parser p1 <*> parser p2)
+       (liftM2 (\d1 d2 -> parens (sep [d1, d2])) (doc p1) (doc p2))
+
+instance Alternative (ParserWithGrammar k r tok) where
+  empty     = pg empty (return (text "∅"))
+  p1 <|> p2 =
+    pg (parser p1 <|> parser p2)
+       (liftM2 (\d1 d2 -> parens (sep [d1, text "|", d2])) (doc p1) (doc p2))
+
+  many p = pg (many (parser p)) ((<+> text "⋆") . parens <$> doc p)
+  some p = pg (some (parser p)) ((<+> text "+") . parens <$> doc p)
+
+-- | A helper function.
+
+memoiseDoc ::
+  (Eq k, Hashable k, Show k) =>
+  k -> ParserWithGrammar k r tok r -> State (HashSet k) Doc
+memoiseDoc key p = do
+  s <- get
+  if Set.member key s then
+    return (text ("<" ++ show key ++ ">"))
+   else do
+    put (Set.insert key s)
+    (\d -> parens $
+             text ("μ " ++ show key ++ ".") $+$ nest 2 d) <$>
+      doc p
+
+instance ParserClass (ParserWithGrammar k r tok) k r tok where
+  parse p                 = parse (parser p)
+  grammar p               = evalState (doc p) Set.empty
+  token                   = pg token (return (text "·"))
+  sat p                   = pg (sat p) (return (text "sat ?"))
+  tok t                   = pg (tok t) (return (text (show t)))
+  annotate f p            = pg (parser p) (f <$> doc p)
+  memoise key p           = pg (memoise key (parser p))
+                               (memoiseDoc key p)
+  memoiseIfPrinting key p = pg (parser p) (memoiseDoc key p)
diff --git a/src/full/Agda/Utils/Parser/ReadP.hs b/src/full/Agda/Utils/Parser/ReadP.hs
--- a/src/full/Agda/Utils/Parser/ReadP.hs
+++ b/src/full/Agda/Utils/Parser/ReadP.hs
@@ -1,6 +1,4 @@
-{-# LANGUAGE DeriveFunctor #-}
 {-# LANGUAGE MagicHash     #-}
-{-# LANGUAGE Rank2Types    #-}
 
 -----------------------------------------------------------------------------
 -- |
diff --git a/src/full/Agda/Utils/PartialOrd.hs b/src/full/Agda/Utils/PartialOrd.hs
--- a/src/full/Agda/Utils/PartialOrd.hs
+++ b/src/full/Agda/Utils/PartialOrd.hs
@@ -1,22 +1,14 @@
-{-# LANGUAGE DeriveFunctor #-}
-{-# LANGUAGE FlexibleInstances #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving #-}
-{-# LANGUAGE TemplateHaskell #-}
 
 module Agda.Utils.PartialOrd where
 
 import Data.Functor
 import Data.Maybe
-import Data.Monoid
 import Data.List
+import Data.Semigroup
 import Data.Set (Set)
 import qualified Data.Set as Set
 
-import Test.QuickCheck.All
-
 -- import Agda.Utils.List
-import Agda.Utils.TestHelpers
-import Agda.Utils.QuickCheck
 
 -- | The result of comparing two things (of the same type).
 data PartialOrdering
@@ -128,9 +120,12 @@
 seqPO _    _    = POAny
 
 -- | Partial ordering forms a monoid under sequencing.
+instance Semigroup PartialOrdering where
+  (<>) = seqPO
+
 instance Monoid PartialOrdering where
   mempty  = POEQ
-  mappend = seqPO
+  mappend = (<>)
 
 -- | Embed 'Ordering'.
 fromOrdering :: Ordering -> PartialOrdering
@@ -291,161 +286,3 @@
   comparable POGT  POGE  = POLT
   -- anything horizontal is not comparable
   comparable _     _     = POAny
-
--- * Properties
-
-instance Arbitrary PartialOrdering where
-  arbitrary = arbitraryBoundedEnum
-
--- | We test our properties on integer sets ordered by inclusion.
-
-newtype ISet = ISet { iset :: Inclusion (Set Int) }
-  deriving (Eq, Ord, PartialOrd, Show)
-
-instance Arbitrary ISet where
-  arbitrary = ISet . Inclusion . Set.fromList <$> listOf (choose (0, 8))
-
--- | Any two elements are 'related' in the way 'comparable' computes.
-prop_comparable_related :: ISet -> ISet -> Bool
-prop_comparable_related (ISet a) (ISet b) =
-  related a o b where o = comparable a b
-
--- | @flip comparable a b == oppPO (comparable a b)@
-prop_oppPO :: ISet -> ISet -> Bool
-prop_oppPO (ISet a) (ISet b) =
-  comparable a b == oppPO (comparable b a)
-
--- | Auxiliary function: lists to sets = sorted duplicate-free lists.
-sortUniq :: [Ordering] -> [Ordering]
-sortUniq = Set.toAscList . Set.fromList
-
--- | 'leqPO' is inclusion of the associated 'Ordering' sets.
-prop_leqPO_sound :: PartialOrdering -> PartialOrdering -> Bool
-prop_leqPO_sound p q =
-  (p `leqPO` q) == null (toOrderings p \\ toOrderings q)
-
--- | 'orPO' amounts to the union of the associated 'Ordering' sets.
---   Except that 'orPO POLT POGT == POAny' which should also include 'POEQ'.
-prop_orPO_sound :: PartialOrdering -> PartialOrdering -> Bool
-prop_orPO_sound p q =
-  (p `orPO` q) == fromOrderings (toOrderings p ++ toOrderings q)
-
--- | 'orPO' is associative.
-prop_associative_orPO :: PartialOrdering -> PartialOrdering ->
-                         PartialOrdering -> Bool
-prop_associative_orPO = associative orPO
-
--- | 'orPO' is commutative.
-prop_commutative_orPO :: PartialOrdering -> PartialOrdering -> Bool
-prop_commutative_orPO = commutative orPO
-
--- | 'orPO' is idempotent.
-prop_idempotent_orPO :: PartialOrdering -> Bool
-prop_idempotent_orPO = idempotent orPO
-
--- | The dominant element wrt. 'orPO' is 'POAny'.
-prop_zero_orPO :: PartialOrdering -> Bool
-prop_zero_orPO = isZero POAny orPO
-
--- | Soundness of 'seqPO'.
---
---   As QuickCheck test, this property is inefficient, see 'prop_seqPO'.
-property_seqPO :: ISet -> PartialOrdering -> ISet -> PartialOrdering ->
-                  ISet -> Property
-property_seqPO (ISet a) o (ISet b) p (ISet c) =
-  related a o b && related b p c ==> related a (seqPO o p) c
-
--- | A more efficient way of stating soundness of 'seqPO'.
-prop_seqPO :: ISet -> ISet -> ISet -> Bool
-prop_seqPO (ISet a) (ISet b) (ISet c) = related a o c
-  where o = comparable a b `seqPO` comparable b c
-
--- | The unit of 'seqPO' is 'POEQ'.
-prop_identity_seqPO :: PartialOrdering -> Bool
-prop_identity_seqPO = identity POEQ seqPO
-
--- | The zero of 'seqPO' is 'POAny'.
-prop_zero_seqPO :: PartialOrdering -> Bool
-prop_zero_seqPO = isZero POAny seqPO
-
--- | 'seqPO' is associative.
-prop_associative_seqPO :: PartialOrdering -> PartialOrdering ->
-                          PartialOrdering -> Bool
-prop_associative_seqPO = associative seqPO
-
--- | 'seqPO' is also commutative.
-prop_commutative_seqPO :: PartialOrdering -> PartialOrdering -> Bool
-prop_commutative_seqPO = commutative seqPO
-
--- | 'seqPO' is idempotent.
-prop_idempotent_seqPO :: PartialOrdering -> Bool
-prop_idempotent_seqPO = idempotent seqPO
-
--- | 'seqPO' distributes over 'orPO'.
-prop_distributive_seqPO_orPO :: PartialOrdering -> PartialOrdering ->
-                                PartialOrdering -> Bool
-prop_distributive_seqPO_orPO = distributive seqPO orPO
-
--- | The result of 'toOrderings' is a sorted list without duplicates.
-prop_sorted_toOrderings :: PartialOrdering -> Bool
-prop_sorted_toOrderings p =
-  sortUniq os == os where os = toOrderings p
-
--- | From 'Ordering' to 'PartialOrdering' and back is the identity.
-prop_toOrderings_after_fromOrdering :: Ordering -> Bool
-prop_toOrderings_after_fromOrdering o =
-  toOrderings (fromOrdering o) == [o]
-
--- | From 'PartialOrdering' to 'Orderings' and back is the identity.
-prop_fromOrderings_after_toOrderings :: PartialOrdering -> Bool
-prop_fromOrderings_after_toOrderings p =
-  fromOrderings (toOrderings p) == p
-
--- | From 'Orderings' to 'PartialOrdering' and back is the identity.
---   Except for @[LT,GT]@ which is a non-canonical representative of 'POAny'.
-prop_toOrderings_after_fromOrderings :: NonEmptyList Ordering -> Bool
-prop_toOrderings_after_fromOrderings (NonEmpty os) =
-  Set.fromList os  `Set.isSubsetOf`
-  Set.fromList (toOrderings (fromOrderings os))
-
--- | Pairs are related iff both components are related.
-prop_related_pair :: ISet -> ISet -> ISet -> ISet -> PartialOrdering -> Bool
-prop_related_pair (ISet x1) (ISet x2) (ISet y1) (ISet y2) o =
-  related (x1,x2) o (y1,y2) == (related x1 o y1 && related x2 o y2)
-
--- | Comparing 'PartialOrdering's amounts to compare their representation as
---   'Ordering' sets.
-
-prop_comparable_PartialOrdering :: PartialOrdering -> PartialOrdering -> Bool
-
-prop_comparable_PartialOrdering p q =
-  comparable p q == comparable (to p) (to q)
-    where to = Inclusion . toOrderings
-
-------------------------------------------------------------------------
--- * All tests
-------------------------------------------------------------------------
-
--- Template Haskell hack to make the following $quickCheckAll work
--- under ghc-7.8.
-return [] -- KEEP!
-
--- | All tests as collected by 'quickCheckAll'.
---
---   Using 'quickCheckAll' is convenient and superior to the manual
---   enumeration of tests, since the name of the property is
---   added automatically.
-
-tests :: IO Bool
-tests = do
-  putStrLn "Agda.Utils.PartialOrd"
-  $quickCheckAll
-
--- tests' :: IO Bool
--- tests' = runTests "Agda.Utils.PartialOrd"
---   [ quickCheck' prop_comparable_related
---   , quickCheck' prop_oppPO
---   , quickCheck' prop_seqPO
---   , quickCheck' prop_assoc_seqPO
---   , quickCheck' prop_related_pair
---   ]
diff --git a/src/full/Agda/Utils/Permutation.hs b/src/full/Agda/Utils/Permutation.hs
--- a/src/full/Agda/Utils/Permutation.hs
+++ b/src/full/Agda/Utils/Permutation.hs
@@ -1,11 +1,5 @@
 {-# LANGUAGE CPP                   #-}
 {-# LANGUAGE DeriveDataTypeable    #-}
-{-# LANGUAGE DeriveFoldable        #-}
-{-# LANGUAGE DeriveFunctor         #-}
-{-# LANGUAGE DeriveTraversable     #-}
-{-# LANGUAGE FlexibleInstances     #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE TupleSections         #-}
 
 module Agda.Utils.Permutation where
 
@@ -22,8 +16,6 @@
 import Data.Traversable (Traversable)
 import Data.Typeable (Typeable)
 
-import Test.QuickCheck
-
 import Agda.Syntax.Position (KillRange(..))
 import Agda.Utils.Functor
 import Agda.Utils.List ((!!!))
@@ -256,17 +248,3 @@
     Perm (n + m) $ [0..m-1] ++ map (+ m) (List.drop k xs)
     where m = -k
   unDrop m = dropMore (-m) -- allow picking up more than dropped
-
-------------------------------------------------------------------------
--- * Test data generator
-------------------------------------------------------------------------
-
-instance Arbitrary Permutation where
-  arbitrary = do
-    is <- nub . map getNonNegative <$> arbitrary
-    NonNegative n <- arbitrary
-    return $ Perm (if null is then n else maximum is + n + 1) is
-
-------------------------------------------------------------------------
--- * Properties, see "Agda.Utils.Permutation.Tests".
-------------------------------------------------------------------------
diff --git a/src/full/Agda/Utils/Permutation/Tests.hs b/src/full/Agda/Utils/Permutation/Tests.hs
deleted file mode 100644
--- a/src/full/Agda/Utils/Permutation/Tests.hs
+++ /dev/null
@@ -1,117 +0,0 @@
-{-# LANGUAGE CPP                #-}
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveFoldable     #-}
-{-# LANGUAGE DeriveFunctor      #-}
-{-# LANGUAGE DeriveTraversable  #-}
-{-# LANGUAGE TemplateHaskell    #-}
-
-{-# OPTIONS_GHC -fno-warn-missing-signatures #-}
-
-module Agda.Utils.Permutation.Tests (tests) where
-
-import Data.Functor
-import Data.List as List
-import Data.Maybe
-
-import Test.QuickCheck
-
-import Agda.Utils.List (downFrom)
-import Agda.Utils.Permutation
-
-------------------------------------------------------------------------
--- * Properties
-------------------------------------------------------------------------
-
-data ComposablePermutations = ComposablePermutations Permutation Permutation
-  deriving (Eq, Show)
-
-instance Arbitrary ComposablePermutations where
-  arbitrary = do
-    p2@(Perm n is) <- arbitrary
-    let m = length is
-    p1 <- Perm m . filter (< m) . map getNonNegative <$> arbitrary
-    return $ ComposablePermutations p1 p2
-
-type A = Int
-
--- | Extend a list by indefinitely many elements.
-withStream :: ([a] -> b)  -- ^ Stream function.
-           -> [a]         -- ^ Initial segment.
-           -> a           -- ^ Default element, appended ad infinitum.
-           -> b
-withStream k as a = k $ as ++ repeat a
-
--- | Apply a permutation to a list which might be too short.
---   Silently discard picks that go beyond the list's boundaries.
-permutePartial :: Permutation -> [a] -> [a]
-permutePartial perm xs =
-  catMaybes $ permute perm $ map Just xs ++ repeat Nothing
-  -- Note: we have to add @Nothing@s to make @permute@ total.
-
--- | @perm([0..n-1]) == perm@
-prop_permute_id_r :: Permutation -> Bool
-prop_permute_id_r perm@(Perm n picks) =
-  permute perm [0..] == picks
-
--- | @idP(xs) == xs@
-prop_permute_id_l :: Int -> [A] -> A -> Bool
-prop_permute_id_l n = withStream $ \ xs ->
-  permute (idP n) xs == take n xs
-
--- | @takeP n perm = perm . take n@
-prop_takeP :: Int -> Permutation -> [A] -> A -> Bool
-prop_takeP n perm = withStream $ \ xs ->
-  permute (takeP n perm) xs == permutePartial perm (take n xs)
-  -- Note: we have to add @Nothing@s to make @permute@ total.
-
--- | @(droppedP perm)(xs) = xs \\ perm(xs)@
-prop_droppedP :: Permutation -> [A] -> A -> Bool
-prop_droppedP perm@(Perm n _) = withStream $ \ xs -> let xs' = take n xs in
-  sort (permute (droppedP perm) xs') == sort (xs' \\ permute perm xs')
-
--- | @(p1 ∘ p2)(xs) = p1(p2(xs))@
-prop_composeP :: ComposablePermutations -> [A] -> A -> Bool
-prop_composeP (ComposablePermutations p1 p2) = withStream $ \ xs ->
-  permute (composeP p1 p2) xs == permutePartial p1 (permute p2 xs)
-
-prop_flipP :: Permutation -> Bool
-prop_flipP p = permPicks (flipP p) == permute p (downFrom $ permRange p)
-
--- | @p ∘ p⁻¹ ∘ p = p@
-prop_invertP_left :: Permutation -> Int -> [A] -> A -> Bool
-prop_invertP_left p err = withStream $ \ xs -> let ys = permute p xs in
-  permute p (permute (invertP err p) ys) == ys
-
--- NOT QUITE RIGHT YET:
--- -- | @p⁻1 ∘ p ∘ p⁻¹ = p⁻¹@
--- prop_invertP_right :: Permutation -> Int -> [A] -> A -> Bool
--- prop_invertP_right p err = withStream $ \ xs ->
---   let pinv = invertP err p
---       ys   = permute pinv xs
---   in  permute pinv (permute p ys) == ys
-
--- | @reverseP p = reverse . p . reverse@
-prop_reverseP :: Permutation -> [A] -> A -> Bool
-prop_reverseP p@(Perm n _) = withStream $ \ xs0 -> let xs = take n xs0 in
-  permute (reverseP p) xs == reverse (permute p (reverse xs))
-
--- | @permute p . inversePermute p = id@
-prop_inversePermute :: Permutation -> [Maybe A] -> Maybe A -> Bool
-prop_inversePermute p@(Perm _ is) = withStream $ \ xs0 ->
-  let xs = take (length is) xs0
-      ys = inversePermute p xs
-  in  permute p ys == xs
-
-prop_inversePermute_invertP :: Permutation -> Bool
-prop_inversePermute_invertP p =
-  inversePermute p (id :: Int -> Int) == safePermute (invertP (-1) p) [(0::Int)..]
-
--- Template Haskell hack to make the following $quickCheckAll work
--- under ghc-7.8.
-return [] -- KEEP!
-
--- | All tests as collected by 'quickCheckAll'.
-tests :: IO Bool
-tests = do
-  putStrLn "Agda.Utils.Permutation"
-  $quickCheckAll
diff --git a/src/full/Agda/Utils/Pretty.hs b/src/full/Agda/Utils/Pretty.hs
--- a/src/full/Agda/Utils/Pretty.hs
+++ b/src/full/Agda/Utils/Pretty.hs
@@ -1,5 +1,4 @@
 {-# LANGUAGE CPP #-}
-{-# LANGUAGE FlexibleInstances #-}
 
 {-| Pretty printing functions.
 -}
@@ -77,3 +76,8 @@
 align max rows =
   vcat $ map (\(s, d) -> text s $$ nest (maxLen + 1) d) $ rows
   where maxLen = maximum $ 0 : filter (< max) (map (length . fst) rows)
+
+-- | Handles strings with newlines properly (preserving indentation)
+multiLineText :: String -> Doc
+multiLineText = vcat . map text . lines
+
diff --git a/src/full/Agda/Utils/QuickCheck.hs b/src/full/Agda/Utils/QuickCheck.hs
deleted file mode 100644
--- a/src/full/Agda/Utils/QuickCheck.hs
+++ /dev/null
@@ -1,16 +0,0 @@
-module Agda.Utils.QuickCheck
-  ( module Test.QuickCheck
-  , module Agda.Utils.QuickCheck
-  ) where
-
-import Test.QuickCheck hiding ((===))
-
-isSuccess :: Result -> Bool
-isSuccess Success{} = True
-isSuccess _         = False
-
-quickCheck' :: Testable prop => prop -> IO Bool
-quickCheck' p = fmap isSuccess $ quickCheckResult p
-
-quickCheckWith' :: Testable prop => Args -> prop -> IO Bool
-quickCheckWith' args p = fmap isSuccess $ quickCheckWithResult args p
diff --git a/src/full/Agda/Utils/Singleton.hs b/src/full/Agda/Utils/Singleton.hs
--- a/src/full/Agda/Utils/Singleton.hs
+++ b/src/full/Agda/Utils/Singleton.hs
@@ -1,7 +1,4 @@
-{-# LANGUAGE FlexibleInstances #-}
-{-# LANGUAGE FunctionalDependencies #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
-{-# LANGUAGE MultiParamTypeClasses #-}
 -- {-# LANGUAGE TypeFamilies #-}
 
 -- | Constructing singleton collections.
diff --git a/src/full/Agda/Utils/Suffix.hs b/src/full/Agda/Utils/Suffix.hs
--- a/src/full/Agda/Utils/Suffix.hs
+++ b/src/full/Agda/Utils/Suffix.hs
@@ -1,5 +1,4 @@
 {-# LANGUAGE CPP #-}
-{-# LANGUAGE PatternGuards #-}
 
 module Agda.Utils.Suffix where
 
diff --git a/src/full/Agda/Utils/TestHelpers.hs b/src/full/Agda/Utils/TestHelpers.hs
deleted file mode 100644
--- a/src/full/Agda/Utils/TestHelpers.hs
+++ /dev/null
@@ -1,169 +0,0 @@
--- | Some functions and generators suitable for writing QuickCheck
--- properties.
-
-module Agda.Utils.TestHelpers
-  ( -- * Algebraic properties
-    associative
-  , commutative
-  , idempotent
-  , isZero
-  , identity
-  , leftDistributive
-  , rightDistributive
-  , distributive
-    -- * Generators
-  , natural
-  , positive
-  , maybeGen
-  , maybeCoGen
-  , listOfElements
-  , elementsUnlessEmpty
-  , two
-  , three
-    -- * Test driver.
-  , runTests
-  )
-  where
-
-import Control.Monad
-import Data.Functor
-import Test.QuickCheck
-
-------------------------------------------------------------------------
--- Algebraic properties
-
--- | Is the operator associative?
-
-associative :: Eq a
-            => (a -> a -> a)
-            -> a -> a -> a -> Bool
-associative (+) = \x y z ->
-  x + (y + z) == (x + y) + z
-
--- | Is the operator commutative?
-
-commutative :: Eq a
-            => (a -> a -> a)
-            -> a -> a -> Bool
-commutative (+) = \x y ->
-  x + y == y + x
-
--- | Is the operator idempotent?
-
-idempotent :: Eq a
-            => (a -> a -> a)
-            -> a -> Bool
-idempotent (/\) = \ x ->
-  (x /\ x) == x
-
--- | Is the element a zero for the operator?
-
-isZero :: Eq a
-       => a -> (a -> a -> a)
-       -> a -> Bool
-isZero zer (*) = \x ->
-  (zer * x == zer)
-  &&
-  (x * zer == zer)
-
--- | Is the element a unit for the operator?
-
-identity :: Eq a
-         => a -> (a -> a -> a)
-         -> a -> Bool
-identity one (*) = \x ->
-  (one * x == x)
-  &&
-  (x * one == x)
-
--- | Does the first operator distribute (from the left) over the
--- second one?
-
-leftDistributive
-  :: Eq a
-  => (a -> a -> a) -> (a -> a -> a)
-  -> a -> a -> a -> Bool
-leftDistributive (*) (+) = \x y z ->
-  x * (y + z) == (x * y) + (x * z)
-
--- | Does the first operator distribute (from the right) over the
--- second one?
-
-rightDistributive
-  :: Eq a
-  => (a -> a -> a) -> (a -> a -> a)
-  -> a -> a -> a -> Bool
-rightDistributive (*) (+) = \x y z ->
-  (x + y) * z == (x * z) + (y * z)
-
--- | Does the first operator distribute over the second one?
-
-distributive
-  :: Eq a
-  => (a -> a -> a) -> (a -> a -> a)
-  -> a -> a -> a -> Bool
-distributive (*) (+) = \ x y z ->
-  leftDistributive (*) (+) x y z &&
-  rightDistributive (*) (+) x y z
-
-------------------------------------------------------------------------
--- Generators
-
--- | Generates natural numbers.
-
-natural :: (Integral i) => Gen i
-natural = fromInteger . abs <$> arbitrary
-
--- | Generates positive numbers.
-
-positive :: (Integral i) => Gen i
-positive = succ <$> natural
-
--- | Generates a list of elements picked from a given list.
-listOfElements :: [a] -> Gen [a]
-listOfElements [] = return []
-listOfElements xs = listOf $ elements xs
-
--- | If the given list is non-empty, then an element from the list is
--- generated, and otherwise an arbitrary element is generated.
-
-elementsUnlessEmpty :: Arbitrary a => [a] -> Gen a
-elementsUnlessEmpty [] = arbitrary
-elementsUnlessEmpty xs = elements xs
-
--- | Generates values of 'Maybe' type, using the given generator to
--- generate the contents of the 'Just' constructor.
-
-maybeGen :: Gen a -> Gen (Maybe a)
-maybeGen gen = frequency [ (1, return Nothing)
-                         , (9, Just <$> gen)
-                         ]
-
--- | 'Coarbitrary' \"generator\" for 'Maybe'.
-
-maybeCoGen :: (a -> Gen b -> Gen b) -> (Maybe a -> Gen b -> Gen b)
-maybeCoGen f Nothing  = variant 0
-maybeCoGen f (Just x) = variant 1 . f x
-
--- | Generates two elements.
-
-two :: Gen a -> Gen (a, a)
-two gen = liftM2 (,) gen gen
-
--- | Generates three elements.
-
-three :: Gen a -> Gen (a, a, a)
-three gen = liftM3 (,,) gen gen gen
-
-------------------------------------------------------------------------
--- Test driver
-
--- | Runs the tests, and returns 'True' if all tests were successful.
-
-runTests :: String    -- ^ A label for the tests. Used for
-                      --   informational purposes.
-         -> [IO Bool]
-         -> IO Bool
-runTests name tests = do
-  putStrLn name
-  and <$> sequence tests
diff --git a/src/full/Agda/Utils/Trie.hs b/src/full/Agda/Utils/Trie.hs
--- a/src/full/Agda/Utils/Trie.hs
+++ b/src/full/Agda/Utils/Trie.hs
@@ -1,9 +1,6 @@
 {-# LANGUAGE CPP #-}
 {-# LANGUAGE BangPatterns #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
-{-# LANGUAGE PatternGuards #-}
-{-# LANGUAGE TemplateHaskell #-}
-{-# LANGUAGE TupleSections #-}
 
 -- | Strict tries (based on "Data.Map.Strict" and "Agda.Utils.Maybe.Strict").
 
@@ -12,8 +9,7 @@
   , empty, singleton, everyPrefix, insert, insertWith, union, unionWith
   , adjust, delete
   , toList, toAscList
-  , lookup, member, lookupPath
-  , tests
+  , lookup, member, lookupPath, lookupTrie
   ) where
 
 import Prelude hiding (null, lookup)
@@ -21,13 +17,11 @@
 
 import Data.Function
 import Data.Functor
-import Data.List (nubBy, sortBy, isPrefixOf, inits)
+import Data.Foldable (Foldable)
 import qualified Data.Maybe as Lazy
 import Data.Map.Strict (Map)
 import qualified Data.Map.Strict as Map
 
-import Test.QuickCheck
-
 import qualified Agda.Utils.Maybe.Strict as Strict
 import Agda.Utils.Null
 
@@ -35,7 +29,7 @@
 --
 --   With the strict 'Maybe' type, 'Trie' is also strict in 'v'.
 data Trie k v = Trie !(Strict.Maybe v) !(Map k (Trie k v))
-  deriving (Show, Eq)
+  deriving (Show, Eq, Functor, Foldable)
 
 -- | Empty trie.
 instance Null (Trie k v) where
@@ -127,64 +121,8 @@
     x : xs -> Strict.maybeToList v ++
               maybe [] (lookupPath xs) (Map.lookup x cs)
 
--- Tests ------------------------------------------------------------------
-
-newtype Key = Key Int
-  deriving (Eq, Ord)
-
-newtype Val = Val Int
-  deriving (Eq)
-
-newtype Model = Model [([Key], Val)]
-  deriving (Eq, Show)
-
-instance Show Key where
-  show (Key x) = show x
-
-instance Show Val where
-  show (Val x) = show x
-
-instance Arbitrary Key where
-  arbitrary = elements $ map Key [1..2]
-  shrink (Key x) = Key <$> shrink x
-
-instance Arbitrary Val where
-  arbitrary = elements $ map Val [1..3]
-  shrink (Val x) = Val <$> shrink x
-
-instance Arbitrary Model where
-  arbitrary = Model <$> arbitrary
-  shrink (Model xs) = Model <$> shrink xs
-
-modelToTrie :: Model -> Trie Key Val
-modelToTrie (Model xs) = foldr (uncurry insert) empty xs
-
-prop_lookup :: [Key] -> Model -> Bool
-prop_lookup ks m@(Model ksvs) =
-  lookup ks (modelToTrie m) == Prelude.lookup ks ksvs
-
-modelPath :: [Key] -> Model -> [Val]
-modelPath ks (Model xs) =
-  map snd
-  $ sortBy (compare `on` length . fst)
-  $ nubBy ((==) `on` fst)
-  $ filter (flip isPrefixOf ks . fst) xs
-
-prop_path :: [Key] -> Model -> Property
-prop_path ks m =
-  collect (length $ modelPath ks m) $
-  lookupPath ks (modelToTrie m) == modelPath ks m
-
-prop_everyPrefix :: [Integer] -> Integer -> Bool
-prop_everyPrefix ks v =
-  everyPrefix ks v ==
-  foldr union empty [ singleton ks' v | ks' <- inits ks ]
-
-return []
-
--- | All tests.
+-- | Get the subtrie rooted at the given key.
+lookupTrie :: Ord k => [k] -> Trie k v -> Trie k v
+lookupTrie []       t           = t
+lookupTrie (k : ks) (Trie _ cs) = maybe empty (lookupTrie ks) (Map.lookup k cs)
 
-tests :: IO Bool
-tests = do
-  putStrLn "Agda.Utils.Trie"
-  $quickCheckAll
diff --git a/src/full/Agda/Utils/Tuple.hs b/src/full/Agda/Utils/Tuple.hs
--- a/src/full/Agda/Utils/Tuple.hs
+++ b/src/full/Agda/Utils/Tuple.hs
@@ -1,8 +1,4 @@
-{-# LANGUAGE DeriveFunctor #-}
-{-# LANGUAGE DeriveFoldable #-}
-{-# LANGUAGE DeriveTraversable #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
-{-# LANGUAGE TupleSections #-}
 
 module Agda.Utils.Tuple where
 
diff --git a/src/full/Agda/Utils/Warshall.hs b/src/full/Agda/Utils/Warshall.hs
--- a/src/full/Agda/Utils/Warshall.hs
+++ b/src/full/Agda/Utils/Warshall.hs
@@ -21,10 +21,7 @@
 import Data.Map (Map)
 import qualified Data.Map as Map
 
-import Test.QuickCheck
-
 import Agda.Syntax.Common (Nat)
-import Agda.Utils.TestHelpers
 import Agda.Utils.SemiRing
 
 type Matrix a = Array (Int,Int) a
@@ -420,115 +417,3 @@
                         _ -> -- trace ("unusable rigid: " ++ show r ++ " for flex " ++ show f)
                               Nothing  -- NOT: loop3 (col+1) subst
                      _ -> loop3 (col+1) subst
-
-
-
--- Testing ----------------------------------------------------------------
-
-genGraph :: Ord node => Float -> Gen edge -> [node] -> Gen (AdjList node edge)
-genGraph density edge nodes = do
-  Map.fromList . concat <$> mapM neighbours nodes
-  where
-    k = round (100 * density)
-    neighbours n = do
-      ns <- concat <$> mapM neighbour nodes
-      case ns of
-        []  -> elements [[(n, [])], []]
-        _   -> return [(n, ns)]
-    neighbour n = frequency
-      [ (k, do e <- edge
-               ns <- neighbour n
-               return ((n, e):ns))
-      , (100 - k, return [])
-      ]
-
-type Distance = Weight
-
-genGraph_ :: Nat -> Gen (AdjList Nat Distance)
-genGraph_ n =
-  genGraph 0.2 (Finite <$> natural) [0..n - 1]
-
-lookupEdge :: Ord n => n -> n -> AdjList n e -> Maybe e
-lookupEdge i j g = lookup j =<< Map.lookup i g
-
-edges :: AdjList n e -> [(n,n,e)]
-edges g = do
-  (i, ns) <- Map.toList g
-  (j, e)  <- ns
-  return (i, j, e)
-
--- | Check that no edges get longer when completing a graph.
-prop_smaller :: Nat -> Property
-prop_smaller n' =
-  forAll (genGraph_ n) $ \g ->
-  let g' = warshallG g in
-  and [ lookupEdge i j g' =< e
-      | (i, j, e) <- edges g
-      ]
-  where
-    n = abs (div n' 2)
-    Nothing =< _ = False
-    Just x  =< y = x <= y
-
-newEdge :: Nat -> Nat -> Distance -> AdjList Nat Distance ->
-           AdjList Nat Distance
-newEdge i j e = Map.insertWith (++) i [(j, e)]
-
-genPath :: Nat -> Nat -> Nat -> AdjList Nat Distance ->
-           Gen (AdjList Nat Distance)
-genPath n i j g = do
-  es <- listOf $ (,) <$> node <*> edge
-  v  <- edge
-  return $ addPath i (es ++ [(j, v)]) g
-  where
-    edge :: Gen Distance
-    edge = Finite <$> natural
-
-    node :: Gen Nat
-    node = choose (0, n - 1)
-
-    addPath :: Nat -> [(Nat, Distance)] -> AdjList Nat Distance ->
-               AdjList Nat Distance
-    addPath _ []          g = g
-    addPath i ((j, v):es) g = newEdge i j v $ addPath j es g
-
--- | Check that all transitive edges are added.
-prop_path :: Nat -> Property
-prop_path n' =
-  forAll (genGraph_ n) $ \g ->
-  forAll (two $ choose (0, n - 1)) $ \(i, j) ->
-  forAll (genPath n i j g) $ \g' ->
-  isJust (lookupEdge i j $ warshallG g')
-  where
-    n = abs (div n' 2) + 1
-
-mapNodes :: Ord node' => (node -> node') -> AdjList node edge -> AdjList node' edge
-mapNodes f = Map.map f' . Map.mapKeys f
-  where
-    f' es = [ (f n, e) | (n,e) <- es ]
-
--- | Check that no edges are added between components.
-prop_disjoint :: Nat -> Property
-prop_disjoint n' =
-  forAll (two $ genGraph_ n) $ \(g1, g2) ->
-  let g  = Map.union (mapNodes Left g1) (mapNodes Right g2)
-      g' = warshallG g
-  in all disjoint (Map.assocs g')
-  where
-    n = abs (div n' 3)
-    disjoint (Left i, es)  = all (isLeft . fst) es
-    disjoint (Right i, es) = all (isRight . fst) es
-    isLeft = either (const True) (const False)
-    isRight = not . isLeft
-
-prop_stable :: Nat -> Property
-prop_stable n' =
-  forAll (genGraph_ n) $ \g ->
-  let g' = warshallG g in
-  g' =~= warshallG g'
-  where
-    n = abs (div n' 2)
-    g =~= g' = sort (edges g) == sort (edges g')
-
-tests :: IO Bool
-tests = runTests "Agda.Utils.Warshall" []
diff --git a/src/full/Agda/VersionCommit.hs b/src/full/Agda/VersionCommit.hs
new file mode 100644
--- /dev/null
+++ b/src/full/Agda/VersionCommit.hs
@@ -0,0 +1,25 @@
+{-# LANGUAGE TemplateHaskell #-}
+
+module Agda.VersionCommit where
+
+import Development.GitRev
+
+import Agda.Version
+
+versionWithCommitInfo :: String
+versionWithCommitInfo = version ++ case commitInfo of
+                                     Nothing   -> ""
+                                     Just info -> "-" ++ info
+
+-- | Information about current git commit, generated at compile time
+commitInfo :: Maybe String
+commitInfo = case $(gitHash) of
+  "UNKNOWN" -> Nothing
+  hash      -> Just $ abbrev hash ++ dirty
+  where
+    -- | Check if there are uncommitted changes
+    dirty | $(gitDirty) = "-dirty"
+          | otherwise   = ""
+
+    -- | Abbreviate a commit hash while keeping it unambiguous
+    abbrev = take 7
diff --git a/stack-7.8.4.yaml b/stack-7.8.4.yaml
new file mode 100644
--- /dev/null
+++ b/stack-7.8.4.yaml
@@ -0,0 +1,27 @@
+flags:
+  semigroups:
+    bytestring-builder: false
+packages:
+- '.'
+extra-deps:
+- binary-0.8.4.1
+- boxes-0.1.4
+- data-hash-0.2.0.1
+- EdisonAPI-1.3.1
+- EdisonCore-1.3.1.1
+- equivalence-0.3.1
+- fail-4.9.0.0
+- geniplate-mirror-0.7.4
+- gitrev-1.2.0
+- haskeline-0.7.2.3
+- ieee754-0.7.8
+- monadplus-1.4.2
+- murmur-hash-0.1.0.9
+- QuickCheck-2.9.2
+- regex-tdfa-1.2.2
+- regex-tdfa-text-1.0.0.3
+- semigroups-0.18.2
+- STMonadTrans-0.3.3
+- tasty-silver-3.1.9
+- void-0.7.1
+resolver: lts-2.22
diff --git a/stack-8.0.1.yaml b/stack-8.0.1.yaml
new file mode 100644
--- /dev/null
+++ b/stack-8.0.1.yaml
@@ -0,0 +1,5 @@
+resolver: lts-7.13
+
+# Local packages, usually specified by relative directory name
+packages:
+- '.'
